Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0.042 ETH
Eth Value
$116.61 (@ $2,776.50/ETH)More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 195 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Approval For... | 16792024 | 533 days ago | IN | 0 ETH | 0.0028397 | ||||
Set Sale Active | 15883621 | 660 days ago | IN | 0 ETH | 0.00082368 | ||||
Free Mint | 15883597 | 660 days ago | IN | 0 ETH | 0.00681458 | ||||
Free Mint | 15883567 | 660 days ago | IN | 0 ETH | 0.00862686 | ||||
Free Mint | 15883383 | 660 days ago | IN | 0 ETH | 0.0041721 | ||||
Free Mint | 15883320 | 660 days ago | IN | 0 ETH | 0.004331 | ||||
Free Mint | 15881675 | 660 days ago | IN | 0 ETH | 0.00361914 | ||||
Safe Transfer Fr... | 15634370 | 695 days ago | IN | 0 ETH | 0.0006039 | ||||
Safe Transfer Fr... | 15634365 | 695 days ago | IN | 0 ETH | 0.00088553 | ||||
Free Mint | 15620697 | 696 days ago | IN | 0 ETH | 0.00053497 | ||||
Set Free Mints W... | 15583244 | 702 days ago | IN | 0 ETH | 0.00030727 | ||||
Set Free Mints W... | 15576565 | 703 days ago | IN | 0 ETH | 0.00030714 | ||||
Set Free Mints W... | 15547369 | 707 days ago | IN | 0 ETH | 0.00056027 | ||||
Free Mint | 15546766 | 707 days ago | IN | 0 ETH | 0.00081283 | ||||
Set Free Mints W... | 15546750 | 707 days ago | IN | 0 ETH | 0.00066921 | ||||
Free Mint | 15544724 | 707 days ago | IN | 0 ETH | 0.00044845 | ||||
Buy | 15541452 | 708 days ago | IN | 0.042 ETH | 0.00071034 | ||||
Free Mint | 15525203 | 710 days ago | IN | 0 ETH | 0.00209862 | ||||
Free Mint | 15503720 | 714 days ago | IN | 0 ETH | 0.00245319 | ||||
Set Free Mints W... | 15502906 | 714 days ago | IN | 0 ETH | 0.001266 | ||||
Free Mint | 15502460 | 714 days ago | IN | 0 ETH | 0.00226752 | ||||
Set Free Mints W... | 15502100 | 714 days ago | IN | 0 ETH | 0.00078267 | ||||
Withdraw | 15501792 | 714 days ago | IN | 0 ETH | 0.00176614 | ||||
Free Mint | 15489590 | 716 days ago | IN | 0 ETH | 0.00240052 | ||||
Free Mint | 15489432 | 716 days ago | IN | 0 ETH | 0.00302746 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
15501792 | 714 days ago | 0.0063 ETH | ||||
15501792 | 714 days ago | 0.0105 ETH | ||||
15501792 | 714 days ago | 0.0105 ETH | ||||
15501792 | 714 days ago | 0.0105 ETH | ||||
15501792 | 714 days ago | 0.0105 ETH | ||||
15501792 | 714 days ago | 0.0105 ETH | ||||
15501792 | 714 days ago | 0.0105 ETH | ||||
15501792 | 714 days ago | 0.0147 ETH | ||||
15501792 | 714 days ago | 0.126 ETH | ||||
15452130 | 722 days ago | 0.00378 ETH | ||||
15452130 | 722 days ago | 0.0063 ETH | ||||
15452130 | 722 days ago | 0.0063 ETH | ||||
15452130 | 722 days ago | 0.0063 ETH | ||||
15452130 | 722 days ago | 0.0063 ETH | ||||
15452130 | 722 days ago | 0.0063 ETH | ||||
15452130 | 722 days ago | 0.0063 ETH | ||||
15452130 | 722 days ago | 0.00882 ETH | ||||
15452130 | 722 days ago | 0.0756 ETH | ||||
15358227 | 737 days ago | 0.00252 ETH | ||||
15358227 | 737 days ago | 0.0042 ETH | ||||
15358227 | 737 days ago | 0.0042 ETH | ||||
15358227 | 737 days ago | 0.0042 ETH | ||||
15358227 | 737 days ago | 0.0042 ETH | ||||
15358227 | 737 days ago | 0.0042 ETH | ||||
15358227 | 737 days ago | 0.0042 ETH |
Loading...
Loading
Contract Name:
WeedyStrains
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-07-19 */ // File: contracts/IERC2981Royalties.sol pragma solidity ^0.8.0; /// @title IERC2981Royalties /// @dev Interface for the ERC2981 - Token Royalty standard interface IERC2981Royalties { /// @notice Called with the sale price to determine how much royalty // is owed and to whom. /// @param _tokenId - the NFT asset queried for royalty information /// @param _value - the sale price of the NFT asset specified by _tokenId /// @return _receiver - address of who should be sent the royalty payment /// @return _royaltyAmount - the royalty payment amount for value sale price function royaltyInfo(uint256 _tokenId, uint256 _value) external view returns (address _receiver, uint256 _royaltyAmount); } // File: @openzeppelin/contracts/utils/Strings.sol // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @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); } } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @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; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @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); } } } } // File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721Receiver.sol) pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } // File: @openzeppelin/contracts/utils/introspection/IERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @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); } // File: @openzeppelin/contracts/utils/introspection/ERC165.sol // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @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; } } // File: contracts/ERC2981Base.sol pragma solidity ^0.8.0; /// @dev This is a contract used to add ERC2981 support to ERC721 and 1155 abstract contract ERC2981Base is ERC165, IERC2981Royalties { struct RoyaltyInfo { address recipient; uint24 amount; } /// @inheritdoc ERC165 function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC2981Royalties).interfaceId || super.supportsInterface(interfaceId); } } // File: contracts/ERC2981ContractWideRoyalties.sol pragma solidity ^0.8.0; /// @dev This is a contract used to add ERC2981 support to ERC721 and 1155 /// @dev This implementation has the same royalties for each and every tokens abstract contract ERC2981ContractWideRoyalties is ERC2981Base { RoyaltyInfo private _royalties; /// @dev Sets token royalties /// @param recipient recipient of the royalties /// @param value percentage (using 2 decimals - 10000 = 100, 0 = 0) function _setRoyalties(address recipient, uint256 value) internal { require(value <= 10000, 'ERC2981Royalties: Too high'); _royalties = RoyaltyInfo(recipient, uint24(value)); } /// @inheritdoc IERC2981Royalties function royaltyInfo(uint256, uint256 value) external view override returns (address receiver, uint256 royaltyAmount) { RoyaltyInfo memory royalties = _royalties; receiver = royalties.recipient; royaltyAmount = (value * royalties.amount) / 10000; } } // File: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol) pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } // File: @openzeppelin/contracts/token/ERC721/ERC721.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/ERC721.sol) pragma solidity ^0.8.0; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { _setApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require(_exists(tokenId), "ERC721: operator query for nonexistent token"); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); _afterTokenTransfer(address(0), to, tokenId); } /** * @dev Destroys `tokenId`. * The approval is cleared when the token is burned. * * Requirements: * * - `tokenId` must exist. * * Emits a {Transfer} event. */ function _burn(uint256 tokenId) internal virtual { address owner = ERC721.ownerOf(tokenId); _beforeTokenTransfer(owner, address(0), tokenId); // Clear approvals _approve(address(0), tokenId); _balances[owner] -= 1; delete _owners[tokenId]; emit Transfer(owner, address(0), tokenId); _afterTokenTransfer(owner, address(0), tokenId); } /** * @dev Transfers `tokenId` from `from` to `to`. * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. * * Requirements: * * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * * Emits a {Transfer} event. */ function _transfer( address from, address to, uint256 tokenId ) internal virtual { require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer from incorrect owner"); require(to != address(0), "ERC721: transfer to the zero address"); _beforeTokenTransfer(from, to, tokenId); // Clear approvals from the previous owner _approve(address(0), tokenId); _balances[from] -= 1; _balances[to] += 1; _owners[tokenId] = to; emit Transfer(from, to, tokenId); _afterTokenTransfer(from, to, tokenId); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev Approve `operator` to operate on all of `owner` tokens * * Emits a {ApprovalForAll} event. */ function _setApprovalForAll( address owner, address operator, bool approved ) internal virtual { require(owner != operator, "ERC721: approve to caller"); _operatorApprovals[owner][operator] = approved; emit ApprovalForAll(owner, operator, approved); } /** * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address. * The call is not executed if the target address is not a contract. * * @param from address representing the previous owner of the given token ID * @param to target address that will receive the tokens * @param tokenId uint256 ID of the token to be transferred * @param _data bytes optional data to send along with the call * @return bool whether the call correctly returned the expected magic value */ function _checkOnERC721Received( address from, address to, uint256 tokenId, bytes memory _data ) private returns (bool) { if (to.isContract()) { try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) { return retval == IERC721Receiver.onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert("ERC721: transfer to non ERC721Receiver implementer"); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } // File: contracts/WeedyStrains.sol pragma solidity >=0.8.4; //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%#::::=%%%:=:=-%%%======-:==::-%%*=+-=++++++++*%%*+**=%%%%%%%%%%%%=++*+++++++++%%*************%%%++******++*%%%%%%%% //%%%%%#=**=--%%:=++--%%:::-+=:-=-=:-=%*=--++++++++-+*%*+=*+%%%%%%%%%%%%**+#*+*****+++%++++++++++++=*%%+=********=*%%%%%%% //%%%%%#++=---%%:=++--%%==-====-=-=:--=*=++========--+%*+++++%%%%%%%%%%%**+******+=+++%+++++++++*++++*%+==++++++++=*%%%%%% //%%%%%#=-=---%%:=++--%%:++++==---=:--=*=+-+*******+-*%*+*+++%%%%%%%%%%%*++******+=+++%+*#########+++*%+=++*****#**+#%%%%% //%%%%%#=#+=--%%:=++--%%#---------=:--=*=**----%=*+*-*%*+++++%%%%%%%%%%%***##+++++=+++%+*##+######+++*%+=++++++***#+##%%%% //%%%%%#+-*=====:==+--%%=-::::::--=:--=*=+=--=+%+=+*-*%*++*++%%%%%%%%%%%*+*#+#**++=+++%+==+++++#*++++*%+==+*++***++++#%%%% //%%%%%#=*:=-::::::+--%%++==::::--=:--=*=++--+%%+=+*-*%*++*++%%%%%%%%%%%*+*#+*%%*+=+++%+==*++*##*++++*%+=++*+*%#*++++#%%%% //%%%%%#=#++-=--:-+:--%%+++=*--:===---=*=++--+%%+=+*-*%*++*++%%%%%%%%%%%*+*#+*%%*+=+++%+=++++#%%*++++*%+=++*+*%#*++++#%%%% //%%%%%#+=======:=++--%%++---==-====--=*=++--+%%+=+*-*%*++*++%%%%%%%%%%%*+*#++++++=+++%+==*++#%%*++++*%+=++*+*%#*++++#%%%% //%%%%%#++++++++:=++--%%+++=-++++++++-=*=++--*%%+=+*-*%*=+*++%%%%%%%%%%%*+*+****++=+++%+==*++#%%*++++*%+=++*+*%#+++++#%%%% //%%%%%%=-------:=++--%%+++=*--------+=*=++--*%%+=+*-*%*=+*++%%%%%%%%%%%*+*#=++++==+++%+==*++#%%*++++*%+=++*+*%#+++++#%%%% //%%%%%%%-------:=++--%%++==-=########%*--:--*%%+=+*-*%*=+*++%%%%%%%%%%%++*******==+++%+==*++#%%*++++*%+=++*+*%#===++#%%%% //%%%%%%%%%%%%%%:=++--%%+::=--:::::=-#%*::::::::==+*-*%*=+*+======+=#%%%*#+**+++++=+++%+==*++#%%*++++*%+========+==++#%%%% //%%%%%%%%%%%%%%:=++--%%+========-=:--#*=========++*-*%*=+*+==****+*+#%%*=*=+***+***++%+==*++#%%*++++*%+=++******=+++#%%%% //%%%%%%%%%%%%%%:=+=--%%-********-=:--=*=+++++++++++-*%*=+*==+*****+++%%*+*#+*%%*+=+++%+==*++#%%*++++*%+=+*******==++#%%%% //%%%%%%%%%%%%%%=++=--%%=+*********:--=*=++++++++++--*%*=**********+++%%*++++*%%*+**++%+==+++#%%*+*++*%+=*******+=+++#%%%% //%%%%%%%%%%%%%%----*=%%*=-=-------=++=%+------------*%%**++++++++++*+%%*+++#*%%#*++**%#*+++*#%%+++++*%#*++++++++#*+#%%%%% //%%%%%%%%%%%%%%%----*%%%+----------=++%%=-----------*%%%*+++++++++++*%%#*+++#%%%#+++#%%#*+++#%%%++++*%%#*++++++++##%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% interface MultisigContract { function getOwners() external view returns (address[] memory); } contract WeedyStrains is ERC721, Ownable, ERC2981ContractWideRoyalties { function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721, ERC2981Base) returns (bool) { return super.supportsInterface(interfaceId); } /// @notice Allows to set the royalties on the contract /// @dev This function should be protected with a onlyAdmins, onlyMultisig (or equivalent) modifier /// @param recipient the royalties recipient /// @param value royalties value function setRoyalties(address recipient, uint256 value) public onlyAdmins { _setRoyalties(recipient, value); } MultisigContract multisigContract; bool public saleActive = false; bool public presaleActive = true; bool public promoSaleActive = true; string internal baseTokenURI; uint256 public price = 0.042 ether; ////////// //LIMITS// ////////// uint256 public totalSupply = 3000; uint256 public maxNFTPerAddress = 10; uint256 public maxTx = 8; uint256 public nonce = 1; uint256 public discount = 50; event Mint(address owner, uint256 qty); event FreeMint(address to, uint256 qty); event DiscountMint(address to, uint256 qty); event Withdraw(uint256 amount); event Received(address, uint256); address public admin; address public MultisigWallet; address[] public MultisigOwners; uint256[] public OwnersPercentage = [60, 7, 5, 5, 5, 5, 5, 5, 3]; ////////////// ///MODIFIERS// ////////////// modifier onlyMultisig() { require(msg.sender == MultisigWallet, "Use the MultisigWallet"); _; } modifier onlyAdmins() { require( msg.sender == owner() || msg.sender == admin, "Use the Admins wallets" ); _; } //////////// //MAPPINGS// //////////// mapping(address => uint256) public presaleWallets; mapping(address => uint256) public FreeMintsWallets; mapping(address => uint256) public DiscoutWallets; constructor(address _multisigWallet, address _admin) ERC721("WeedyStrains", "420LWS") { MultisigWallet = _multisigWallet; admin = _admin; multisigContract = MultisigContract(_multisigWallet); } function setPrice(uint256 newPrice) external onlyAdmins { price = newPrice; } function setTotalSupply(uint256 _totalSupply) external onlyAdmins { totalSupply = _totalSupply; } function setBaseTokenURI(string calldata _uri) external onlyAdmins { baseTokenURI = _uri; } function setPresaleActive(bool val) public onlyAdmins { presaleActive = val; } function setSaleActive(bool val) public onlyAdmins { saleActive = val; } function setPromoSaleActive(bool val) public onlyAdmins { promoSaleActive = val; } //////////////// //WALLET LISTS// //////////////// function setPresaleWallets(address[] memory _a, uint256[] memory _amount) public onlyAdmins { for (uint256 i = 0; i < _a.length; i++) { presaleWallets[_a[i]] = _amount[i]; } } function setFreeMintsWallets(address[] memory _a, uint256[] memory _amount) public onlyAdmins { for (uint256 i = 0; i < _a.length; i++) { FreeMintsWallets[_a[i]] = _amount[i]; } } function setDiscoutWallets(address[] memory _a, uint256[] memory _amount) public onlyAdmins { for (uint256 i = 0; i < _a.length; i++) { DiscoutWallets[_a[i]] = _amount[i]; } } function setMaxTx(uint256 newMax) external onlyAdmins { maxTx = newMax; } function setDiscount(uint256 _discount) external onlyAdmins { discount = _discount; } function getAssetsByOwner(address _owner) public view returns (uint256[] memory) { uint256[] memory result = new uint256[](balanceOf(_owner)); uint256 counter = 0; for (uint256 i = 0; i < nonce; i++) { if (ownerOf(i) == _owner) { result[counter] = i; counter++; } } return result; } function _baseURI() internal view override returns (string memory) { return baseTokenURI; } receive() external payable { emit Received(msg.sender, msg.value); } ///////////////////// //MINTING FUNCTIONS// ///////////////////// function freeMint(uint256 qty) external payable { uint256 mintAllowance = FreeMintsWallets[msg.sender]; require(qty <= mintAllowance, "You are not allowed to mint for free"); require( qty + nonce <= totalSupply + 1, "SUPPLY: Value exceeds totalSupply" ); FreeMintsWallets[msg.sender] = FreeMintsWallets[msg.sender] - qty; for (uint256 i = 0; i < qty; i++) { uint256 tokenId = nonce; _safeMint(msg.sender, tokenId); nonce++; } emit FreeMint(msg.sender, qty); } function discountMint(uint256 qty) external payable { uint256 mintAllowance = DiscoutWallets[msg.sender]; require(promoSaleActive, "DiscountMint is not active"); require(qty <= mintAllowance, "You are not allowed to mint discounted"); require( qty + nonce <= totalSupply + 1, "SUPPLY: Value exceeds totalSupply" ); require( msg.value >= (price * qty * discount) / 100, "PAYMENT: invalid value" ); DiscoutWallets[msg.sender] = DiscoutWallets[msg.sender] - qty; for (uint256 i = 0; i < qty; i++) { uint256 tokenId = nonce; _safeMint(msg.sender, tokenId); nonce++; } emit DiscountMint(msg.sender, qty); } function buyPresale() external payable { uint256 mintAllowance = presaleWallets[msg.sender]; require(presaleActive, "Presale is not active"); require(mintAllowance > 1, "You are not on Presale"); require( nonce + 2 <= totalSupply + 1, "SUPPLY: Value exceeds totalSupply" ); require( balanceOf(msg.sender) + 2 <= maxNFTPerAddress, "SUPPLY: qty exeeding wallet limit" ); require(msg.value >= price, "PAYMENT: invalid value"); presaleWallets[msg.sender] = presaleWallets[msg.sender] - 2; _safeMint(msg.sender, nonce); nonce++; _safeMint(msg.sender, nonce); nonce++; emit Mint(msg.sender, 2); } function buy(uint256 qty) external payable { require(saleActive, "sale is not active"); require(qty <= maxTx && qty > 0, "qty of mints not allowed"); require( qty + nonce <= totalSupply + 1, "SUPPLY: Value exceeds dropLimit" ); require(msg.value >= price * qty, "PAYMENT: invalid value"); for (uint256 i = 0; i < qty; i++) { uint256 tokenId = nonce; _safeMint(msg.sender, tokenId); nonce++; } emit Mint(msg.sender, qty); } //////////// //WITHDRAW// //////////// function withdraw() public onlyAdmins { MultisigOwners = multisigContract.getOwners(); uint256 amount = address(this).balance; for (uint256 i = 0; i < MultisigOwners.length; i++) { payable(MultisigOwners[i]).transfer( (amount * OwnersPercentage[i]) / 100 ); } } function ChangeOwnersPercentage(uint256[] calldata _newPercentages) public onlyMultisig { OwnersPercentage = _newPercentages; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_multisigWallet","type":"address"},{"internalType":"address","name":"_admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"qty","type":"uint256"}],"name":"DiscountMint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"qty","type":"uint256"}],"name":"FreeMint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"qty","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"Received","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"uint256[]","name":"_newPercentages","type":"uint256[]"}],"name":"ChangeOwnersPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"DiscoutWallets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"FreeMintsWallets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"MultisigOwners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MultisigWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"OwnersPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"qty","type":"uint256"}],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyPresale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"discount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"qty","type":"uint256"}],"name":"discountMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"qty","type":"uint256"}],"name":"freeMint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"getAssetsByOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxNFTPerAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"presaleWallets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"promoSaleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"royaltyAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uri","type":"string"}],"name":"setBaseTokenURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_discount","type":"uint256"}],"name":"setDiscount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_a","type":"address[]"},{"internalType":"uint256[]","name":"_amount","type":"uint256[]"}],"name":"setDiscoutWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_a","type":"address[]"},{"internalType":"uint256[]","name":"_amount","type":"uint256[]"}],"name":"setFreeMintsWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"val","type":"bool"}],"name":"setPresaleActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_a","type":"address[]"},{"internalType":"uint256[]","name":"_amount","type":"uint256[]"}],"name":"setPresaleWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"val","type":"bool"}],"name":"setPromoSaleActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setRoyalties","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"val","type":"bool"}],"name":"setSaleActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_totalSupply","type":"uint256"}],"name":"setTotalSupply","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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6008805462ffffff60a01b191661010160a81b178155669536c708910000600a908155610bb8600b55600c55600d556001600e556032600f556101a0604052603c6080908152600760a052600560c081905260e08190526101008190526101208190526101408190526101605260036101805262000082906013906009620001d2565b503480156200009057600080fd5b506040516200361238038062003612833981016040819052620000b391620002d8565b604080518082018252600c81526b576565647953747261696e7360a01b6020808301918252835180850190945260068452653432304c575360d01b908401528151919291620001059160009162000227565b5080516200011b90600190602084019062000227565b50505062000138620001326200017c60201b60201c565b62000180565b601180546001600160a01b039384166001600160a01b031991821681179092556010805493909416928116929092179092556008805490911690911790556200034d565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b82805482825590600052602060002090810192821562000215579160200282015b8281111562000215578251829060ff16905591602001919060010190620001f3565b5062000223929150620002a4565b5090565b828054620002359062000310565b90600052602060002090601f01602090048101928262000259576000855562000215565b82601f106200027457805160ff191683800117855562000215565b8280016001018555821562000215579182015b828111156200021557825182559160200191906001019062000287565b5b80821115620002235760008155600101620002a5565b80516001600160a01b0381168114620002d357600080fd5b919050565b60008060408385031215620002ec57600080fd5b620002f783620002bb565b91506200030760208401620002bb565b90509250929050565b600181811c908216806200032557607f821691505b602082108114156200034757634e487b7160e01b600052602260045260246000fd5b50919050565b6132b5806200035d6000396000f3fe6080604052600436106103035760003560e01c80637be2dcfc11610190578063b88d4fde116100dc578063dabd271911610095578063e985e9c51161006f578063e985e9c51461093e578063f2fde38b14610987578063f7ea7a3d146109a7578063f851a440146109c757600080fd5b8063dabd2719146108d1578063daeba622146108f1578063e18c78171461091e57600080fd5b8063b88d4fde14610810578063bc33718214610830578063c87b56dd14610850578063cea70a9214610870578063d2825a651461089d578063d96a094a146108be57600080fd5b806391b7f5ed11610149578063a035b1fe11610123578063a035b1fe146107a4578063a1862b4c146107ba578063a22cb465146107da578063affed0e0146107fa57600080fd5b806391b7f5ed1461076757806395d89b41146107875780639fcdec611461079c57600080fd5b80637be2dcfc146106c05780637c928fe9146106e0578063837aea6c146106f3578063841718a6146107095780638c7ea24b146107295780638da5cb5b1461074957600080fd5b80633ccfd60b1161024f5780636352211e116102085780636fa3961e116101e25780636fa3961e1461065557806370a0823114610675578063715018a6146106955780637437681e146106aa57600080fd5b80636352211e146105fe57806368428a1b1461061e5780636b6f4a9d1461063f57600080fd5b80633ccfd60b146105555780633f8121a21461056a57806341de890e1461058a57806342842e0e1461059d57806353135ca0146105bd5780635a737f35146105de57600080fd5b806318160ddd116102bc5780632a55205a116102965780632a55205a146104a95780632e6b106c146104e857806330176e131461050857806330b2264e1461052857600080fd5b806318160ddd1461044657806323b872dd1461045c578063276f09341461047c57600080fd5b8063017e66f41461034757806301ffc9a71461037a57806306fdde03146103aa578063081812fc146103cc578063095ea7b3146104045780630fa1f5b81461042657600080fd5b3661034257604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080fd5b34801561035357600080fd5b50610367610362366004612e41565b6109e7565b6040519081526020015b60405180910390f35b34801561038657600080fd5b5061039a610395366004612da7565b610a08565b6040519015158152602001610371565b3480156103b657600080fd5b506103bf610a19565b6040516103719190612f58565b3480156103d857600080fd5b506103ec6103e7366004612e41565b610aab565b6040516001600160a01b039091168152602001610371565b34801561041057600080fd5b5061042461041f366004612b8b565b610b45565b005b34801561043257600080fd5b50610424610441366004612d17565b610c5b565b34801561045257600080fd5b50610367600b5481565b34801561046857600080fd5b50610424610477366004612a51565b610cba565b34801561048857600080fd5b5061049c6104973660046129fb565b610ceb565b6040516103719190612f14565b3480156104b557600080fd5b506104c96104c4366004612e5a565b610db3565b604080516001600160a01b039093168352602083019190915201610371565b3480156104f457600080fd5b50610424610503366004612c58565b610e08565b34801561051457600080fd5b50610424610523366004612de1565b610ec2565b34801561053457600080fd5b506103676105433660046129fb565b60146020526000908152604090205481565b34801561056157600080fd5b50610424610f0d565b34801561057657600080fd5b50610424610585366004612d8c565b61109e565b610424610598366004612e41565b6110fb565b3480156105a957600080fd5b506104246105b8366004612a51565b6112ee565b3480156105c957600080fd5b5060085461039a90600160a81b900460ff1681565b3480156105ea57600080fd5b506104246105f9366004612c58565b611309565b34801561060a57600080fd5b506103ec610619366004612e41565b6113c3565b34801561062a57600080fd5b5060085461039a90600160a01b900460ff1681565b34801561064b57600080fd5b50610367600f5481565b34801561066157600080fd5b506103ec610670366004612e41565b61143a565b34801561068157600080fd5b506103676106903660046129fb565b611464565b3480156106a157600080fd5b506104246114eb565b3480156106b657600080fd5b50610367600d5481565b3480156106cc57600080fd5b506104246106db366004612c58565b611551565b6104246106ee366004612e41565b61160b565b3480156106ff57600080fd5b50610367600c5481565b34801561071557600080fd5b50610424610724366004612d8c565b611754565b34801561073557600080fd5b50610424610744366004612b8b565b6117b1565b34801561075557600080fd5b506006546001600160a01b03166103ec565b34801561077357600080fd5b50610424610782366004612e41565b6117fa565b34801561079357600080fd5b506103bf61183e565b61042461184d565b3480156107b057600080fd5b50610367600a5481565b3480156107c657600080fd5b506011546103ec906001600160a01b031681565b3480156107e657600080fd5b506104246107f5366004612b56565b611a71565b34801561080657600080fd5b50610367600e5481565b34801561081c57600080fd5b5061042461082b366004612a92565b611a7c565b34801561083c57600080fd5b5061042461084b366004612e41565b611ab4565b34801561085c57600080fd5b506103bf61086b366004612e41565b611af8565b34801561087c57600080fd5b5061036761088b3660046129fb565b60156020526000908152604090205481565b3480156108a957600080fd5b5060085461039a90600160b01b900460ff1681565b6104246108cc366004612e41565b611bd3565b3480156108dd57600080fd5b506104246108ec366004612e41565b611d8d565b3480156108fd57600080fd5b5061036761090c3660046129fb565b60166020526000908152604090205481565b34801561092a57600080fd5b50610424610939366004612d8c565b611dd1565b34801561094a57600080fd5b5061039a610959366004612a18565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b34801561099357600080fd5b506104246109a23660046129fb565b611e2e565b3480156109b357600080fd5b506104246109c2366004612e41565b611ef9565b3480156109d357600080fd5b506010546103ec906001600160a01b031681565b601381815481106109f757600080fd5b600091825260209091200154905081565b6000610a1382611f3d565b92915050565b606060008054610a2890613192565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5490613192565b8015610aa15780601f10610a7657610100808354040283529160200191610aa1565b820191906000526020600020905b815481529060010190602001808311610a8457829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b0316610b295760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b6000610b50826113c3565b9050806001600160a01b0316836001600160a01b03161415610bbe5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610b20565b336001600160a01b0382161480610bda5750610bda8133610959565b610c4c5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610b20565b610c568383611f62565b505050565b6011546001600160a01b03163314610cae5760405162461bcd60e51b8152602060048201526016602482015275155cd9481d1a1948135d5b1d1a5cda59d5d85b1b195d60521b6044820152606401610b20565b610c566013838361284c565b610cc43382611fd0565b610ce05760405162461bcd60e51b8152600401610b209061305e565b610c568383836120c7565b60606000610cf883611464565b67ffffffffffffffff811115610d1057610d1061323e565b604051908082528060200260200182016040528015610d39578160200160208202803683370190505b5090506000805b600e54811015610daa57846001600160a01b0316610d5d826113c3565b6001600160a01b03161415610d985780838381518110610d7f57610d7f613228565b602090810291909101015281610d94816131cd565b9250505b80610da2816131cd565b915050610d40565b50909392505050565b604080518082019091526007546001600160a01b038116808352600160a01b90910462ffffff1660208301819052909160009161271090610df49086613130565b610dfe919061311c565b9150509250929050565b6006546001600160a01b0316331480610e2b57506010546001600160a01b031633145b610e475760405162461bcd60e51b8152600401610b209061302e565b60005b8251811015610c5657818181518110610e6557610e65613228565b602002602001015160146000858481518110610e8357610e83613228565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508080610eba906131cd565b915050610e4a565b6006546001600160a01b0316331480610ee557506010546001600160a01b031633145b610f015760405162461bcd60e51b8152600401610b209061302e565b610c5660098383612897565b6006546001600160a01b0316331480610f3057506010546001600160a01b031633145b610f4c5760405162461bcd60e51b8152600401610b209061302e565b600860009054906101000a90046001600160a01b03166001600160a01b031663a0e67e2b6040518163ffffffff1660e01b815260040160006040518083038186803b158015610f9a57600080fd5b505afa158015610fae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fd69190810190612bb7565b8051610fea9160129160209091019061290a565b504760005b60125481101561109a576012818154811061100c5761100c613228565b600091825260209091200154601380546001600160a01b03909216916108fc916064918590811061103f5761103f613228565b9060005260206000200154856110559190613130565b61105f919061311c565b6040518115909202916000818181858888f19350505050158015611087573d6000803e3d6000fd5b5080611092816131cd565b915050610fef565b5050565b6006546001600160a01b03163314806110c157506010546001600160a01b031633145b6110dd5760405162461bcd60e51b8152600401610b209061302e565b60088054911515600160a81b0260ff60a81b19909216919091179055565b33600090815260166020526040902054600854600160b01b900460ff166111645760405162461bcd60e51b815260206004820152601a60248201527f446973636f756e744d696e74206973206e6f74206163746976650000000000006044820152606401610b20565b808211156111c35760405162461bcd60e51b815260206004820152602660248201527f596f7520617265206e6f7420616c6c6f77656420746f206d696e7420646973636044820152651bdd5b9d195960d21b6064820152608401610b20565b600b546111d1906001613104565b600e546111de9084613104565b11156111fc5760405162461bcd60e51b8152600401610b2090612fed565b6064600f5483600a5461120f9190613130565b6112199190613130565b611223919061311c565b3410156112425760405162461bcd60e51b8152600401610b2090612fbd565b3360009081526016602052604090205461125d90839061314f565b336000908152601660205260408120919091555b828110156112af57600e546112863382612263565b600e8054906000611296836131cd565b91905055505080806112a7906131cd565b915050611271565b5060408051338152602081018490527f87473919a0c76fcaf9c6bafe5a3df3555f37db2458fa7b45161543fd9e1ec4b891015b60405180910390a15050565b610c5683838360405180602001604052806000815250611a7c565b6006546001600160a01b031633148061132c57506010546001600160a01b031633145b6113485760405162461bcd60e51b8152600401610b209061302e565b60005b8251811015610c565781818151811061136657611366613228565b60200260200101516015600085848151811061138457611384613228565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000208190555080806113bb906131cd565b91505061134b565b6000818152600260205260408120546001600160a01b031680610a135760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610b20565b6012818154811061144a57600080fd5b6000918252602090912001546001600160a01b0316905081565b60006001600160a01b0382166114cf5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610b20565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b031633146115455760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b20565b61154f600061227d565b565b6006546001600160a01b031633148061157457506010546001600160a01b031633145b6115905760405162461bcd60e51b8152600401610b209061302e565b60005b8251811015610c56578181815181106115ae576115ae613228565b6020026020010151601660008584815181106115cc576115cc613228565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508080611603906131cd565b915050611593565b33600090815260156020526040902054808211156116775760405162461bcd60e51b8152602060048201526024808201527f596f7520617265206e6f7420616c6c6f77656420746f206d696e7420666f72206044820152636672656560e01b6064820152608401610b20565b600b54611685906001613104565b600e546116929084613104565b11156116b05760405162461bcd60e51b8152600401610b2090612fed565b336000908152601560205260409020546116cb90839061314f565b336000908152601560205260408120919091555b8281101561171d57600e546116f43382612263565b600e8054906000611704836131cd565b9190505550508080611715906131cd565b9150506116df565b5060408051338152602081018490527f1a75c98f3caa5c596c30e5e4c83e0802685273950677d98a322c514a03b05b5791016112e2565b6006546001600160a01b031633148061177757506010546001600160a01b031633145b6117935760405162461bcd60e51b8152600401610b209061302e565b60088054911515600160a01b0260ff60a01b19909216919091179055565b6006546001600160a01b03163314806117d457506010546001600160a01b031633145b6117f05760405162461bcd60e51b8152600401610b209061302e565b61109a82826122cf565b6006546001600160a01b031633148061181d57506010546001600160a01b031633145b6118395760405162461bcd60e51b8152600401610b209061302e565b600a55565b606060018054610a2890613192565b33600090815260146020526040902054600854600160a81b900460ff166118ae5760405162461bcd60e51b815260206004820152601560248201527450726573616c65206973206e6f742061637469766560581b6044820152606401610b20565b600181116118f75760405162461bcd60e51b8152602060048201526016602482015275596f7520617265206e6f74206f6e2050726573616c6560501b6044820152606401610b20565b600b54611905906001613104565b600e54611913906002613104565b11156119315760405162461bcd60e51b8152600401610b2090612fed565b600c5461193d33611464565b611948906002613104565b11156119a05760405162461bcd60e51b815260206004820152602160248201527f535550504c593a20717479206578656564696e672077616c6c6574206c696d696044820152601d60fa1b6064820152608401610b20565b600a543410156119c25760405162461bcd60e51b8152600401610b2090612fbd565b336000908152601460205260409020546119de9060029061314f565b33600081815260146020526040902091909155600e546119fe9190612263565b600e8054906000611a0e836131cd565b9190505550611a1f33600e54612263565b600e8054906000611a2f836131cd565b909155505060408051338152600260208201527f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688591015b60405180910390a150565b61109a33838361236b565b611a863383611fd0565b611aa25760405162461bcd60e51b8152600401610b209061305e565b611aae8484848461243a565b50505050565b6006546001600160a01b0316331480611ad757506010546001600160a01b031633145b611af35760405162461bcd60e51b8152600401610b209061302e565b600d55565b6000818152600260205260409020546060906001600160a01b0316611b775760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610b20565b6000611b8161246d565b90506000815111611ba15760405180602001604052806000815250611bcc565b80611bab8461247c565b604051602001611bbc929190612ea8565b6040516020818303038152906040525b9392505050565b600854600160a01b900460ff16611c215760405162461bcd60e51b815260206004820152601260248201527173616c65206973206e6f742061637469766560701b6044820152606401610b20565b600d548111158015611c335750600081115b611c7f5760405162461bcd60e51b815260206004820152601860248201527f717479206f66206d696e7473206e6f7420616c6c6f77656400000000000000006044820152606401610b20565b600b54611c8d906001613104565b600e54611c9a9083613104565b1115611ce85760405162461bcd60e51b815260206004820152601f60248201527f535550504c593a2056616c756520657863656564732064726f704c696d6974006044820152606401610b20565b80600a54611cf69190613130565b341015611d155760405162461bcd60e51b8152600401610b2090612fbd565b60005b81811015611d5657600e54611d2d3382612263565b600e8054906000611d3d836131cd565b9190505550508080611d4e906131cd565b915050611d18565b5060408051338152602081018390527f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859101611a66565b6006546001600160a01b0316331480611db057506010546001600160a01b031633145b611dcc5760405162461bcd60e51b8152600401610b209061302e565b600f55565b6006546001600160a01b0316331480611df457506010546001600160a01b031633145b611e105760405162461bcd60e51b8152600401610b209061302e565b60088054911515600160b01b0260ff60b01b19909216919091179055565b6006546001600160a01b03163314611e885760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b20565b6001600160a01b038116611eed5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b20565b611ef68161227d565b50565b6006546001600160a01b0316331480611f1c57506010546001600160a01b031633145b611f385760405162461bcd60e51b8152600401610b209061302e565b600b55565b60006001600160e01b0319821663152a902d60e11b1480610a135750610a138261257a565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611f97826113c3565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166120495760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610b20565b6000612054836113c3565b9050806001600160a01b0316846001600160a01b0316148061208f5750836001600160a01b031661208484610aab565b6001600160a01b0316145b806120bf57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166120da826113c3565b6001600160a01b03161461213e5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610b20565b6001600160a01b0382166121a05760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610b20565b6121ab600082611f62565b6001600160a01b03831660009081526003602052604081208054600192906121d490849061314f565b90915550506001600160a01b0382166000908152600360205260408120805460019290612202908490613104565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61109a8282604051806020016040528060008152506125ca565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6127108111156123215760405162461bcd60e51b815260206004820152601a60248201527f45524332393831526f79616c746965733a20546f6f20686967680000000000006044820152606401610b20565b604080518082019091526001600160a01b0390921680835262ffffff909116602090920182905260078054600160a01b9093026001600160b81b0319909316909117919091179055565b816001600160a01b0316836001600160a01b031614156123cd5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610b20565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6124458484846120c7565b612451848484846125fd565b611aae5760405162461bcd60e51b8152600401610b2090612f6b565b606060098054610a2890613192565b6060816124a05750506040805180820190915260018152600360fc1b602082015290565b8160005b81156124ca57806124b4816131cd565b91506124c39050600a8361311c565b91506124a4565b60008167ffffffffffffffff8111156124e5576124e561323e565b6040519080825280601f01601f19166020018201604052801561250f576020820181803683370190505b5090505b84156120bf5761252460018361314f565b9150612531600a866131e8565b61253c906030613104565b60f81b81838151811061255157612551613228565b60200101906001600160f81b031916908160001a905350612573600a8661311c565b9450612513565b60006001600160e01b031982166380ac58cd60e01b14806125ab57506001600160e01b03198216635b5e139f60e01b145b80610a1357506301ffc9a760e01b6001600160e01b0319831614610a13565b6125d4838361270a565b6125e160008484846125fd565b610c565760405162461bcd60e51b8152600401610b2090612f6b565b60006001600160a01b0384163b156126ff57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612641903390899088908890600401612ed7565b602060405180830381600087803b15801561265b57600080fd5b505af192505050801561268b575060408051601f3d908101601f1916820190925261268891810190612dc4565b60015b6126e5573d8080156126b9576040519150601f19603f3d011682016040523d82523d6000602084013e6126be565b606091505b5080516126dd5760405162461bcd60e51b8152600401610b2090612f6b565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506120bf565b506001949350505050565b6001600160a01b0382166127605760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610b20565b6000818152600260205260409020546001600160a01b0316156127c55760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610b20565b6001600160a01b03821660009081526003602052604081208054600192906127ee908490613104565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054828255906000526020600020908101928215612887579160200282015b8281111561288757823582559160200191906001019061286c565b5061289392915061295f565b5090565b8280546128a390613192565b90600052602060002090601f0160209004810192826128c55760008555612887565b82601f106128de5782800160ff19823516178555612887565b82800160010185558215612887579182018281111561288757823582559160200191906001019061286c565b828054828255906000526020600020908101928215612887579160200282015b8281111561288757825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061292a565b5b808211156128935760008155600101612960565b600082601f83011261298557600080fd5b8135602061299a612995836130e0565b6130af565b80838252828201915082860187848660051b89010111156129ba57600080fd5b60005b858110156129d9578135845292840192908401906001016129bd565b5090979650505050505050565b803580151581146129f657600080fd5b919050565b600060208284031215612a0d57600080fd5b8135611bcc81613254565b60008060408385031215612a2b57600080fd5b8235612a3681613254565b91506020830135612a4681613254565b809150509250929050565b600080600060608486031215612a6657600080fd5b8335612a7181613254565b92506020840135612a8181613254565b929592945050506040919091013590565b60008060008060808587031215612aa857600080fd5b8435612ab381613254565b9350602085810135612ac481613254565b935060408601359250606086013567ffffffffffffffff80821115612ae857600080fd5b818801915088601f830112612afc57600080fd5b813581811115612b0e57612b0e61323e565b612b20601f8201601f191685016130af565b91508082528984828501011115612b3657600080fd5b808484018584013760008482840101525080935050505092959194509250565b60008060408385031215612b6957600080fd5b8235612b7481613254565b9150612b82602084016129e6565b90509250929050565b60008060408385031215612b9e57600080fd5b8235612ba981613254565b946020939093013593505050565b60006020808385031215612bca57600080fd5b825167ffffffffffffffff811115612be157600080fd5b8301601f81018513612bf257600080fd5b8051612c00612995826130e0565b80828252848201915084840188868560051b8701011115612c2057600080fd5b600094505b83851015612c4c578051612c3881613254565b835260019490940193918501918501612c25565b50979650505050505050565b60008060408385031215612c6b57600080fd5b823567ffffffffffffffff80821115612c8357600080fd5b818501915085601f830112612c9757600080fd5b81356020612ca7612995836130e0565b8083825282820191508286018a848660051b8901011115612cc757600080fd5b600096505b84871015612cf3578035612cdf81613254565b835260019690960195918301918301612ccc565b5096505086013592505080821115612d0a57600080fd5b50610dfe85828601612974565b60008060208385031215612d2a57600080fd5b823567ffffffffffffffff80821115612d4257600080fd5b818501915085601f830112612d5657600080fd5b813581811115612d6557600080fd5b8660208260051b8501011115612d7a57600080fd5b60209290920196919550909350505050565b600060208284031215612d9e57600080fd5b611bcc826129e6565b600060208284031215612db957600080fd5b8135611bcc81613269565b600060208284031215612dd657600080fd5b8151611bcc81613269565b60008060208385031215612df457600080fd5b823567ffffffffffffffff80821115612e0c57600080fd5b818501915085601f830112612e2057600080fd5b813581811115612e2f57600080fd5b866020828501011115612d7a57600080fd5b600060208284031215612e5357600080fd5b5035919050565b60008060408385031215612e6d57600080fd5b50508035926020909101359150565b60008151808452612e94816020860160208601613166565b601f01601f19169290920160200192915050565b60008351612eba818460208801613166565b835190830190612ece818360208801613166565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612f0a90830184612e7c565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015612f4c57835183529284019291840191600101612f30565b50909695505050505050565b602081526000611bcc6020830184612e7c565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252601690820152755041594d454e543a20696e76616c69642076616c756560501b604082015260600190565b60208082526021908201527f535550504c593a2056616c7565206578636565647320746f74616c537570706c6040820152607960f81b606082015260800190565b602080825260169082015275557365207468652041646d696e732077616c6c65747360501b604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff811182821017156130d8576130d861323e565b604052919050565b600067ffffffffffffffff8211156130fa576130fa61323e565b5060051b60200190565b60008219821115613117576131176131fc565b500190565b60008261312b5761312b613212565b500490565b600081600019048311821515161561314a5761314a6131fc565b500290565b600082821015613161576131616131fc565b500390565b60005b83811015613181578181015183820152602001613169565b83811115611aae5750506000910152565b600181811c908216806131a657607f821691505b602082108114156131c757634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156131e1576131e16131fc565b5060010190565b6000826131f7576131f7613212565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611ef657600080fd5b6001600160e01b031981168114611ef657600080fdfea26469706673582212206ff68f2611b7722bd55be540093a9f6ea96f0794e12187d5040fb236dcd80c9b64736f6c634300080700330000000000000000000000000ad6c75d402a7b7c9043f953df43db20c492ea3e000000000000000000000000fa572cffac68194a29f4fa4a12f2f4ac90877087
Deployed Bytecode
0x6080604052600436106103035760003560e01c80637be2dcfc11610190578063b88d4fde116100dc578063dabd271911610095578063e985e9c51161006f578063e985e9c51461093e578063f2fde38b14610987578063f7ea7a3d146109a7578063f851a440146109c757600080fd5b8063dabd2719146108d1578063daeba622146108f1578063e18c78171461091e57600080fd5b8063b88d4fde14610810578063bc33718214610830578063c87b56dd14610850578063cea70a9214610870578063d2825a651461089d578063d96a094a146108be57600080fd5b806391b7f5ed11610149578063a035b1fe11610123578063a035b1fe146107a4578063a1862b4c146107ba578063a22cb465146107da578063affed0e0146107fa57600080fd5b806391b7f5ed1461076757806395d89b41146107875780639fcdec611461079c57600080fd5b80637be2dcfc146106c05780637c928fe9146106e0578063837aea6c146106f3578063841718a6146107095780638c7ea24b146107295780638da5cb5b1461074957600080fd5b80633ccfd60b1161024f5780636352211e116102085780636fa3961e116101e25780636fa3961e1461065557806370a0823114610675578063715018a6146106955780637437681e146106aa57600080fd5b80636352211e146105fe57806368428a1b1461061e5780636b6f4a9d1461063f57600080fd5b80633ccfd60b146105555780633f8121a21461056a57806341de890e1461058a57806342842e0e1461059d57806353135ca0146105bd5780635a737f35146105de57600080fd5b806318160ddd116102bc5780632a55205a116102965780632a55205a146104a95780632e6b106c146104e857806330176e131461050857806330b2264e1461052857600080fd5b806318160ddd1461044657806323b872dd1461045c578063276f09341461047c57600080fd5b8063017e66f41461034757806301ffc9a71461037a57806306fdde03146103aa578063081812fc146103cc578063095ea7b3146104045780630fa1f5b81461042657600080fd5b3661034257604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b600080fd5b34801561035357600080fd5b50610367610362366004612e41565b6109e7565b6040519081526020015b60405180910390f35b34801561038657600080fd5b5061039a610395366004612da7565b610a08565b6040519015158152602001610371565b3480156103b657600080fd5b506103bf610a19565b6040516103719190612f58565b3480156103d857600080fd5b506103ec6103e7366004612e41565b610aab565b6040516001600160a01b039091168152602001610371565b34801561041057600080fd5b5061042461041f366004612b8b565b610b45565b005b34801561043257600080fd5b50610424610441366004612d17565b610c5b565b34801561045257600080fd5b50610367600b5481565b34801561046857600080fd5b50610424610477366004612a51565b610cba565b34801561048857600080fd5b5061049c6104973660046129fb565b610ceb565b6040516103719190612f14565b3480156104b557600080fd5b506104c96104c4366004612e5a565b610db3565b604080516001600160a01b039093168352602083019190915201610371565b3480156104f457600080fd5b50610424610503366004612c58565b610e08565b34801561051457600080fd5b50610424610523366004612de1565b610ec2565b34801561053457600080fd5b506103676105433660046129fb565b60146020526000908152604090205481565b34801561056157600080fd5b50610424610f0d565b34801561057657600080fd5b50610424610585366004612d8c565b61109e565b610424610598366004612e41565b6110fb565b3480156105a957600080fd5b506104246105b8366004612a51565b6112ee565b3480156105c957600080fd5b5060085461039a90600160a81b900460ff1681565b3480156105ea57600080fd5b506104246105f9366004612c58565b611309565b34801561060a57600080fd5b506103ec610619366004612e41565b6113c3565b34801561062a57600080fd5b5060085461039a90600160a01b900460ff1681565b34801561064b57600080fd5b50610367600f5481565b34801561066157600080fd5b506103ec610670366004612e41565b61143a565b34801561068157600080fd5b506103676106903660046129fb565b611464565b3480156106a157600080fd5b506104246114eb565b3480156106b657600080fd5b50610367600d5481565b3480156106cc57600080fd5b506104246106db366004612c58565b611551565b6104246106ee366004612e41565b61160b565b3480156106ff57600080fd5b50610367600c5481565b34801561071557600080fd5b50610424610724366004612d8c565b611754565b34801561073557600080fd5b50610424610744366004612b8b565b6117b1565b34801561075557600080fd5b506006546001600160a01b03166103ec565b34801561077357600080fd5b50610424610782366004612e41565b6117fa565b34801561079357600080fd5b506103bf61183e565b61042461184d565b3480156107b057600080fd5b50610367600a5481565b3480156107c657600080fd5b506011546103ec906001600160a01b031681565b3480156107e657600080fd5b506104246107f5366004612b56565b611a71565b34801561080657600080fd5b50610367600e5481565b34801561081c57600080fd5b5061042461082b366004612a92565b611a7c565b34801561083c57600080fd5b5061042461084b366004612e41565b611ab4565b34801561085c57600080fd5b506103bf61086b366004612e41565b611af8565b34801561087c57600080fd5b5061036761088b3660046129fb565b60156020526000908152604090205481565b3480156108a957600080fd5b5060085461039a90600160b01b900460ff1681565b6104246108cc366004612e41565b611bd3565b3480156108dd57600080fd5b506104246108ec366004612e41565b611d8d565b3480156108fd57600080fd5b5061036761090c3660046129fb565b60166020526000908152604090205481565b34801561092a57600080fd5b50610424610939366004612d8c565b611dd1565b34801561094a57600080fd5b5061039a610959366004612a18565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b34801561099357600080fd5b506104246109a23660046129fb565b611e2e565b3480156109b357600080fd5b506104246109c2366004612e41565b611ef9565b3480156109d357600080fd5b506010546103ec906001600160a01b031681565b601381815481106109f757600080fd5b600091825260209091200154905081565b6000610a1382611f3d565b92915050565b606060008054610a2890613192565b80601f0160208091040260200160405190810160405280929190818152602001828054610a5490613192565b8015610aa15780601f10610a7657610100808354040283529160200191610aa1565b820191906000526020600020905b815481529060010190602001808311610a8457829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b0316610b295760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b6000610b50826113c3565b9050806001600160a01b0316836001600160a01b03161415610bbe5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610b20565b336001600160a01b0382161480610bda5750610bda8133610959565b610c4c5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610b20565b610c568383611f62565b505050565b6011546001600160a01b03163314610cae5760405162461bcd60e51b8152602060048201526016602482015275155cd9481d1a1948135d5b1d1a5cda59d5d85b1b195d60521b6044820152606401610b20565b610c566013838361284c565b610cc43382611fd0565b610ce05760405162461bcd60e51b8152600401610b209061305e565b610c568383836120c7565b60606000610cf883611464565b67ffffffffffffffff811115610d1057610d1061323e565b604051908082528060200260200182016040528015610d39578160200160208202803683370190505b5090506000805b600e54811015610daa57846001600160a01b0316610d5d826113c3565b6001600160a01b03161415610d985780838381518110610d7f57610d7f613228565b602090810291909101015281610d94816131cd565b9250505b80610da2816131cd565b915050610d40565b50909392505050565b604080518082019091526007546001600160a01b038116808352600160a01b90910462ffffff1660208301819052909160009161271090610df49086613130565b610dfe919061311c565b9150509250929050565b6006546001600160a01b0316331480610e2b57506010546001600160a01b031633145b610e475760405162461bcd60e51b8152600401610b209061302e565b60005b8251811015610c5657818181518110610e6557610e65613228565b602002602001015160146000858481518110610e8357610e83613228565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508080610eba906131cd565b915050610e4a565b6006546001600160a01b0316331480610ee557506010546001600160a01b031633145b610f015760405162461bcd60e51b8152600401610b209061302e565b610c5660098383612897565b6006546001600160a01b0316331480610f3057506010546001600160a01b031633145b610f4c5760405162461bcd60e51b8152600401610b209061302e565b600860009054906101000a90046001600160a01b03166001600160a01b031663a0e67e2b6040518163ffffffff1660e01b815260040160006040518083038186803b158015610f9a57600080fd5b505afa158015610fae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fd69190810190612bb7565b8051610fea9160129160209091019061290a565b504760005b60125481101561109a576012818154811061100c5761100c613228565b600091825260209091200154601380546001600160a01b03909216916108fc916064918590811061103f5761103f613228565b9060005260206000200154856110559190613130565b61105f919061311c565b6040518115909202916000818181858888f19350505050158015611087573d6000803e3d6000fd5b5080611092816131cd565b915050610fef565b5050565b6006546001600160a01b03163314806110c157506010546001600160a01b031633145b6110dd5760405162461bcd60e51b8152600401610b209061302e565b60088054911515600160a81b0260ff60a81b19909216919091179055565b33600090815260166020526040902054600854600160b01b900460ff166111645760405162461bcd60e51b815260206004820152601a60248201527f446973636f756e744d696e74206973206e6f74206163746976650000000000006044820152606401610b20565b808211156111c35760405162461bcd60e51b815260206004820152602660248201527f596f7520617265206e6f7420616c6c6f77656420746f206d696e7420646973636044820152651bdd5b9d195960d21b6064820152608401610b20565b600b546111d1906001613104565b600e546111de9084613104565b11156111fc5760405162461bcd60e51b8152600401610b2090612fed565b6064600f5483600a5461120f9190613130565b6112199190613130565b611223919061311c565b3410156112425760405162461bcd60e51b8152600401610b2090612fbd565b3360009081526016602052604090205461125d90839061314f565b336000908152601660205260408120919091555b828110156112af57600e546112863382612263565b600e8054906000611296836131cd565b91905055505080806112a7906131cd565b915050611271565b5060408051338152602081018490527f87473919a0c76fcaf9c6bafe5a3df3555f37db2458fa7b45161543fd9e1ec4b891015b60405180910390a15050565b610c5683838360405180602001604052806000815250611a7c565b6006546001600160a01b031633148061132c57506010546001600160a01b031633145b6113485760405162461bcd60e51b8152600401610b209061302e565b60005b8251811015610c565781818151811061136657611366613228565b60200260200101516015600085848151811061138457611384613228565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000208190555080806113bb906131cd565b91505061134b565b6000818152600260205260408120546001600160a01b031680610a135760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610b20565b6012818154811061144a57600080fd5b6000918252602090912001546001600160a01b0316905081565b60006001600160a01b0382166114cf5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610b20565b506001600160a01b031660009081526003602052604090205490565b6006546001600160a01b031633146115455760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b20565b61154f600061227d565b565b6006546001600160a01b031633148061157457506010546001600160a01b031633145b6115905760405162461bcd60e51b8152600401610b209061302e565b60005b8251811015610c56578181815181106115ae576115ae613228565b6020026020010151601660008584815181106115cc576115cc613228565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508080611603906131cd565b915050611593565b33600090815260156020526040902054808211156116775760405162461bcd60e51b8152602060048201526024808201527f596f7520617265206e6f7420616c6c6f77656420746f206d696e7420666f72206044820152636672656560e01b6064820152608401610b20565b600b54611685906001613104565b600e546116929084613104565b11156116b05760405162461bcd60e51b8152600401610b2090612fed565b336000908152601560205260409020546116cb90839061314f565b336000908152601560205260408120919091555b8281101561171d57600e546116f43382612263565b600e8054906000611704836131cd565b9190505550508080611715906131cd565b9150506116df565b5060408051338152602081018490527f1a75c98f3caa5c596c30e5e4c83e0802685273950677d98a322c514a03b05b5791016112e2565b6006546001600160a01b031633148061177757506010546001600160a01b031633145b6117935760405162461bcd60e51b8152600401610b209061302e565b60088054911515600160a01b0260ff60a01b19909216919091179055565b6006546001600160a01b03163314806117d457506010546001600160a01b031633145b6117f05760405162461bcd60e51b8152600401610b209061302e565b61109a82826122cf565b6006546001600160a01b031633148061181d57506010546001600160a01b031633145b6118395760405162461bcd60e51b8152600401610b209061302e565b600a55565b606060018054610a2890613192565b33600090815260146020526040902054600854600160a81b900460ff166118ae5760405162461bcd60e51b815260206004820152601560248201527450726573616c65206973206e6f742061637469766560581b6044820152606401610b20565b600181116118f75760405162461bcd60e51b8152602060048201526016602482015275596f7520617265206e6f74206f6e2050726573616c6560501b6044820152606401610b20565b600b54611905906001613104565b600e54611913906002613104565b11156119315760405162461bcd60e51b8152600401610b2090612fed565b600c5461193d33611464565b611948906002613104565b11156119a05760405162461bcd60e51b815260206004820152602160248201527f535550504c593a20717479206578656564696e672077616c6c6574206c696d696044820152601d60fa1b6064820152608401610b20565b600a543410156119c25760405162461bcd60e51b8152600401610b2090612fbd565b336000908152601460205260409020546119de9060029061314f565b33600081815260146020526040902091909155600e546119fe9190612263565b600e8054906000611a0e836131cd565b9190505550611a1f33600e54612263565b600e8054906000611a2f836131cd565b909155505060408051338152600260208201527f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688591015b60405180910390a150565b61109a33838361236b565b611a863383611fd0565b611aa25760405162461bcd60e51b8152600401610b209061305e565b611aae8484848461243a565b50505050565b6006546001600160a01b0316331480611ad757506010546001600160a01b031633145b611af35760405162461bcd60e51b8152600401610b209061302e565b600d55565b6000818152600260205260409020546060906001600160a01b0316611b775760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610b20565b6000611b8161246d565b90506000815111611ba15760405180602001604052806000815250611bcc565b80611bab8461247c565b604051602001611bbc929190612ea8565b6040516020818303038152906040525b9392505050565b600854600160a01b900460ff16611c215760405162461bcd60e51b815260206004820152601260248201527173616c65206973206e6f742061637469766560701b6044820152606401610b20565b600d548111158015611c335750600081115b611c7f5760405162461bcd60e51b815260206004820152601860248201527f717479206f66206d696e7473206e6f7420616c6c6f77656400000000000000006044820152606401610b20565b600b54611c8d906001613104565b600e54611c9a9083613104565b1115611ce85760405162461bcd60e51b815260206004820152601f60248201527f535550504c593a2056616c756520657863656564732064726f704c696d6974006044820152606401610b20565b80600a54611cf69190613130565b341015611d155760405162461bcd60e51b8152600401610b2090612fbd565b60005b81811015611d5657600e54611d2d3382612263565b600e8054906000611d3d836131cd565b9190505550508080611d4e906131cd565b915050611d18565b5060408051338152602081018390527f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859101611a66565b6006546001600160a01b0316331480611db057506010546001600160a01b031633145b611dcc5760405162461bcd60e51b8152600401610b209061302e565b600f55565b6006546001600160a01b0316331480611df457506010546001600160a01b031633145b611e105760405162461bcd60e51b8152600401610b209061302e565b60088054911515600160b01b0260ff60b01b19909216919091179055565b6006546001600160a01b03163314611e885760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b20565b6001600160a01b038116611eed5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b20565b611ef68161227d565b50565b6006546001600160a01b0316331480611f1c57506010546001600160a01b031633145b611f385760405162461bcd60e51b8152600401610b209061302e565b600b55565b60006001600160e01b0319821663152a902d60e11b1480610a135750610a138261257a565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611f97826113c3565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166120495760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610b20565b6000612054836113c3565b9050806001600160a01b0316846001600160a01b0316148061208f5750836001600160a01b031661208484610aab565b6001600160a01b0316145b806120bf57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166120da826113c3565b6001600160a01b03161461213e5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610b20565b6001600160a01b0382166121a05760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610b20565b6121ab600082611f62565b6001600160a01b03831660009081526003602052604081208054600192906121d490849061314f565b90915550506001600160a01b0382166000908152600360205260408120805460019290612202908490613104565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61109a8282604051806020016040528060008152506125ca565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6127108111156123215760405162461bcd60e51b815260206004820152601a60248201527f45524332393831526f79616c746965733a20546f6f20686967680000000000006044820152606401610b20565b604080518082019091526001600160a01b0390921680835262ffffff909116602090920182905260078054600160a01b9093026001600160b81b0319909316909117919091179055565b816001600160a01b0316836001600160a01b031614156123cd5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610b20565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6124458484846120c7565b612451848484846125fd565b611aae5760405162461bcd60e51b8152600401610b2090612f6b565b606060098054610a2890613192565b6060816124a05750506040805180820190915260018152600360fc1b602082015290565b8160005b81156124ca57806124b4816131cd565b91506124c39050600a8361311c565b91506124a4565b60008167ffffffffffffffff8111156124e5576124e561323e565b6040519080825280601f01601f19166020018201604052801561250f576020820181803683370190505b5090505b84156120bf5761252460018361314f565b9150612531600a866131e8565b61253c906030613104565b60f81b81838151811061255157612551613228565b60200101906001600160f81b031916908160001a905350612573600a8661311c565b9450612513565b60006001600160e01b031982166380ac58cd60e01b14806125ab57506001600160e01b03198216635b5e139f60e01b145b80610a1357506301ffc9a760e01b6001600160e01b0319831614610a13565b6125d4838361270a565b6125e160008484846125fd565b610c565760405162461bcd60e51b8152600401610b2090612f6b565b60006001600160a01b0384163b156126ff57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612641903390899088908890600401612ed7565b602060405180830381600087803b15801561265b57600080fd5b505af192505050801561268b575060408051601f3d908101601f1916820190925261268891810190612dc4565b60015b6126e5573d8080156126b9576040519150601f19603f3d011682016040523d82523d6000602084013e6126be565b606091505b5080516126dd5760405162461bcd60e51b8152600401610b2090612f6b565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506120bf565b506001949350505050565b6001600160a01b0382166127605760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610b20565b6000818152600260205260409020546001600160a01b0316156127c55760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610b20565b6001600160a01b03821660009081526003602052604081208054600192906127ee908490613104565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054828255906000526020600020908101928215612887579160200282015b8281111561288757823582559160200191906001019061286c565b5061289392915061295f565b5090565b8280546128a390613192565b90600052602060002090601f0160209004810192826128c55760008555612887565b82601f106128de5782800160ff19823516178555612887565b82800160010185558215612887579182018281111561288757823582559160200191906001019061286c565b828054828255906000526020600020908101928215612887579160200282015b8281111561288757825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061292a565b5b808211156128935760008155600101612960565b600082601f83011261298557600080fd5b8135602061299a612995836130e0565b6130af565b80838252828201915082860187848660051b89010111156129ba57600080fd5b60005b858110156129d9578135845292840192908401906001016129bd565b5090979650505050505050565b803580151581146129f657600080fd5b919050565b600060208284031215612a0d57600080fd5b8135611bcc81613254565b60008060408385031215612a2b57600080fd5b8235612a3681613254565b91506020830135612a4681613254565b809150509250929050565b600080600060608486031215612a6657600080fd5b8335612a7181613254565b92506020840135612a8181613254565b929592945050506040919091013590565b60008060008060808587031215612aa857600080fd5b8435612ab381613254565b9350602085810135612ac481613254565b935060408601359250606086013567ffffffffffffffff80821115612ae857600080fd5b818801915088601f830112612afc57600080fd5b813581811115612b0e57612b0e61323e565b612b20601f8201601f191685016130af565b91508082528984828501011115612b3657600080fd5b808484018584013760008482840101525080935050505092959194509250565b60008060408385031215612b6957600080fd5b8235612b7481613254565b9150612b82602084016129e6565b90509250929050565b60008060408385031215612b9e57600080fd5b8235612ba981613254565b946020939093013593505050565b60006020808385031215612bca57600080fd5b825167ffffffffffffffff811115612be157600080fd5b8301601f81018513612bf257600080fd5b8051612c00612995826130e0565b80828252848201915084840188868560051b8701011115612c2057600080fd5b600094505b83851015612c4c578051612c3881613254565b835260019490940193918501918501612c25565b50979650505050505050565b60008060408385031215612c6b57600080fd5b823567ffffffffffffffff80821115612c8357600080fd5b818501915085601f830112612c9757600080fd5b81356020612ca7612995836130e0565b8083825282820191508286018a848660051b8901011115612cc757600080fd5b600096505b84871015612cf3578035612cdf81613254565b835260019690960195918301918301612ccc565b5096505086013592505080821115612d0a57600080fd5b50610dfe85828601612974565b60008060208385031215612d2a57600080fd5b823567ffffffffffffffff80821115612d4257600080fd5b818501915085601f830112612d5657600080fd5b813581811115612d6557600080fd5b8660208260051b8501011115612d7a57600080fd5b60209290920196919550909350505050565b600060208284031215612d9e57600080fd5b611bcc826129e6565b600060208284031215612db957600080fd5b8135611bcc81613269565b600060208284031215612dd657600080fd5b8151611bcc81613269565b60008060208385031215612df457600080fd5b823567ffffffffffffffff80821115612e0c57600080fd5b818501915085601f830112612e2057600080fd5b813581811115612e2f57600080fd5b866020828501011115612d7a57600080fd5b600060208284031215612e5357600080fd5b5035919050565b60008060408385031215612e6d57600080fd5b50508035926020909101359150565b60008151808452612e94816020860160208601613166565b601f01601f19169290920160200192915050565b60008351612eba818460208801613166565b835190830190612ece818360208801613166565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612f0a90830184612e7c565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015612f4c57835183529284019291840191600101612f30565b50909695505050505050565b602081526000611bcc6020830184612e7c565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252601690820152755041594d454e543a20696e76616c69642076616c756560501b604082015260600190565b60208082526021908201527f535550504c593a2056616c7565206578636565647320746f74616c537570706c6040820152607960f81b606082015260800190565b602080825260169082015275557365207468652041646d696e732077616c6c65747360501b604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff811182821017156130d8576130d861323e565b604052919050565b600067ffffffffffffffff8211156130fa576130fa61323e565b5060051b60200190565b60008219821115613117576131176131fc565b500190565b60008261312b5761312b613212565b500490565b600081600019048311821515161561314a5761314a6131fc565b500290565b600082821015613161576131616131fc565b500390565b60005b83811015613181578181015183820152602001613169565b83811115611aae5750506000910152565b600181811c908216806131a657607f821691505b602082108114156131c757634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156131e1576131e16131fc565b5060010190565b6000826131f7576131f7613212565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114611ef657600080fd5b6001600160e01b031981168114611ef657600080fdfea26469706673582212206ff68f2611b7722bd55be540093a9f6ea96f0794e12187d5040fb236dcd80c9b64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000ad6c75d402a7b7c9043f953df43db20c492ea3e000000000000000000000000fa572cffac68194a29f4fa4a12f2f4ac90877087
-----Decoded View---------------
Arg [0] : _multisigWallet (address): 0x0AD6c75D402a7b7C9043F953DF43db20c492Ea3e
Arg [1] : _admin (address): 0xfa572CFfac68194A29F4Fa4a12F2F4Ac90877087
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000ad6c75d402a7b7c9043f953df43db20c492ea3e
Arg [1] : 000000000000000000000000fa572cffac68194a29f4fa4a12f2f4ac90877087
Deployed Bytecode Sourcemap
42360:8095:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;46975:31;;;46984:10;9883:51:1;;46996:9:0;9965:2:1;9950:18;;9943:34;46975:31:0;;9856:18:1;46975:31:0;;;;;;;42360:8095;;;;;43849:64;;;;;;;;;;-1:-1:-1;43849:64:0;;;;;:::i;:::-;;:::i;:::-;;;22984:25:1;;;22972:2;22957:18;43849:64:0;;;;;;;;42438:224;;;;;;;;;;-1:-1:-1;42438:224:0;;;;;:::i;:::-;;:::i;:::-;;;11069:14:1;;11062:22;11044:41;;11032:2;11017:18;42438:224:0;10904:187:1;27531:100:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;29090:221::-;;;;;;;;;;-1:-1:-1;29090:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;9164:32:1;;;9146:51;;9134:2;9119:18;29090:221:0;9000:203:1;28613:411:0;;;;;;;;;;-1:-1:-1;28613:411:0;;;;;:::i;:::-;;:::i;:::-;;50288:164;;;;;;;;;;-1:-1:-1;50288:164:0;;;;;:::i;:::-;;:::i;43343:33::-;;;;;;;;;;;;;;;;29840:339;;;;;;;;;;-1:-1:-1;29840:339:0;;;;;:::i;:::-;;:::i;46387:424::-;;;;;;;;;;-1:-1:-1;46387:424:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;19178:321::-;;;;;;;;;;-1:-1:-1;19178:321:0;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;9901:32:1;;;9883:51;;9965:2;9950:18;;9943:34;;;;9856:18;19178:321:0;9701:282:1;45455:234:0;;;;;;;;;;-1:-1:-1;45455:234:0;;;;;:::i;:::-;;:::i;44978:105::-;;;;;;;;;;-1:-1:-1;44978:105:0;;;;;:::i;:::-;;:::i;44341:49::-;;;;;;;;;;-1:-1:-1;44341:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;49933:347;;;;;;;;;;;;;:::i;45091:92::-;;;;;;;;;;-1:-1:-1;45091:92:0;;;;;:::i;:::-;;:::i;47714:798::-;;;;;;:::i;:::-;;:::i;30250:185::-;;;;;;;;;;-1:-1:-1;30250:185:0;;;;;:::i;:::-;;:::i;43135:32::-;;;;;;;;;;-1:-1:-1;43135:32:0;;;;-1:-1:-1;;;43135:32:0;;;;;;45697:238;;;;;;;;;;-1:-1:-1;45697:238:0;;;;;:::i;:::-;;:::i;27225:239::-;;;;;;;;;;-1:-1:-1;27225:239:0;;;;;:::i;:::-;;:::i;43098:30::-;;;;;;;;;;-1:-1:-1;43098:30:0;;;;-1:-1:-1;;;43098:30:0;;;;;;43490:28;;;;;;;;;;;;;;;;43809:31;;;;;;;;;;-1:-1:-1;43809:31:0;;;;;:::i;:::-;;:::i;26955:208::-;;;;;;;;;;-1:-1:-1;26955:208:0;;;;;:::i;:::-;;:::i;5507:103::-;;;;;;;;;;;;;:::i;43426:24::-;;;;;;;;;;;;;;;;45943:234;;;;;;;;;;-1:-1:-1;45943:234:0;;;;;:::i;:::-;;:::i;47103:603::-;;;;;;:::i;:::-;;:::i;43383:36::-;;;;;;;;;;;;;;;;45191:86;;;;;;;;;;-1:-1:-1;45191:86:0;;;;;:::i;:::-;;:::i;42924:124::-;;;;;;;;;;-1:-1:-1;42924:124:0;;;;;:::i;:::-;;:::i;4856:87::-;;;;;;;;;;-1:-1:-1;4929:6:0;;-1:-1:-1;;;;;4929:6:0;4856:87;;44760:91;;;;;;;;;;-1:-1:-1;44760:91:0;;;;;:::i;:::-;;:::i;27700:104::-;;;;;;;;;;;;;:::i;48520:779::-;;;:::i;43252:34::-;;;;;;;;;;;;;;;;43773:29;;;;;;;;;;-1:-1:-1;43773:29:0;;;;-1:-1:-1;;;;;43773:29:0;;;29383:155;;;;;;;;;;-1:-1:-1;29383:155:0;;;;;:::i;:::-;;:::i;43459:24::-;;;;;;;;;;;;;;;;30506:328;;;;;;;;;;-1:-1:-1;30506:328:0;;;;;:::i;:::-;;:::i;46185:87::-;;;;;;;;;;-1:-1:-1;46185:87:0;;;;;:::i;:::-;;:::i;27875:334::-;;;;;;;;;;-1:-1:-1;27875:334:0;;;;;:::i;:::-;;:::i;44397:51::-;;;;;;;;;;-1:-1:-1;44397:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;43174:34;;;;;;;;;;-1:-1:-1;43174:34:0;;;;-1:-1:-1;;;43174:34:0;;;;;;49307:564;;;;;;:::i;:::-;;:::i;46280:99::-;;;;;;;;;;-1:-1:-1;46280:99:0;;;;;:::i;:::-;;:::i;44455:49::-;;;;;;;;;;-1:-1:-1;44455:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;45285:96;;;;;;;;;;-1:-1:-1;45285:96:0;;;;;:::i;:::-;;:::i;29609:164::-;;;;;;;;;;-1:-1:-1;29609:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;29730:25:0;;;29706:4;29730:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;29609:164;5765:201;;;;;;;;;;-1:-1:-1;5765:201:0;;;;;:::i;:::-;;:::i;44859:111::-;;;;;;;;;;-1:-1:-1;44859:111:0;;;;;:::i;:::-;;:::i;43746:20::-;;;;;;;;;;-1:-1:-1;43746:20:0;;;;-1:-1:-1;;;;;43746:20:0;;;43849:64;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;43849:64:0;:::o;42438:224::-;42589:4;42618:36;42642:11;42618:23;:36::i;:::-;42611:43;42438:224;-1:-1:-1;;42438:224:0:o;27531:100::-;27585:13;27618:5;27611:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27531:100;:::o;29090:221::-;29166:7;32433:16;;;:7;:16;;;;;;-1:-1:-1;;;;;32433:16:0;29186:73;;;;-1:-1:-1;;;29186:73:0;;18818:2:1;29186:73:0;;;18800:21:1;18857:2;18837:18;;;18830:30;18896:34;18876:18;;;18869:62;-1:-1:-1;;;18947:18:1;;;18940:42;18999:19;;29186:73:0;;;;;;;;;-1:-1:-1;29279:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;29279:24:0;;29090:221::o;28613:411::-;28694:13;28710:23;28725:7;28710:14;:23::i;:::-;28694:39;;28758:5;-1:-1:-1;;;;;28752:11:0;:2;-1:-1:-1;;;;;28752:11:0;;;28744:57;;;;-1:-1:-1;;;28744:57:0;;20359:2:1;28744:57:0;;;20341:21:1;20398:2;20378:18;;;20371:30;20437:34;20417:18;;;20410:62;-1:-1:-1;;;20488:18:1;;;20481:31;20529:19;;28744:57:0;20157:397:1;28744:57:0;3660:10;-1:-1:-1;;;;;28836:21:0;;;;:62;;-1:-1:-1;28861:37:0;28878:5;3660:10;29609:164;:::i;28861:37::-;28814:168;;;;-1:-1:-1;;;28814:168:0;;16806:2:1;28814:168:0;;;16788:21:1;16845:2;16825:18;;;16818:30;16884:34;16864:18;;;16857:62;16955:26;16935:18;;;16928:54;16999:19;;28814:168:0;16604:420:1;28814:168:0;28995:21;29004:2;29008:7;28995:8;:21::i;:::-;28683:341;28613:411;;:::o;50288:164::-;44041:14;;-1:-1:-1;;;;;44041:14:0;44027:10;:28;44019:63;;;;-1:-1:-1;;;44019:63:0;;21932:2:1;44019:63:0;;;21914:21:1;21971:2;21951:18;;;21944:30;-1:-1:-1;;;21990:18:1;;;21983:52;22052:18;;44019:63:0;21730:346:1;44019:63:0;50410:34:::1;:16;50429:15:::0;;50410:34:::1;:::i;29840:339::-:0;30035:41;3660:10;30068:7;30035:18;:41::i;:::-;30027:103;;;;-1:-1:-1;;;30027:103:0;;;;;;;:::i;:::-;30143:28;30153:4;30159:2;30163:7;30143:9;:28::i;46387:424::-;46477:16;46511:23;46551:17;46561:6;46551:9;:17::i;:::-;46537:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;46537:32:0;;46511:58;;46580:15;46615:9;46610:170;46634:5;;46630:1;:9;46610:170;;;46679:6;-1:-1:-1;;;;;46665:20:0;:10;46673:1;46665:7;:10::i;:::-;-1:-1:-1;;;;;46665:20:0;;46661:108;;;46724:1;46706:6;46713:7;46706:15;;;;;;;;:::i;:::-;;;;;;;;;;:19;46744:9;;;;:::i;:::-;;;;46661:108;46641:3;;;;:::i;:::-;;;;46610:170;;;-1:-1:-1;46797:6:0;;46387:424;-1:-1:-1;;;46387:424:0:o;19178:321::-;19348:41;;;;;;;;;19379:10;19348:41;-1:-1:-1;;;;;19348:41:0;;;;;-1:-1:-1;;;19348:41:0;;;;;;;;;;;;;-1:-1:-1;;19486:5:0;;19458:24;;:5;:24;:::i;:::-;19457:34;;;;:::i;:::-;19441:50;;19337:162;19178:321;;;;;:::o;45455:234::-;4929:6;;-1:-1:-1;;;;;4929:6:0;44165:10;:21;;:44;;-1:-1:-1;44204:5:0;;-1:-1:-1;;;;;44204:5:0;44190:10;:19;44165:44;44143:116;;;;-1:-1:-1;;;44143:116:0;;;;;;;:::i;:::-;45586:9:::1;45581:101;45605:2;:9;45601:1;:13;45581:101;;;45660:7;45668:1;45660:10;;;;;;;;:::i;:::-;;;;;;;45636:14;:21;45651:2;45654:1;45651:5;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;45636:21:0::1;-1:-1:-1::0;;;;;45636:21:0::1;;;;;;;;;;;;:34;;;;45616:3;;;;;:::i;:::-;;;;45581:101;;44978:105:::0;4929:6;;-1:-1:-1;;;;;4929:6:0;44165:10;:21;;:44;;-1:-1:-1;44204:5:0;;-1:-1:-1;;;;;44204:5:0;44190:10;:19;44165:44;44143:116;;;;-1:-1:-1;;;44143:116:0;;;;;;;:::i;:::-;45056:19:::1;:12;45071:4:::0;;45056:19:::1;:::i;49933:347::-:0;4929:6;;-1:-1:-1;;;;;4929:6:0;44165:10;:21;;:44;;-1:-1:-1;44204:5:0;;-1:-1:-1;;;;;44204:5:0;44190:10;:19;44165:44;44143:116;;;;-1:-1:-1;;;44143:116:0;;;;;;;:::i;:::-;49999:16:::1;;;;;;;;;-1:-1:-1::0;;;;;49999:16:0::1;-1:-1:-1::0;;;;;49999:26:0::1;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;49999:28:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;49982:45:::0;;::::1;::::0;:14:::1;::::0;:45:::1;::::0;;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;50055:21:0::1;50038:14;50089:184;50113:14;:21:::0;50109:25;::::1;50089:184;;;50164:14;50179:1;50164:17;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;50220:16:::1;:19:::0;;-1:-1:-1;;;;;50164:17:0;;::::1;::::0;50156:105:::1;::::0;50243:3:::1;::::0;50237:1;;50220:19;::::1;;;;;:::i;:::-;;;;;;;;;50211:6;:28;;;;:::i;:::-;50210:36;;;;:::i;:::-;50156:105;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;50136:3:0;::::1;::::0;::::1;:::i;:::-;;;;50089:184;;;;49971:309;49933:347::o:0;45091:92::-;4929:6;;-1:-1:-1;;;;;4929:6:0;44165:10;:21;;:44;;-1:-1:-1;44204:5:0;;-1:-1:-1;;;;;44204:5:0;44190:10;:19;44165:44;44143:116;;;;-1:-1:-1;;;44143:116:0;;;;;;;:::i;:::-;45156:13:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;45156:19:0::1;-1:-1:-1::0;;;;45156:19:0;;::::1;::::0;;;::::1;::::0;;45091:92::o;47714:798::-;47816:10;47777:21;47801:26;;;:14;:26;;;;;;47846:15;;-1:-1:-1;;;47846:15:0;;;;47838:54;;;;-1:-1:-1;;;47838:54:0;;13109:2:1;47838:54:0;;;13091:21:1;13148:2;13128:18;;;13121:30;13187:28;13167:18;;;13160:56;13233:18;;47838:54:0;12907:350:1;47838:54:0;47918:13;47911:3;:20;;47903:71;;;;-1:-1:-1;;;47903:71:0;;22633:2:1;47903:71:0;;;22615:21:1;22672:2;22652:18;;;22645:30;22711:34;22691:18;;;22684:62;-1:-1:-1;;;22762:18:1;;;22755:36;22808:19;;47903:71:0;22431:402:1;47903:71:0;48022:11;;:15;;48036:1;48022:15;:::i;:::-;48013:5;;48007:11;;:3;:11;:::i;:::-;:30;;47985:113;;;;-1:-1:-1;;;47985:113:0;;;;;;;:::i;:::-;48171:3;48159:8;;48153:3;48145:5;;:11;;;;:::i;:::-;:22;;;;:::i;:::-;48144:30;;;;:::i;:::-;48131:9;:43;;48109:115;;;;-1:-1:-1;;;48109:115:0;;;;;;;:::i;:::-;48281:10;48266:26;;;;:14;:26;;;;;;:32;;48295:3;;48266:32;:::i;:::-;48252:10;48237:26;;;;:14;:26;;;;;:61;;;;48309:151;48333:3;48329:1;:7;48309:151;;;48376:5;;48396:30;48406:10;48376:5;48396:9;:30::i;:::-;48441:5;:7;;;:5;:7;;;:::i;:::-;;;;;;48343:117;48338:3;;;;;:::i;:::-;;;;48309:151;;;-1:-1:-1;48475:29:0;;;48488:10;9883:51:1;;9965:2;9950:18;;9943:34;;;48475:29:0;;9856:18:1;48475:29:0;;;;;;;;47766:746;47714:798;:::o;30250:185::-;30388:39;30405:4;30411:2;30415:7;30388:39;;;;;;;;;;;;:16;:39::i;45697:238::-;4929:6;;-1:-1:-1;;;;;4929:6:0;44165:10;:21;;:44;;-1:-1:-1;44204:5:0;;-1:-1:-1;;;;;44204:5:0;44190:10;:19;44165:44;44143:116;;;;-1:-1:-1;;;44143:116:0;;;;;;;:::i;:::-;45830:9:::1;45825:103;45849:2;:9;45845:1;:13;45825:103;;;45906:7;45914:1;45906:10;;;;;;;;:::i;:::-;;;;;;;45880:16;:23;45897:2;45900:1;45897:5;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;45880:23:0::1;-1:-1:-1::0;;;;;45880:23:0::1;;;;;;;;;;;;:36;;;;45860:3;;;;;:::i;:::-;;;;45825:103;;27225:239:::0;27297:7;27333:16;;;:7;:16;;;;;;-1:-1:-1;;;;;27333:16:0;27368:19;27360:73;;;;-1:-1:-1;;;27360:73:0;;17642:2:1;27360:73:0;;;17624:21:1;17681:2;17661:18;;;17654:30;17720:34;17700:18;;;17693:62;-1:-1:-1;;;17771:18:1;;;17764:39;17820:19;;27360:73:0;17440:405:1;43809:31:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;43809:31:0;;-1:-1:-1;43809:31:0;:::o;26955:208::-;27027:7;-1:-1:-1;;;;;27055:19:0;;27047:74;;;;-1:-1:-1;;;27047:74:0;;17231:2:1;27047:74:0;;;17213:21:1;17270:2;17250:18;;;17243:30;17309:34;17289:18;;;17282:62;-1:-1:-1;;;17360:18:1;;;17353:40;17410:19;;27047:74:0;17029:406:1;27047:74:0;-1:-1:-1;;;;;;27139:16:0;;;;;:9;:16;;;;;;;26955:208::o;5507:103::-;4929:6;;-1:-1:-1;;;;;4929:6:0;3660:10;5076:23;5068:68;;;;-1:-1:-1;;;5068:68:0;;19231:2:1;5068:68:0;;;19213:21:1;;;19250:18;;;19243:30;19309:34;19289:18;;;19282:62;19361:18;;5068:68:0;19029:356:1;5068:68:0;5572:30:::1;5599:1;5572:18;:30::i;:::-;5507:103::o:0;45943:234::-;4929:6;;-1:-1:-1;;;;;4929:6:0;44165:10;:21;;:44;;-1:-1:-1;44204:5:0;;-1:-1:-1;;;;;44204:5:0;44190:10;:19;44165:44;44143:116;;;;-1:-1:-1;;;44143:116:0;;;;;;;:::i;:::-;46074:9:::1;46069:101;46093:2;:9;46089:1;:13;46069:101;;;46148:7;46156:1;46148:10;;;;;;;;:::i;:::-;;;;;;;46124:14;:21;46139:2;46142:1;46139:5;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;46124:21:0::1;-1:-1:-1::0;;;;;46124:21:0::1;;;;;;;;;;;;:34;;;;46104:3;;;;;:::i;:::-;;;;46069:101;;47103:603:::0;47203:10;47162:21;47186:28;;;:16;:28;;;;;;47233:20;;;;47225:69;;;;-1:-1:-1;;;47225:69:0;;18052:2:1;47225:69:0;;;18034:21:1;18091:2;18071:18;;;18064:30;18130:34;18110:18;;;18103:62;-1:-1:-1;;;18181:18:1;;;18174:34;18225:19;;47225:69:0;17850:400:1;47225:69:0;47342:11;;:15;;47356:1;47342:15;:::i;:::-;47333:5;;47327:11;;:3;:11;:::i;:::-;:30;;47305:113;;;;-1:-1:-1;;;47305:113:0;;;;;;;:::i;:::-;47479:10;47462:28;;;;:16;:28;;;;;;:34;;47493:3;;47462:34;:::i;:::-;47448:10;47431:28;;;;:16;:28;;;;;:65;;;;47507:151;47531:3;47527:1;:7;47507:151;;;47574:5;;47594:30;47604:10;47574:5;47594:9;:30::i;:::-;47639:5;:7;;;:5;:7;;;:::i;:::-;;;;;;47541:117;47536:3;;;;;:::i;:::-;;;;47507:151;;;-1:-1:-1;47673:25:0;;;47682:10;9883:51:1;;9965:2;9950:18;;9943:34;;;47673:25:0;;9856:18:1;47673:25:0;9701:282:1;45191:86:0;4929:6;;-1:-1:-1;;;;;4929:6:0;44165:10;:21;;:44;;-1:-1:-1;44204:5:0;;-1:-1:-1;;;;;44204:5:0;44190:10;:19;44165:44;44143:116;;;;-1:-1:-1;;;44143:116:0;;;;;;;:::i;:::-;45253:10:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;45253:16:0::1;-1:-1:-1::0;;;;45253:16:0;;::::1;::::0;;;::::1;::::0;;45191:86::o;42924:124::-;4929:6;;-1:-1:-1;;;;;4929:6:0;44165:10;:21;;:44;;-1:-1:-1;44204:5:0;;-1:-1:-1;;;;;44204:5:0;44190:10;:19;44165:44;44143:116;;;;-1:-1:-1;;;44143:116:0;;;;;;;:::i;:::-;43009:31:::1;43023:9;43034:5;43009:13;:31::i;44760:91::-:0;4929:6;;-1:-1:-1;;;;;4929:6:0;44165:10;:21;;:44;;-1:-1:-1;44204:5:0;;-1:-1:-1;;;;;44204:5:0;44190:10;:19;44165:44;44143:116;;;;-1:-1:-1;;;44143:116:0;;;;;;;:::i;:::-;44827:5:::1;:16:::0;44760:91::o;27700:104::-;27756:13;27789:7;27782:14;;;;;:::i;48520:779::-;48609:10;48570:21;48594:26;;;:14;:26;;;;;;48641:13;;-1:-1:-1;;;48641:13:0;;;;48633:47;;;;-1:-1:-1;;;48633:47:0;;22283:2:1;48633:47:0;;;22265:21:1;22322:2;22302:18;;;22295:30;-1:-1:-1;;;22341:18:1;;;22334:51;22402:18;;48633:47:0;22081:345:1;48633:47:0;48715:1;48699:13;:17;48691:52;;;;-1:-1:-1;;;48691:52:0;;20008:2:1;48691:52:0;;;19990:21:1;20047:2;20027:18;;;20020:30;-1:-1:-1;;;20066:18:1;;;20059:52;20128:18;;48691:52:0;19806:346:1;48691:52:0;48789:11;;:15;;48803:1;48789:15;:::i;:::-;48776:5;;:9;;48784:1;48776:9;:::i;:::-;:28;;48754:111;;;;-1:-1:-1;;;48754:111:0;;;;;;;:::i;:::-;48927:16;;48898:21;48908:10;48898:9;:21::i;:::-;:25;;48922:1;48898:25;:::i;:::-;:45;;48876:128;;;;-1:-1:-1;;;48876:128:0;;13821:2:1;48876:128:0;;;13803:21:1;13860:2;13840:18;;;13833:30;13899:34;13879:18;;;13872:62;-1:-1:-1;;;13950:18:1;;;13943:31;13991:19;;48876:128:0;13619:397:1;48876:128:0;49036:5;;49023:9;:18;;49015:53;;;;-1:-1:-1;;;49015:53:0;;;;;;;:::i;:::-;49123:10;49108:26;;;;:14;:26;;;;;;:30;;49137:1;;49108:30;:::i;:::-;49094:10;49079:26;;;;:14;:26;;;;;:59;;;;49173:5;;49151:28;;49094:10;49151:9;:28::i;:::-;49190:5;:7;;;:5;:7;;;:::i;:::-;;;;;;49208:28;49218:10;49230:5;;49208:9;:28::i;:::-;49247:5;:7;;;:5;:7;;;:::i;:::-;;;;-1:-1:-1;;49272:19:0;;;49277:10;9883:51:1;;49289:1:0;9965:2:1;9950:18;;9943:34;49272:19:0;;9856:18:1;49272:19:0;;;;;;;;48559:740;48520:779::o;29383:155::-;29478:52;3660:10;29511:8;29521;29478:18;:52::i;30506:328::-;30681:41;3660:10;30714:7;30681:18;:41::i;:::-;30673:103;;;;-1:-1:-1;;;30673:103:0;;;;;;;:::i;:::-;30787:39;30801:4;30807:2;30811:7;30820:5;30787:13;:39::i;:::-;30506:328;;;;:::o;46185:87::-;4929:6;;-1:-1:-1;;;;;4929:6:0;44165:10;:21;;:44;;-1:-1:-1;44204:5:0;;-1:-1:-1;;;;;44204:5:0;44190:10;:19;44165:44;44143:116;;;;-1:-1:-1;;;44143:116:0;;;;;;;:::i;:::-;46250:5:::1;:14:::0;46185:87::o;27875:334::-;32409:4;32433:16;;;:7;:16;;;;;;27948:13;;-1:-1:-1;;;;;32433:16:0;27974:76;;;;-1:-1:-1;;;27974:76:0;;19592:2:1;27974:76:0;;;19574:21:1;19631:2;19611:18;;;19604:30;19670:34;19650:18;;;19643:62;-1:-1:-1;;;19721:18:1;;;19714:45;19776:19;;27974:76:0;19390:411:1;27974:76:0;28063:21;28087:10;:8;:10::i;:::-;28063:34;;28139:1;28121:7;28115:21;:25;:86;;;;;;;;;;;;;;;;;28167:7;28176:18;:7;:16;:18::i;:::-;28150:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;28115:86;28108:93;27875:334;-1:-1:-1;;;27875:334:0:o;49307:564::-;49369:10;;-1:-1:-1;;;49369:10:0;;;;49361:41;;;;-1:-1:-1;;;49361:41:0;;16459:2:1;49361:41:0;;;16441:21:1;16498:2;16478:18;;;16471:30;-1:-1:-1;;;16517:18:1;;;16510:48;16575:18;;49361:41:0;16257:342:1;49361:41:0;49428:5;;49421:3;:12;;:23;;;;;49443:1;49437:3;:7;49421:23;49413:60;;;;-1:-1:-1;;;49413:60:0;;15693:2:1;49413:60:0;;;15675:21:1;15732:2;15712:18;;;15705:30;15771:26;15751:18;;;15744:54;15815:18;;49413:60:0;15491:348:1;49413:60:0;49521:11;;:15;;49535:1;49521:15;:::i;:::-;49512:5;;49506:11;;:3;:11;:::i;:::-;:30;;49484:111;;;;-1:-1:-1;;;49484:111:0;;14574:2:1;49484:111:0;;;14556:21:1;14613:2;14593:18;;;14586:30;14652:33;14632:18;;;14625:61;14703:18;;49484:111:0;14372:355:1;49484:111:0;49635:3;49627:5;;:11;;;;:::i;:::-;49614:9;:24;;49606:59;;;;-1:-1:-1;;;49606:59:0;;;;;;;:::i;:::-;49681:9;49676:151;49700:3;49696:1;:7;49676:151;;;49743:5;;49763:30;49773:10;49743:5;49763:9;:30::i;:::-;49808:5;:7;;;:5;:7;;;:::i;:::-;;;;;;49710:117;49705:3;;;;;:::i;:::-;;;;49676:151;;;-1:-1:-1;49842:21:0;;;49847:10;9883:51:1;;9965:2;9950:18;;9943:34;;;49842:21:0;;9856:18:1;49842:21:0;9701:282:1;46280:99:0;4929:6;;-1:-1:-1;;;;;4929:6:0;44165:10;:21;;:44;;-1:-1:-1;44204:5:0;;-1:-1:-1;;;;;44204:5:0;44190:10;:19;44165:44;44143:116;;;;-1:-1:-1;;;44143:116:0;;;;;;;:::i;:::-;46351:8:::1;:20:::0;46280:99::o;45285:96::-;4929:6;;-1:-1:-1;;;;;4929:6:0;44165:10;:21;;:44;;-1:-1:-1;44204:5:0;;-1:-1:-1;;;;;44204:5:0;44190:10;:19;44165:44;44143:116;;;;-1:-1:-1;;;44143:116:0;;;;;;;:::i;:::-;45352:15:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;45352:21:0::1;-1:-1:-1::0;;;;45352:21:0;;::::1;::::0;;;::::1;::::0;;45285:96::o;5765:201::-;4929:6;;-1:-1:-1;;;;;4929:6:0;3660:10;5076:23;5068:68;;;;-1:-1:-1;;;5068:68:0;;19231:2:1;5068:68:0;;;19213:21:1;;;19250:18;;;19243:30;19309:34;19289:18;;;19282:62;19361:18;;5068:68:0;19029:356:1;5068:68:0;-1:-1:-1;;;;;5854:22:0;::::1;5846:73;;;::::0;-1:-1:-1;;;5846:73:0;;12296:2:1;5846:73:0::1;::::0;::::1;12278:21:1::0;12335:2;12315:18;;;12308:30;12374:34;12354:18;;;12347:62;-1:-1:-1;;;12425:18:1;;;12418:36;12471:19;;5846:73:0::1;12094:402:1::0;5846:73:0::1;5930:28;5949:8;5930:18;:28::i;:::-;5765:201:::0;:::o;44859:111::-;4929:6;;-1:-1:-1;;;;;4929:6:0;44165:10;:21;;:44;;-1:-1:-1;44204:5:0;;-1:-1:-1;;;;;44204:5:0;44190:10;:19;44165:44;44143:116;;;;-1:-1:-1;;;44143:116:0;;;;;;;:::i;:::-;44936:11:::1;:26:::0;44859:111::o;18132:283::-;18262:4;-1:-1:-1;;;;;;18304:50:0;;-1:-1:-1;;;18304:50:0;;:103;;;18371:36;18395:11;18371:23;:36::i;36490:174::-;36565:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;36565:29:0;-1:-1:-1;;;;;36565:29:0;;;;;;;;:24;;36619:23;36565:24;36619:14;:23::i;:::-;-1:-1:-1;;;;;36610:46:0;;;;;;;;;;;36490:174;;:::o;32638:348::-;32731:4;32433:16;;;:7;:16;;;;;;-1:-1:-1;;;;;32433:16:0;32748:73;;;;-1:-1:-1;;;32748:73:0;;16046:2:1;32748:73:0;;;16028:21:1;16085:2;16065:18;;;16058:30;16124:34;16104:18;;;16097:62;-1:-1:-1;;;16175:18:1;;;16168:42;16227:19;;32748:73:0;15844:408:1;32748:73:0;32832:13;32848:23;32863:7;32848:14;:23::i;:::-;32832:39;;32901:5;-1:-1:-1;;;;;32890:16:0;:7;-1:-1:-1;;;;;32890:16:0;;:51;;;;32934:7;-1:-1:-1;;;;;32910:31:0;:20;32922:7;32910:11;:20::i;:::-;-1:-1:-1;;;;;32910:31:0;;32890:51;:87;;;-1:-1:-1;;;;;;29730:25:0;;;29706:4;29730:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;32945:32;32882:96;32638:348;-1:-1:-1;;;;32638:348:0:o;35747:625::-;35906:4;-1:-1:-1;;;;;35879:31:0;:23;35894:7;35879:14;:23::i;:::-;-1:-1:-1;;;;;35879:31:0;;35871:81;;;;-1:-1:-1;;;35871:81:0;;12703:2:1;35871:81:0;;;12685:21:1;12742:2;12722:18;;;12715:30;12781:34;12761:18;;;12754:62;-1:-1:-1;;;12832:18:1;;;12825:35;12877:19;;35871:81:0;12501:401:1;35871:81:0;-1:-1:-1;;;;;35971:16:0;;35963:65;;;;-1:-1:-1;;;35963:65:0;;14934:2:1;35963:65:0;;;14916:21:1;14973:2;14953:18;;;14946:30;15012:34;14992:18;;;14985:62;-1:-1:-1;;;15063:18:1;;;15056:34;15107:19;;35963:65:0;14732:400:1;35963:65:0;36145:29;36162:1;36166:7;36145:8;:29::i;:::-;-1:-1:-1;;;;;36187:15:0;;;;;;:9;:15;;;;;:20;;36206:1;;36187:15;:20;;36206:1;;36187:20;:::i;:::-;;;;-1:-1:-1;;;;;;;36218:13:0;;;;;;:9;:13;;;;;:18;;36235:1;;36218:13;:18;;36235:1;;36218:18;:::i;:::-;;;;-1:-1:-1;;36247:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;36247:21:0;-1:-1:-1;;;;;36247:21:0;;;;;;;;;36286:27;;36247:16;;36286:27;;;;;;;28683:341;28613:411;;:::o;33328:110::-;33404:26;33414:2;33418:7;33404:26;;;;;;;;;;;;:9;:26::i;6126:191::-;6219:6;;;-1:-1:-1;;;;;6236:17:0;;;-1:-1:-1;;;;;;6236:17:0;;;;;;;6269:40;;6219:6;;;6236:17;6219:6;;6269:40;;6200:16;;6269:40;6189:128;6126:191;:::o;18932:199::-;19026:5;19017;:14;;19009:53;;;;-1:-1:-1;;;19009:53:0;;11522:2:1;19009:53:0;;;11504:21:1;11561:2;11541:18;;;11534:30;11600:28;11580:18;;;11573:56;11646:18;;19009:53:0;11320:350:1;19009:53:0;19086:37;;;;;;;;;-1:-1:-1;;;;;19086:37:0;;;;;;;;;;;;;;;;;19073:10;:50;;-1:-1:-1;;;19073:50:0;;;-1:-1:-1;;;;;;19073:50:0;;;;;;;;;;;;18932:199::o;36806:315::-;36961:8;-1:-1:-1;;;;;36952:17:0;:5;-1:-1:-1;;;;;36952:17:0;;;36944:55;;;;-1:-1:-1;;;36944:55:0;;15339:2:1;36944:55:0;;;15321:21:1;15378:2;15358:18;;;15351:30;15417:27;15397:18;;;15390:55;15462:18;;36944:55:0;15137:349:1;36944:55:0;-1:-1:-1;;;;;37010:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;37010:46:0;;;;;;;;;;37072:41;;11044::1;;;37072::0;;11017:18:1;37072:41:0;;;;;;;36806:315;;;:::o;31716:::-;31873:28;31883:4;31889:2;31893:7;31873:9;:28::i;:::-;31920:48;31943:4;31949:2;31953:7;31962:5;31920:22;:48::i;:::-;31912:111;;;;-1:-1:-1;;;31912:111:0;;;;;;;:::i;46819:105::-;46871:13;46904:12;46897:19;;;;;:::i;1142:723::-;1198:13;1419:10;1415:53;;-1:-1:-1;;1446:10:0;;;;;;;;;;;;-1:-1:-1;;;1446:10:0;;;;;1142:723::o;1415:53::-;1493:5;1478:12;1534:78;1541:9;;1534:78;;1567:8;;;;:::i;:::-;;-1:-1:-1;1590:10:0;;-1:-1:-1;1598:2:0;1590:10;;:::i;:::-;;;1534:78;;;1622:19;1654:6;1644:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1644:17:0;;1622:39;;1672:154;1679:10;;1672:154;;1706:11;1716:1;1706:11;;:::i;:::-;;-1:-1:-1;1775:10:0;1783:2;1775:5;:10;:::i;:::-;1762:24;;:2;:24;:::i;:::-;1749:39;;1732:6;1739;1732:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;1732:56:0;;;;;;;;-1:-1:-1;1803:11:0;1812:2;1803:11;;:::i;:::-;;;1672:154;;26586:305;26688:4;-1:-1:-1;;;;;;26725:40:0;;-1:-1:-1;;;26725:40:0;;:105;;-1:-1:-1;;;;;;;26782:48:0;;-1:-1:-1;;;26782:48:0;26725:105;:158;;;-1:-1:-1;;;;;;;;;;17749:40:0;;;26847:36;17640:157;33665:321;33795:18;33801:2;33805:7;33795:5;:18::i;:::-;33846:54;33877:1;33881:2;33885:7;33894:5;33846:22;:54::i;:::-;33824:154;;;;-1:-1:-1;;;33824:154:0;;;;;;;:::i;37686:799::-;37841:4;-1:-1:-1;;;;;37862:13:0;;7852:19;:23;37858:620;;37898:72;;-1:-1:-1;;;37898:72:0;;-1:-1:-1;;;;;37898:36:0;;;;;:72;;3660:10;;37949:4;;37955:7;;37964:5;;37898:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37898:72:0;;;;;;;;-1:-1:-1;;37898:72:0;;;;;;;;;;;;:::i;:::-;;;37894:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38140:13:0;;38136:272;;38183:60;;-1:-1:-1;;;38183:60:0;;;;;;;:::i;38136:272::-;38358:6;38352:13;38343:6;38339:2;38335:15;38328:38;37894:529;-1:-1:-1;;;;;;38021:51:0;-1:-1:-1;;;38021:51:0;;-1:-1:-1;38014:58:0;;37858:620;-1:-1:-1;38462:4:0;37686:799;;;;;;:::o;34322:439::-;-1:-1:-1;;;;;34402:16:0;;34394:61;;;;-1:-1:-1;;;34394:61:0;;18457:2:1;34394:61:0;;;18439:21:1;;;18476:18;;;18469:30;18535:34;18515:18;;;18508:62;18587:18;;34394:61:0;18255:356:1;34394:61:0;32409:4;32433:16;;;:7;:16;;;;;;-1:-1:-1;;;;;32433:16:0;:30;34466:58;;;;-1:-1:-1;;;34466:58:0;;13464:2:1;34466:58:0;;;13446:21:1;13503:2;13483:18;;;13476:30;13542;13522:18;;;13515:58;13590:18;;34466:58:0;13262:352:1;34466:58:0;-1:-1:-1;;;;;34595:13:0;;;;;;:9;:13;;;;;:18;;34612:1;;34595:13;:18;;34612:1;;34595:18;:::i;:::-;;;;-1:-1:-1;;34624:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;34624:21:0;-1:-1:-1;;;;;34624:21:0;;;;;;;;34663:33;;34624:16;;;34663:33;;34624:16;;34663:33;50089:184:::1;49971:309;49933:347::o:0;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14:673:1;68:5;121:3;114:4;106:6;102:17;98:27;88:55;;139:1;136;129:12;88:55;175:6;162:20;201:4;225:60;241:43;281:2;241:43;:::i;:::-;225:60;:::i;:::-;307:3;331:2;326:3;319:15;359:2;354:3;350:12;343:19;;394:2;386:6;382:15;446:3;441:2;435;432:1;428:10;420:6;416:23;412:32;409:41;406:61;;;463:1;460;453:12;406:61;485:1;495:163;509:2;506:1;503:9;495:163;;;566:17;;554:30;;604:12;;;;636;;;;527:1;520:9;495:163;;;-1:-1:-1;676:5:1;;14:673;-1:-1:-1;;;;;;;14:673:1:o;692:160::-;757:20;;813:13;;806:21;796:32;;786:60;;842:1;839;832:12;786:60;692:160;;;:::o;857:247::-;916:6;969:2;957:9;948:7;944:23;940:32;937:52;;;985:1;982;975:12;937:52;1024:9;1011:23;1043:31;1068:5;1043:31;:::i;1109:388::-;1177:6;1185;1238:2;1226:9;1217:7;1213:23;1209:32;1206:52;;;1254:1;1251;1244:12;1206:52;1293:9;1280:23;1312:31;1337:5;1312:31;:::i;:::-;1362:5;-1:-1:-1;1419:2:1;1404:18;;1391:32;1432:33;1391:32;1432:33;:::i;:::-;1484:7;1474:17;;;1109:388;;;;;:::o;1502:456::-;1579:6;1587;1595;1648:2;1636:9;1627:7;1623:23;1619:32;1616:52;;;1664:1;1661;1654:12;1616:52;1703:9;1690:23;1722:31;1747:5;1722:31;:::i;:::-;1772:5;-1:-1:-1;1829:2:1;1814:18;;1801:32;1842:33;1801:32;1842:33;:::i;:::-;1502:456;;1894:7;;-1:-1:-1;;;1948:2:1;1933:18;;;;1920:32;;1502:456::o;1963:1108::-;2058:6;2066;2074;2082;2135:3;2123:9;2114:7;2110:23;2106:33;2103:53;;;2152:1;2149;2142:12;2103:53;2191:9;2178:23;2210:31;2235:5;2210:31;:::i;:::-;2260:5;-1:-1:-1;2284:2:1;2323:18;;;2310:32;2351:33;2310:32;2351:33;:::i;:::-;2403:7;-1:-1:-1;2457:2:1;2442:18;;2429:32;;-1:-1:-1;2512:2:1;2497:18;;2484:32;2535:18;2565:14;;;2562:34;;;2592:1;2589;2582:12;2562:34;2630:6;2619:9;2615:22;2605:32;;2675:7;2668:4;2664:2;2660:13;2656:27;2646:55;;2697:1;2694;2687:12;2646:55;2733:2;2720:16;2755:2;2751;2748:10;2745:36;;;2761:18;;:::i;:::-;2803:53;2846:2;2827:13;;-1:-1:-1;;2823:27:1;2819:36;;2803:53;:::i;:::-;2790:66;;2879:2;2872:5;2865:17;2919:7;2914:2;2909;2905;2901:11;2897:20;2894:33;2891:53;;;2940:1;2937;2930:12;2891:53;2995:2;2990;2986;2982:11;2977:2;2970:5;2966:14;2953:45;3039:1;3034:2;3029;3022:5;3018:14;3014:23;3007:34;;3060:5;3050:15;;;;;1963:1108;;;;;;;:::o;3076:315::-;3141:6;3149;3202:2;3190:9;3181:7;3177:23;3173:32;3170:52;;;3218:1;3215;3208:12;3170:52;3257:9;3244:23;3276:31;3301:5;3276:31;:::i;:::-;3326:5;-1:-1:-1;3350:35:1;3381:2;3366:18;;3350:35;:::i;:::-;3340:45;;3076:315;;;;;:::o;3396:::-;3464:6;3472;3525:2;3513:9;3504:7;3500:23;3496:32;3493:52;;;3541:1;3538;3531:12;3493:52;3580:9;3567:23;3599:31;3624:5;3599:31;:::i;:::-;3649:5;3701:2;3686:18;;;;3673:32;;-1:-1:-1;;;3396:315:1:o;3716:967::-;3811:6;3842:2;3885;3873:9;3864:7;3860:23;3856:32;3853:52;;;3901:1;3898;3891:12;3853:52;3934:9;3928:16;3967:18;3959:6;3956:30;3953:50;;;3999:1;3996;3989:12;3953:50;4022:22;;4075:4;4067:13;;4063:27;-1:-1:-1;4053:55:1;;4104:1;4101;4094:12;4053:55;4133:2;4127:9;4156:60;4172:43;4212:2;4172:43;:::i;4156:60::-;4238:3;4262:2;4257:3;4250:15;4290:2;4285:3;4281:12;4274:19;;4321:2;4317;4313:11;4369:7;4364:2;4358;4355:1;4351:10;4347:2;4343:19;4339:28;4336:41;4333:61;;;4390:1;4387;4380:12;4333:61;4412:1;4403:10;;4422:231;4436:2;4433:1;4430:9;4422:231;;;4500:3;4494:10;4517:31;4542:5;4517:31;:::i;:::-;4561:18;;4454:1;4447:9;;;;;4599:12;;;;4631;;4422:231;;;-1:-1:-1;4672:5:1;3716:967;-1:-1:-1;;;;;;;3716:967:1:o;4688:1226::-;4806:6;4814;4867:2;4855:9;4846:7;4842:23;4838:32;4835:52;;;4883:1;4880;4873:12;4835:52;4923:9;4910:23;4952:18;4993:2;4985:6;4982:14;4979:34;;;5009:1;5006;4999:12;4979:34;5047:6;5036:9;5032:22;5022:32;;5092:7;5085:4;5081:2;5077:13;5073:27;5063:55;;5114:1;5111;5104:12;5063:55;5150:2;5137:16;5172:4;5196:60;5212:43;5252:2;5212:43;:::i;5196:60::-;5278:3;5302:2;5297:3;5290:15;5330:2;5325:3;5321:12;5314:19;;5361:2;5357;5353:11;5409:7;5404:2;5398;5395:1;5391:10;5387:2;5383:19;5379:28;5376:41;5373:61;;;5430:1;5427;5420:12;5373:61;5452:1;5443:10;;5462:238;5476:2;5473:1;5470:9;5462:238;;;5547:3;5534:17;5564:31;5589:5;5564:31;:::i;:::-;5608:18;;5494:1;5487:9;;;;;5646:12;;;;5678;;5462:238;;;-1:-1:-1;5719:5:1;-1:-1:-1;;5762:18:1;;5749:32;;-1:-1:-1;;5793:16:1;;;5790:36;;;5822:1;5819;5812:12;5790:36;;5845:63;5900:7;5889:8;5878:9;5874:24;5845:63;:::i;5919:615::-;6005:6;6013;6066:2;6054:9;6045:7;6041:23;6037:32;6034:52;;;6082:1;6079;6072:12;6034:52;6122:9;6109:23;6151:18;6192:2;6184:6;6181:14;6178:34;;;6208:1;6205;6198:12;6178:34;6246:6;6235:9;6231:22;6221:32;;6291:7;6284:4;6280:2;6276:13;6272:27;6262:55;;6313:1;6310;6303:12;6262:55;6353:2;6340:16;6379:2;6371:6;6368:14;6365:34;;;6395:1;6392;6385:12;6365:34;6448:7;6443:2;6433:6;6430:1;6426:14;6422:2;6418:23;6414:32;6411:45;6408:65;;;6469:1;6466;6459:12;6408:65;6500:2;6492:11;;;;;6522:6;;-1:-1:-1;5919:615:1;;-1:-1:-1;;;;5919:615:1:o;6539:180::-;6595:6;6648:2;6636:9;6627:7;6623:23;6619:32;6616:52;;;6664:1;6661;6654:12;6616:52;6687:26;6703:9;6687:26;:::i;6724:245::-;6782:6;6835:2;6823:9;6814:7;6810:23;6806:32;6803:52;;;6851:1;6848;6841:12;6803:52;6890:9;6877:23;6909:30;6933:5;6909:30;:::i;6974:249::-;7043:6;7096:2;7084:9;7075:7;7071:23;7067:32;7064:52;;;7112:1;7109;7102:12;7064:52;7144:9;7138:16;7163:30;7187:5;7163:30;:::i;7228:592::-;7299:6;7307;7360:2;7348:9;7339:7;7335:23;7331:32;7328:52;;;7376:1;7373;7366:12;7328:52;7416:9;7403:23;7445:18;7486:2;7478:6;7475:14;7472:34;;;7502:1;7499;7492:12;7472:34;7540:6;7529:9;7525:22;7515:32;;7585:7;7578:4;7574:2;7570:13;7566:27;7556:55;;7607:1;7604;7597:12;7556:55;7647:2;7634:16;7673:2;7665:6;7662:14;7659:34;;;7689:1;7686;7679:12;7659:34;7734:7;7729:2;7720:6;7716:2;7712:15;7708:24;7705:37;7702:57;;;7755:1;7752;7745:12;7825:180;7884:6;7937:2;7925:9;7916:7;7912:23;7908:32;7905:52;;;7953:1;7950;7943:12;7905:52;-1:-1:-1;7976:23:1;;7825:180;-1:-1:-1;7825:180:1:o;8010:248::-;8078:6;8086;8139:2;8127:9;8118:7;8114:23;8110:32;8107:52;;;8155:1;8152;8145:12;8107:52;-1:-1:-1;;8178:23:1;;;8248:2;8233:18;;;8220:32;;-1:-1:-1;8010:248:1:o;8263:257::-;8304:3;8342:5;8336:12;8369:6;8364:3;8357:19;8385:63;8441:6;8434:4;8429:3;8425:14;8418:4;8411:5;8407:16;8385:63;:::i;:::-;8502:2;8481:15;-1:-1:-1;;8477:29:1;8468:39;;;;8509:4;8464:50;;8263:257;-1:-1:-1;;8263:257:1:o;8525:470::-;8704:3;8742:6;8736:13;8758:53;8804:6;8799:3;8792:4;8784:6;8780:17;8758:53;:::i;:::-;8874:13;;8833:16;;;;8896:57;8874:13;8833:16;8930:4;8918:17;;8896:57;:::i;:::-;8969:20;;8525:470;-1:-1:-1;;;;8525:470:1:o;9208:488::-;-1:-1:-1;;;;;9477:15:1;;;9459:34;;9529:15;;9524:2;9509:18;;9502:43;9576:2;9561:18;;9554:34;;;9624:3;9619:2;9604:18;;9597:31;;;9402:4;;9645:45;;9670:19;;9662:6;9645:45;:::i;:::-;9637:53;9208:488;-1:-1:-1;;;;;;9208:488:1:o;10267:632::-;10438:2;10490:21;;;10560:13;;10463:18;;;10582:22;;;10409:4;;10438:2;10661:15;;;;10635:2;10620:18;;;10409:4;10704:169;10718:6;10715:1;10712:13;10704:169;;;10779:13;;10767:26;;10848:15;;;;10813:12;;;;10740:1;10733:9;10704:169;;;-1:-1:-1;10890:3:1;;10267:632;-1:-1:-1;;;;;;10267:632:1:o;11096:219::-;11245:2;11234:9;11227:21;11208:4;11265:44;11305:2;11294:9;11290:18;11282:6;11265:44;:::i;11675:414::-;11877:2;11859:21;;;11916:2;11896:18;;;11889:30;11955:34;11950:2;11935:18;;11928:62;-1:-1:-1;;;12021:2:1;12006:18;;11999:48;12079:3;12064:19;;11675:414::o;14021:346::-;14223:2;14205:21;;;14262:2;14242:18;;;14235:30;-1:-1:-1;;;14296:2:1;14281:18;;14274:52;14358:2;14343:18;;14021:346::o;20559:397::-;20761:2;20743:21;;;20800:2;20780:18;;;20773:30;20839:34;20834:2;20819:18;;20812:62;-1:-1:-1;;;20905:2:1;20890:18;;20883:31;20946:3;20931:19;;20559:397::o;20961:346::-;21163:2;21145:21;;;21202:2;21182:18;;;21175:30;-1:-1:-1;;;21236:2:1;21221:18;;21214:52;21298:2;21283:18;;20961:346::o;21312:413::-;21514:2;21496:21;;;21553:2;21533:18;;;21526:30;21592:34;21587:2;21572:18;;21565:62;-1:-1:-1;;;21658:2:1;21643:18;;21636:47;21715:3;21700:19;;21312:413::o;23020:275::-;23091:2;23085:9;23156:2;23137:13;;-1:-1:-1;;23133:27:1;23121:40;;23191:18;23176:34;;23212:22;;;23173:62;23170:88;;;23238:18;;:::i;:::-;23274:2;23267:22;23020:275;;-1:-1:-1;23020:275:1:o;23300:183::-;23360:4;23393:18;23385:6;23382:30;23379:56;;;23415:18;;:::i;:::-;-1:-1:-1;23460:1:1;23456:14;23472:4;23452:25;;23300:183::o;23488:128::-;23528:3;23559:1;23555:6;23552:1;23549:13;23546:39;;;23565:18;;:::i;:::-;-1:-1:-1;23601:9:1;;23488:128::o;23621:120::-;23661:1;23687;23677:35;;23692:18;;:::i;:::-;-1:-1:-1;23726:9:1;;23621:120::o;23746:168::-;23786:7;23852:1;23848;23844:6;23840:14;23837:1;23834:21;23829:1;23822:9;23815:17;23811:45;23808:71;;;23859:18;;:::i;:::-;-1:-1:-1;23899:9:1;;23746:168::o;23919:125::-;23959:4;23987:1;23984;23981:8;23978:34;;;23992:18;;:::i;:::-;-1:-1:-1;24029:9:1;;23919:125::o;24049:258::-;24121:1;24131:113;24145:6;24142:1;24139:13;24131:113;;;24221:11;;;24215:18;24202:11;;;24195:39;24167:2;24160:10;24131:113;;;24262:6;24259:1;24256:13;24253:48;;;-1:-1:-1;;24297:1:1;24279:16;;24272:27;24049:258::o;24312:380::-;24391:1;24387:12;;;;24434;;;24455:61;;24509:4;24501:6;24497:17;24487:27;;24455:61;24562:2;24554:6;24551:14;24531:18;24528:38;24525:161;;;24608:10;24603:3;24599:20;24596:1;24589:31;24643:4;24640:1;24633:15;24671:4;24668:1;24661:15;24525:161;;24312:380;;;:::o;24697:135::-;24736:3;-1:-1:-1;;24757:17:1;;24754:43;;;24777:18;;:::i;:::-;-1:-1:-1;24824:1:1;24813:13;;24697:135::o;24837:112::-;24869:1;24895;24885:35;;24900:18;;:::i;:::-;-1:-1:-1;24934:9:1;;24837:112::o;24954:127::-;25015:10;25010:3;25006:20;25003:1;24996:31;25046:4;25043:1;25036:15;25070:4;25067:1;25060:15;25086:127;25147:10;25142:3;25138:20;25135:1;25128:31;25178:4;25175:1;25168:15;25202:4;25199:1;25192:15;25218:127;25279:10;25274:3;25270:20;25267:1;25260:31;25310:4;25307:1;25300:15;25334:4;25331:1;25324:15;25350:127;25411:10;25406:3;25402:20;25399:1;25392:31;25442:4;25439:1;25432:15;25466:4;25463:1;25456:15;25482:131;-1:-1:-1;;;;;25557:31:1;;25547:42;;25537:70;;25603:1;25600;25593:12;25618:131;-1:-1:-1;;;;;;25692:32:1;;25682:43;;25672:71;;25739:1;25736;25729:12
Swarm Source
ipfs://6ff68f2611b7722bd55be540093a9f6ea96f0794e12187d5040fb236dcd80c9b
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $2,776.5 | 0.042 | $116.61 |
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.