Contract Overview
[ Download CSV Export ]
Latest 25 internal transaction
[ Download CSV Export ]
Contract Name:
BADLizzys
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at cronoscan.com on 2022-08-19 */ // File: @openzeppelin/contracts/utils/Strings.sol // OpenZeppelin Contracts (last updated v4.7.0) (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; uint8 private constant _ADDRESS_LENGTH = 20; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } /** * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation. */ function toHexString(address addr) internal pure returns (string memory) { return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH); } } // File: @openzeppelin/contracts/utils/Address.sol // OpenZeppelin Contracts (last updated v4.7.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 /// @solidity memory-safe-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 (last updated v4.6.0) (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 `IERC721Receiver.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: @openzeppelin/contracts/token/ERC721/IERC721.sol // OpenZeppelin Contracts (last updated v4.7.0) (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`. * * 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; /** * @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 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 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 the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @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); } // File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol) pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Enumerable is IERC721 { /** * @dev Returns the total amount of tokens stored by the contract. */ function totalSupply() external view returns (uint256); /** * @dev Returns a token ID owned by `owner` at a given `index` of its token list. * Use along with {balanceOf} to enumerate all of ``owner``'s tokens. */ function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256); /** * @dev Returns a token ID at a given `index` of all the tokens stored by the contract. * Use along with {totalSupply} to enumerate all tokens. */ function tokenByIndex(uint256 index) external view returns (uint256); } // 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/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/token/ERC721/ERC721.sol // OpenZeppelin Contracts (last updated v4.7.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: address zero is not a valid owner"); 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: invalid token ID"); 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) { _requireMinted(tokenId); 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 overridden 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 token owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { _requireMinted(tokenId); 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: caller is not token 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: caller is not token 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) { address owner = ERC721.ownerOf(tokenId); return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == 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 an {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 an {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 Reverts if the `tokenId` has not been minted yet. */ function _requireMinted(uint256 tokenId) internal view virtual { require(_exists(tokenId), "ERC721: invalid token ID"); } /** * @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 { /// @solidity memory-safe-assembly 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: @openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol // OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/ERC721Enumerable.sol) pragma solidity ^0.8.0; /** * @dev This implements an optional extension of {ERC721} defined in the EIP that adds * enumerability of all the token ids in the contract as well as all token ids owned by each * account. */ abstract contract ERC721Enumerable is ERC721, IERC721Enumerable { // Mapping from owner to list of owned token IDs mapping(address => mapping(uint256 => uint256)) private _ownedTokens; // Mapping from token ID to index of the owner tokens list mapping(uint256 => uint256) private _ownedTokensIndex; // Array with all token ids, used for enumeration uint256[] private _allTokens; // Mapping from token id to position in the allTokens array mapping(uint256 => uint256) private _allTokensIndex; /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) { return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}. */ function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) { require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds"); return _ownedTokens[owner][index]; } /** * @dev See {IERC721Enumerable-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _allTokens.length; } /** * @dev See {IERC721Enumerable-tokenByIndex}. */ function tokenByIndex(uint256 index) public view virtual override returns (uint256) { require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds"); return _allTokens[index]; } /** * @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` cannot be the zero address. * - `to` cannot be the zero address. * * 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 override { super._beforeTokenTransfer(from, to, tokenId); if (from == address(0)) { _addTokenToAllTokensEnumeration(tokenId); } else if (from != to) { _removeTokenFromOwnerEnumeration(from, tokenId); } if (to == address(0)) { _removeTokenFromAllTokensEnumeration(tokenId); } else if (to != from) { _addTokenToOwnerEnumeration(to, tokenId); } } /** * @dev Private function to add a token to this extension's ownership-tracking data structures. * @param to address representing the new owner of the given token ID * @param tokenId uint256 ID of the token to be added to the tokens list of the given address */ function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private { uint256 length = ERC721.balanceOf(to); _ownedTokens[to][length] = tokenId; _ownedTokensIndex[tokenId] = length; } /** * @dev Private function to add a token to this extension's token tracking data structures. * @param tokenId uint256 ID of the token to be added to the tokens list */ function _addTokenToAllTokensEnumeration(uint256 tokenId) private { _allTokensIndex[tokenId] = _allTokens.length; _allTokens.push(tokenId); } /** * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for * gas optimizations e.g. when performing a transfer operation (avoiding double writes). * This has O(1) time complexity, but alters the order of the _ownedTokens array. * @param from address representing the previous owner of the given token ID * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address */ function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private { // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = ERC721.balanceOf(from) - 1; uint256 tokenIndex = _ownedTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary if (tokenIndex != lastTokenIndex) { uint256 lastTokenId = _ownedTokens[from][lastTokenIndex]; _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index } // This also deletes the contents at the last position of the array delete _ownedTokensIndex[tokenId]; delete _ownedTokens[from][lastTokenIndex]; } /** * @dev Private function to remove a token from this extension's token tracking data structures. * This has O(1) time complexity, but alters the order of the _allTokens array. * @param tokenId uint256 ID of the token to be removed from the tokens list */ function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private { // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and // then delete the last slot (swap and pop). uint256 lastTokenIndex = _allTokens.length - 1; uint256 tokenIndex = _allTokensIndex[tokenId]; // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding // an 'if' statement (like in _removeTokenFromOwnerEnumeration) uint256 lastTokenId = _allTokens[lastTokenIndex]; _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index // This also deletes the contents at the last position of the array delete _allTokensIndex[tokenId]; _allTokens.pop(); } } // File: @openzeppelin/contracts/security/Pausable.sol // OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (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 Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { 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/Counters.sol // OpenZeppelin Contracts v4.4.1 (utils/Counters.sol) pragma solidity ^0.8.0; /** * @title Counters * @author Matt Condon (@shrugs) * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number * of elements in a mapping, issuing ERC721 ids, or counting request ids. * * Include with `using Counters for Counters.Counter;` */ library Counters { struct Counter { // This variable should never be directly accessed by users of the library: interactions must be restricted to // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add // this feature: see https://github.com/ethereum/solidity/issues/4637 uint256 _value; // default: 0 } function current(Counter storage counter) internal view returns (uint256) { return counter._value; } function increment(Counter storage counter) internal { unchecked { counter._value += 1; } } function decrement(Counter storage counter) internal { uint256 value = counter._value; require(value > 0, "Counter: decrement overflow"); unchecked { counter._value = value - 1; } } function reset(Counter storage counter) internal { counter._value = 0; } } // File: contracts/BADLizzy.sol /* B.A.D Baby Alien Division ------------------------- Artist/Founder - Hawtchkiss (@DanielBHotchkis) Community Lead/Founder - Legendd (@ImDarrenB1) ------------------------- Contract Dev: @MatthewPaquette */ pragma solidity ^0.8.0; contract BADLizzys is ERC721Enumerable, Pausable, Ownable { using Counters for Counters.Counter; Counters.Counter private _mintCounter; // Maximum number of NFTs uint256 public _maxMintable = 10000; uint256 public _mintPrice = 250 ether; uint256 public _maxSwap = 15; uint256 public mintOffset = 797; // Settings uint256 public _maxMintPerTX = 10; // Base URI for metadata string public _prefixURI; // External Contracts IERC721Enumerable public immutable babyAlienContract; IERC721Enumerable public immutable vipFounders; IERC721Enumerable public immutable OGLizContract; // Mappings mapping (uint256 => bool) public babyTracker; mapping (uint256 => bool) public vipTracker; mapping (address => bool) public lizzyContracts; // Events event BurnToken(uint256 tokenID); event SetBaseURI(string newURI); event AirDrop(address[] indexed addrs); event MultiAirDrop(address adder, uint256 drops); event ToggleMintActive(bool mint1Active); event Mint(address indexed addr, uint256 amount, uint256 price); event ToggleTransferPause(bool paused); event UpdateTotalSupply(uint256 newSupply); event UpdatePrice(uint256 newPrice); event UpdateMaxMint(uint256 newMax); event Withdraw(uint256 amount); event AddSwapContract(address, bool); event UpdateMaxSwap(uint256); event BADClaim(uint256); event FoundersClaim(uint256); constructor( IERC721Enumerable _babyAlienContract, IERC721Enumerable _vipFounders, IERC721Enumerable _OGLizContract ) ERC721("BAD Lizzys", "BLIZ") { babyAlienContract = _babyAlienContract; vipFounders = _vipFounders; OGLizContract = _OGLizContract; } /////////////////// // URI Functions // /////////////////// function _baseURI() internal view override returns (string memory) { return _prefixURI; } function setBaseURI(string memory _uri) public onlyOwner { _prefixURI = _uri; emit SetBaseURI(_uri); } function airDrop(address[] memory addrs) public onlyOwner { require(addrs.length > 0, "airDrop: must specify at least one address"); for (uint256 i = 0; i < addrs.length; i++) { _mintItem(addrs[i]); } emit AirDrop(addrs); } function BADclaim() external whenNotPaused { require(babyAlienContract.balanceOf(msg.sender) >= 3); //Check Baby NFTs in wallet uint256 babyBal = babyAlienContract.balanceOf(msg.sender); uint256 mod = babyBal % 3; uint256 usableNFTs = babyBal - mod; uint256 checkedBal = 0; // Check each NFT to see if they've been used for (uint i = 0; i < usableNFTs; i++) { uint256 token = babyAlienContract.tokenOfOwnerByIndex(msg.sender, i); if (babyTracker[token] != true) { babyTracker[token] = true; checkedBal += 1; } } require(checkedBal >= 3, "BADclaim: wallet does not contain 3 or more valid NFTs for claim"); uint256 qualify = checkedBal / 3; for (uint i = 0; i < qualify; i++) { _mintItem(msg.sender); } emit BADClaim(qualify); } function foundersClaim() external whenNotPaused { uint256 bal = vipFounders.balanceOf(msg.sender); require(bal > 0, "foundersClaim: wallet does not contain VIP Founders passes"); // Check each NFT to see if they've been used uint256 x = 0; for (uint i = 0; i < bal; i++) { uint256 token = vipFounders.tokenOfOwnerByIndex(msg.sender, i); if (vipTracker[token] != true) { vipTracker[token] = true; _mintItem(msg.sender); x += 1; } } emit FoundersClaim(x); } // Function will require approval to transfer token function lizSwap(address lizContract, uint256 amount) external whenNotPaused { require(lizzyContracts[lizContract] == true, "lizSwap: NFT contract to swap is not approved by dev"); require(IERC721(lizContract).balanceOf(msg.sender) >= amount, "lizSwap: sender does not have enough NFTs to swap"); require(amount <= _maxSwap, "lizSwap: swap amount exceeds maximum swap"); for (uint256 i = 0; i < amount; i++) { uint256 token = IERC721Enumerable(lizContract).tokenOfOwnerByIndex(msg.sender, 0); IERC721(lizContract).transferFrom(msg.sender, address(this), token); _mintItem(msg.sender); } } function ogSwap(uint256 amount) external whenNotPaused { require(OGLizContract.balanceOf(msg.sender) >= amount, "ogSwap: sender does not have enough NFTs to swap"); require(amount <= _maxSwap, "ogSwap: swap amount exceeds maximum swap"); for (uint256 i = 0; i < amount; i++) { uint256 token = OGLizContract.tokenOfOwnerByIndex(msg.sender, 0); OGLizContract.transferFrom(msg.sender, address(this), token); _safeMint(msg.sender, token); } } function mint(uint256 amount) external payable whenNotPaused { uint256 currentMintCount = _mintCounter.current(); require(currentMintCount < _maxMintable, "mint: no nfts left to mint"); require(currentMintCount + amount <= _maxMintable, "mint: not enough nfts passes available to mint that amount"); require(amount <= _maxMintPerTX, "mint: amount limit exceeded per transaction"); require(msg.value == amount * _mintPrice, "mint: value passed is not correct to mint that amount"); for (uint256 i = 0; i < amount; i++) { _mintItem(msg.sender); } emit Mint(msg.sender, amount, _mintPrice); } function _mintItem(address to) internal { _mintCounter.increment(); uint256 id = mintOffset + _mintCounter.current(); _safeMint(to, id); } function burnToken(uint256 tokenId) external virtual { require(_isApprovedOrOwner(msg.sender, tokenId), "burnToken: caller is not owner nor approved"); _burn(tokenId); emit BurnToken(tokenId); } ////////////////////// // State management // ////////////////////// function setMaxSwap(uint256 maxSwap) external onlyOwner { _maxSwap = maxSwap; emit UpdateMaxSwap(maxSwap); } function addSwapContract(address swapAddress, bool state) external onlyOwner { lizzyContracts[swapAddress] = state; emit AddSwapContract(swapAddress, state); } function toggleAllMintPause() external onlyOwner { paused() ? _unpause() : _pause(); emit ToggleTransferPause(paused()); } function updatePrice(uint256 newPrice) external onlyOwner { require(newPrice > 0, "updatePrice: new price must be greater than 0"); _mintPrice = newPrice; emit UpdatePrice(newPrice); } function updateTotalSupply(uint256 newSupply) external onlyOwner { require(newSupply > 0, "updateTotalSupply: new supply must be greater than 0"); _maxMintable = newSupply; emit UpdateTotalSupply(newSupply); } function updateMaxMintPerTX(uint256 newMax) external onlyOwner { require(newMax > 0, "updateMaxMintPerTX: new Max Mint must be greater than 0"); _maxMintPerTX = newMax; emit UpdateMaxMint(newMax); } function withdraw() external onlyOwner { require(address(this).balance > 0, "withdraw: contract balance must be greater than 0"); uint256 balance = address(this).balance; payable(msg.sender).transfer(balance); emit Withdraw(balance); } }
[{"inputs":[{"internalType":"contract IERC721Enumerable","name":"_babyAlienContract","type":"address"},{"internalType":"contract IERC721Enumerable","name":"_vipFounders","type":"address"},{"internalType":"contract IERC721Enumerable","name":"_OGLizContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"bool","name":"","type":"bool"}],"name":"AddSwapContract","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address[]","name":"addrs","type":"address[]"}],"name":"AirDrop","type":"event"},{"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":"uint256","name":"","type":"uint256"}],"name":"BADClaim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenID","type":"uint256"}],"name":"BurnToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"FoundersClaim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"price","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"adder","type":"address"},{"indexed":false,"internalType":"uint256","name":"drops","type":"uint256"}],"name":"MultiAirDrop","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":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"newURI","type":"string"}],"name":"SetBaseURI","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"mint1Active","type":"bool"}],"name":"ToggleMintActive","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"ToggleTransferPause","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":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"UpdateMaxMint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"UpdateMaxSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"UpdatePrice","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newSupply","type":"uint256"}],"name":"UpdateTotalSupply","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"BADclaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"OGLizContract","outputs":[{"internalType":"contract IERC721Enumerable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxMintPerTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxMintable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mintPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_prefixURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"swapAddress","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"addSwapContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"}],"name":"airDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"babyAlienContract","outputs":[{"internalType":"contract IERC721Enumerable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"babyTracker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"tokenId","type":"uint256"}],"name":"burnToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"foundersClaim","outputs":[],"stateMutability":"nonpayable","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"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"lizContract","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"lizSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lizzyContracts","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"mintOffset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ogSwap","outputs":[],"stateMutability":"nonpayable","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":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","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":[{"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":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSwap","type":"uint256"}],"name":"setMaxSwap","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":[],"name":"toggleAllMintPause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"uint256","name":"newMax","type":"uint256"}],"name":"updateMaxMintPerTX","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPrice","type":"uint256"}],"name":"updatePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSupply","type":"uint256"}],"name":"updateTotalSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vipFounders","outputs":[{"internalType":"contract IERC721Enumerable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"vipTracker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60e0604052612710600c55680d8d726b7177a80000600d55600f600e5561031d600f55600a6010553480156200003457600080fd5b506040516200397838038062003978833981016040819052620000579162000218565b604080518082018252600a815269424144204c697a7a797360b01b602080830191825283518085019094526004845263212624ad60e11b908401528151919291620000a59160009162000155565b508051620000bb90600190602084019062000155565b5050600a805460ff1916905550620000d333620000fb565b6001600160601b0319606093841b811660805291831b821660a05290911b1660c0526200029f565b600a80546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620001639062000262565b90600052602060002090601f016020900481019282620001875760008555620001d2565b82601f10620001a257805160ff1916838001178555620001d2565b82800160010185558215620001d2579182015b82811115620001d2578251825591602001919060010190620001b5565b50620001e0929150620001e4565b5090565b5b80821115620001e05760008155600101620001e5565b80516001600160a01b03811681146200021357600080fd5b919050565b6000806000606084860312156200022e57600080fd5b6200023984620001fb565b92506200024960208501620001fb565b91506200025960408501620001fb565b90509250925092565b600181811c908216806200027757607f821691505b602082108114156200029957634e487b7160e01b600052602260045260246000fd5b50919050565b60805160601c60a05160601c60c05160601c613668620003106000396000818161074801528181611f89015281816120ff01526121a60152600081816105d90152818161195a0152611a7f015260008181610861015281816111d80152818161127d015261134901526136686000f3fe6080604052600436106102865760003560e01c8063715018a61161015a578063b88d4fde116100c1578063e80a35581161007a578063e80a3558146107b0578063e985e9c5146107c6578063f2fde38b1461080f578063f7e9d4ce1461082f578063fae1c7291461084f578063fbd0e0bc1461088357600080fd5b8063b88d4fde146106e0578063c87b56dd14610700578063d146a80314610720578063d619d08614610736578063d7091b711461076a578063e298e5121461078057600080fd5b8063906eb4c511610113578063906eb4c51461063e57806391860f781461066e578063948e68bb1461068357806395d89b4114610698578063a0712d68146106ad578063a22cb465146106c057600080fd5b8063715018a6146105725780637b47ec1a14610587578063882f6643146105a757806389190322146105c75780638d6cc56d146105fb5780638da5cb5b1461061b57600080fd5b80632f745c59116101fe5780635c975abb116101b75780635c975abb146104cf5780635d9a20a6146104e75780636352211e146104fc57806366d49bab1461051c578063670437ea1461053c57806370a082311461055257600080fd5b80632f745c591461040a5780633ccfd60b1461042a57806342842e0e1461043f5780634f6ccce71461045f57806355f804b31461047f5780635b86ae261461049f57600080fd5b8063081812fc11610250578063081812fc14610348578063095ea7b3146103805780630e6e91d8146103a057806318160ddd146103c057806323b872dd146103d5578063274a32d3146103f557600080fd5b80622def031461028b578062b6849f146102ad57806301ffc9a7146102cd5780630387da421461030257806306fdde0314610326575b600080fd5b34801561029757600080fd5b506102ab6102a6366004613168565b6108a3565b005b3480156102b957600080fd5b506102ab6102c8366004613192565b610b95565b3480156102d957600080fd5b506102ed6102e8366004613246565b610c83565b60405190151581526020015b60405180910390f35b34801561030e57600080fd5b50610318600d5481565b6040519081526020016102f9565b34801561033257600080fd5b5061033b610cae565b6040516102f991906133d2565b34801561035457600080fd5b506103686103633660046132c9565b610d40565b6040516001600160a01b0390911681526020016102f9565b34801561038c57600080fd5b506102ab61039b366004613168565b610d67565b3480156103ac57600080fd5b506102ab6103bb3660046132c9565b610e78565b3480156103cc57600080fd5b50600854610318565b3480156103e157600080fd5b506102ab6103f0366004613074565b610ebc565b34801561040157600080fd5b506102ab610eed565b34801561041657600080fd5b50610318610425366004613168565b610f57565b34801561043657600080fd5b506102ab610fed565b34801561044b57600080fd5b506102ab61045a366004613074565b6110bf565b34801561046b57600080fd5b5061031861047a3660046132c9565b6110da565b34801561048b57600080fd5b506102ab61049a366004613280565b61116d565b3480156104ab57600080fd5b506102ed6104ba3660046132c9565b60136020526000908152604090205460ff1681565b3480156104db57600080fd5b50600a5460ff166102ed565b3480156104f357600080fd5b506102ab6111b8565b34801561050857600080fd5b506103686105173660046132c9565b61150f565b34801561052857600080fd5b506102ab6105373660046132c9565b61156f565b34801561054857600080fd5b50610318600f5481565b34801561055e57600080fd5b5061031861056d366004613026565b611619565b34801561057e57600080fd5b506102ab61169f565b34801561059357600080fd5b506102ab6105a23660046132c9565b6116b3565b3480156105b357600080fd5b506102ab6105c23660046132c9565b611756565b3480156105d357600080fd5b506103687f000000000000000000000000000000000000000000000000000000000000000081565b34801561060757600080fd5b506102ab6106163660046132c9565b611809565b34801561062757600080fd5b50600a5461010090046001600160a01b0316610368565b34801561064a57600080fd5b506102ed6106593660046132c9565b60126020526000908152604090205460ff1681565b34801561067a57600080fd5b5061033b6118ac565b34801561068f57600080fd5b506102ab61193a565b3480156106a457600080fd5b5061033b611b9b565b6102ab6106bb3660046132c9565b611baa565b3480156106cc57600080fd5b506102ab6106db36600461312c565b611ddf565b3480156106ec57600080fd5b506102ab6106fb3660046130b0565b611dee565b34801561070c57600080fd5b5061033b61071b3660046132c9565b611e26565b34801561072c57600080fd5b5061031860105481565b34801561074257600080fd5b506103687f000000000000000000000000000000000000000000000000000000000000000081565b34801561077657600080fd5b50610318600e5481565b34801561078c57600080fd5b506102ed61079b366004613026565b60146020526000908152604090205460ff1681565b3480156107bc57600080fd5b50610318600c5481565b3480156107d257600080fd5b506102ed6107e1366004613041565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b34801561081b57600080fd5b506102ab61082a366004613026565b611e8d565b34801561083b57600080fd5b506102ab61084a36600461312c565b611f06565b34801561085b57600080fd5b506103687f000000000000000000000000000000000000000000000000000000000000000081565b34801561088f57600080fd5b506102ab61089e3660046132c9565b611f6a565b6108ab612227565b6001600160a01b03821660009081526014602052604090205460ff16151560011461093a5760405162461bcd60e51b815260206004820152603460248201527f6c697a537761703a204e465420636f6e747261637420746f2073776170206973604482015273103737ba1030b8383937bb32b210313c903232bb60611b60648201526084015b60405180910390fd5b6040516370a0823160e01b815233600482015281906001600160a01b038416906370a082319060240160206040518083038186803b15801561097b57600080fd5b505afa15801561098f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b391906132e2565b1015610a1b5760405162461bcd60e51b815260206004820152603160248201527f6c697a537761703a2073656e64657220646f6573206e6f74206861766520656e60448201527006f756768204e46547320746f207377617607c1b6064820152608401610931565b600e54811115610a7f5760405162461bcd60e51b815260206004820152602960248201527f6c697a537761703a207377617020616d6f756e742065786365656473206d61786044820152680696d756d20737761760bc1b6064820152608401610931565b60005b81811015610b9057604051632f745c5960e01b8152336004820152600060248201819052906001600160a01b03851690632f745c599060440160206040518083038186803b158015610ad357600080fd5b505afa158015610ae7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0b91906132e2565b6040516323b872dd60e01b8152336004820152306024820152604481018290529091506001600160a01b038516906323b872dd90606401600060405180830381600087803b158015610b5c57600080fd5b505af1158015610b70573d6000803e3d6000fd5b50505050610b7d3361226d565b5080610b888161357f565b915050610a82565b505050565b610b9d61229f565b6000815111610c015760405162461bcd60e51b815260206004820152602a60248201527f61697244726f703a206d7573742073706563696679206174206c65617374206f6044820152696e65206164647265737360b01b6064820152608401610931565b60005b8151811015610c4157610c2f828281518110610c2257610c226135f0565b602002602001015161226d565b80610c398161357f565b915050610c04565b5080604051610c509190613327565b604051908190038120907fb9413d9dd40eadf97d2949c3c57a163bb454e537a8696520d52a74e0252011e990600090a250565b60006001600160e01b0319821663780e9d6360e01b1480610ca85750610ca8826122ff565b92915050565b606060008054610cbd90613544565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce990613544565b8015610d365780601f10610d0b57610100808354040283529160200191610d36565b820191906000526020600020905b815481529060010190602001808311610d1957829003601f168201915b5050505050905090565b6000610d4b8261234f565b506000908152600460205260409020546001600160a01b031690565b6000610d728261150f565b9050806001600160a01b0316836001600160a01b03161415610de05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610931565b336001600160a01b0382161480610dfc5750610dfc81336107e1565b610e6e5760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610931565b610b9083836123ae565b610e8061229f565b600e8190556040518181527f8554bb989b42d48136ef62bdd3f9568e72e71265a7d17ff87d0c56a98bea7c21906020015b60405180910390a150565b610ec6338261241c565b610ee25760405162461bcd60e51b815260040161093190613437565b610b9083838361249b565b610ef561229f565b600a5460ff16610f0c57610f07612642565b610f14565b610f14612697565b7f71aa6dbdf1045ea9e6926a7848dbdd98d55270c4fee88cbc77fd816ccc8d6d2f610f41600a5460ff1690565b60405190151581526020015b60405180910390a1565b6000610f6283611619565b8210610fc45760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610931565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b610ff561229f565b6000471161105f5760405162461bcd60e51b815260206004820152603160248201527f77697468647261773a20636f6e74726163742062616c616e6365206d75737420604482015270062652067726561746572207468616e203607c1b6064820152608401610931565b6040514790339082156108fc029083906000818181858888f1935050505015801561108e573d6000803e3d6000fd5b506040518181527f5b6b431d4476a211bb7d41c20d1aab9ae2321deee0d20be3d9fc9b1093fa6e3d90602001610eb1565b610b9083838360405180602001604052806000815250611dee565b60006110e560085490565b82106111485760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610931565b6008828154811061115b5761115b6135f0565b90600052602060002001549050919050565b61117561229f565b8051611188906011906020840190612f19565b507f23c8c9488efebfd474e85a7956de6f39b17c7ab88502d42a623db2d8e382bbaa81604051610eb191906133d2565b6111c0612227565b6040516370a0823160e01b81523360048201526003907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b15801561122257600080fd5b505afa158015611236573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125a91906132e2565b101561126557600080fd5b6040516370a0823160e01b81523360048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b1580156112c757600080fd5b505afa1580156112db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ff91906132e2565b9050600061130e60038361359a565b9050600061131c8284613501565b90506000805b8281101561142557604051632f745c5960e01b8152336004820152602481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632f745c599060440160206040518083038186803b15801561139357600080fd5b505afa1580156113a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113cb91906132e2565b60008181526012602052604090205490915060ff161515600114611412576000818152601260205260409020805460ff1916600190811790915561140f90846134b6565b92505b508061141d8161357f565b915050611322565b50600381101561149f576040805162461bcd60e51b81526020600482015260248101919091527f424144636c61696d3a2077616c6c657420646f6573206e6f7420636f6e74616960448201527f6e2033206f72206d6f72652076616c6964204e46547320666f7220636c61696d6064820152608401610931565b60006114ac6003836134ce565b905060005b818110156114d4576114c23361226d565b806114cc8161357f565b9150506114b1565b506040518181527fab4fa3a7dc1587e1a2b22a5c1e6085378c5cc9dcdc0e4bfbe15f69d965117a7b9060200160405180910390a15050505050565b6000818152600260205260408120546001600160a01b031680610ca85760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610931565b61157761229f565b600081116115e45760405162461bcd60e51b815260206004820152603460248201527f757064617465546f74616c537570706c793a206e657720737570706c79206d75604482015273073742062652067726561746572207468616e20360641b6064820152608401610931565b600c8190556040518181527fee643f334779f1031decbee003f80a0bcb7ecdc24b6693539cf7447a66afba8a90602001610eb1565b60006001600160a01b0382166116835760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610931565b506001600160a01b031660009081526003602052604090205490565b6116a761229f565b6116b160006126d0565b565b6116bd338261241c565b61171d5760405162461bcd60e51b815260206004820152602b60248201527f6275726e546f6b656e3a2063616c6c6572206973206e6f74206f776e6572206e60448201526a1bdc88185c1c1c9bdd995960aa1b6064820152608401610931565b6117268161272a565b6040518181527f066548819fc4bd1208ea1c8608597593134d5661f459c2ef75cad30918af5a3390602001610eb1565b61175e61229f565b600081116117d45760405162461bcd60e51b815260206004820152603760248201527f7570646174654d61784d696e7450657254583a206e6577204d6178204d696e7460448201527f206d7573742062652067726561746572207468616e20300000000000000000006064820152608401610931565b60108190556040518181527f10c8453bb7e69387bc7864680c3c203d96807b6763152560dbd9e265886b291190602001610eb1565b61181161229f565b600081116118775760405162461bcd60e51b815260206004820152602d60248201527f75706461746550726963653a206e6577207072696365206d757374206265206760448201526c0726561746572207468616e203609c1b6064820152608401610931565b600d8190556040518181527f1a15ab7124a4e1ce00837351261771caf1691cd7d85ed3a0ac3157a1ee1a380590602001610eb1565b601180546118b990613544565b80601f01602080910402602001604051908101604052809291908181526020018280546118e590613544565b80156119325780601f1061190757610100808354040283529160200191611932565b820191906000526020600020905b81548152906001019060200180831161191557829003601f168201915b505050505081565b611942612227565b6040516370a0823160e01b81523360048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b1580156119a457600080fd5b505afa1580156119b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119dc91906132e2565b905060008111611a545760405162461bcd60e51b815260206004820152603a60248201527f666f756e64657273436c61696d3a2077616c6c657420646f6573206e6f74206360448201527f6f6e7461696e2056495020466f756e64657273207061737365730000000000006064820152608401610931565b6000805b82811015611b6257604051632f745c5960e01b8152336004820152602481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632f745c599060440160206040518083038186803b158015611ac957600080fd5b505afa158015611add573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b0191906132e2565b60008181526013602052604090205490915060ff161515600114611b4f576000818152601360205260409020805460ff19166001179055611b413361226d565b611b4c6001846134b6565b92505b5080611b5a8161357f565b915050611a58565b506040518181527f53191e6d1586d73a50fa79330373d8f9b987c776a0562976d0539af569a720e4906020015b60405180910390a15050565b606060018054610cbd90613544565b611bb2612227565b6000611bbd600b5490565b9050600c548110611c105760405162461bcd60e51b815260206004820152601a60248201527f6d696e743a206e6f206e667473206c65667420746f206d696e740000000000006044820152606401610931565b600c54611c1d83836134b6565b1115611c915760405162461bcd60e51b815260206004820152603a60248201527f6d696e743a206e6f7420656e6f756768206e667473207061737365732061766160448201527f696c61626c6520746f206d696e74207468617420616d6f756e740000000000006064820152608401610931565b601054821115611cf75760405162461bcd60e51b815260206004820152602b60248201527f6d696e743a20616d6f756e74206c696d6974206578636565646564207065722060448201526a3a3930b739b0b1ba34b7b760a91b6064820152608401610931565b600d54611d0490836134e2565b3414611d705760405162461bcd60e51b815260206004820152603560248201527f6d696e743a2076616c756520706173736564206973206e6f7420636f727265636044820152741d081d1bc81b5a5b9d081d1a185d08185b5bdd5b9d605a1b6064820152608401610931565b60005b82811015611d9657611d843361226d565b80611d8e8161357f565b915050611d73565b50600d5460405133917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f91611dd391868252602082015260400190565b60405180910390a25050565b611dea3383836127d1565b5050565b611df8338361241c565b611e145760405162461bcd60e51b815260040161093190613437565b611e20848484846128a0565b50505050565b6060611e318261234f565b6000611e3b6128d3565b90506000815111611e5b5760405180602001604052806000815250611e86565b80611e65846128e2565b604051602001611e76929190613366565b6040516020818303038152906040525b9392505050565b611e9561229f565b6001600160a01b038116611efa5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610931565b611f03816126d0565b50565b611f0e61229f565b6001600160a01b038216600081815260146020908152604091829020805460ff19168515159081179091558251938452908301527f20da36b0f740571060ad3955d7214ee57148a4e2265ac768fa4a6365368a58e29101611b8f565b611f72612227565b6040516370a0823160e01b815233600482015281907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015611fd357600080fd5b505afa158015611fe7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200b91906132e2565b10156120725760405162461bcd60e51b815260206004820152603060248201527f6f67537761703a2073656e64657220646f6573206e6f74206861766520656e6f60448201526f0756768204e46547320746f20737761760841b6064820152608401610931565b600e548111156120d55760405162461bcd60e51b815260206004820152602860248201527f6f67537761703a207377617020616d6f756e742065786365656473206d61786960448201526706d756d20737761760c41b6064820152608401610931565b60005b81811015611dea57604051632f745c5960e01b8152336004820152600060248201819052907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632f745c599060440160206040518083038186803b15801561214957600080fd5b505afa15801561215d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218191906132e2565b6040516323b872dd60e01b8152336004820152306024820152604481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd90606401600060405180830381600087803b1580156121f257600080fd5b505af1158015612206573d6000803e3d6000fd5b5050505061221433826129e0565b508061221f8161357f565b9150506120d8565b600a5460ff16156116b15760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610931565b61227b600b80546001019055565b6000612286600b5490565b600f5461229391906134b6565b9050611dea82826129e0565b600a546001600160a01b036101009091041633146116b15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610931565b60006001600160e01b031982166380ac58cd60e01b148061233057506001600160e01b03198216635b5e139f60e01b145b80610ca857506301ffc9a760e01b6001600160e01b0319831614610ca8565b6000818152600260205260409020546001600160a01b0316611f035760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610931565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906123e38261150f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806124288361150f565b9050806001600160a01b0316846001600160a01b0316148061246f57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806124935750836001600160a01b031661248884610d40565b6001600160a01b0316145b949350505050565b826001600160a01b03166124ae8261150f565b6001600160a01b0316146125125760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610931565b6001600160a01b0382166125745760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610931565b61257f8383836129fa565b61258a6000826123ae565b6001600160a01b03831660009081526003602052604081208054600192906125b3908490613501565b90915550506001600160a01b03821660009081526003602052604081208054600192906125e19084906134b6565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61264a612227565b600a805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861267f3390565b6040516001600160a01b039091168152602001610f4d565b61269f612ab2565b600a805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa3361267f565b600a80546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006127358261150f565b9050612743816000846129fa565b61274e6000836123ae565b6001600160a01b0381166000908152600360205260408120805460019290612777908490613501565b909155505060008281526002602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b816001600160a01b0316836001600160a01b031614156128335760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610931565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6128ab84848461249b565b6128b784848484612afb565b611e205760405162461bcd60e51b8152600401610931906133e5565b606060118054610cbd90613544565b6060816129065750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612930578061291a8161357f565b91506129299050600a836134ce565b915061290a565b60008167ffffffffffffffff81111561294b5761294b613606565b6040519080825280601f01601f191660200182016040528015612975576020820181803683370190505b5090505b84156124935761298a600183613501565b9150612997600a8661359a565b6129a29060306134b6565b60f81b8183815181106129b7576129b76135f0565b60200101906001600160f81b031916908160001a9053506129d9600a866134ce565b9450612979565b611dea828260405180602001604052806000815250612c08565b6001600160a01b038316612a5557612a5081600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b612a78565b816001600160a01b0316836001600160a01b031614612a7857612a788382612c3b565b6001600160a01b038216612a8f57610b9081612cd8565b826001600160a01b0316826001600160a01b031614610b9057610b908282612d87565b600a5460ff166116b15760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610931565b60006001600160a01b0384163b15612bfd57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612b3f903390899088908890600401613395565b602060405180830381600087803b158015612b5957600080fd5b505af1925050508015612b89575060408051601f3d908101601f19168201909252612b8691810190613263565b60015b612be3573d808015612bb7576040519150601f19603f3d011682016040523d82523d6000602084013e612bbc565b606091505b508051612bdb5760405162461bcd60e51b8152600401610931906133e5565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612493565b506001949350505050565b612c128383612dcb565b612c1f6000848484612afb565b610b905760405162461bcd60e51b8152600401610931906133e5565b60006001612c4884611619565b612c529190613501565b600083815260076020526040902054909150808214612ca5576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b600854600090612cea90600190613501565b60008381526009602052604081205460088054939450909284908110612d1257612d126135f0565b906000526020600020015490508060088381548110612d3357612d336135f0565b6000918252602080832090910192909255828152600990915260408082208490558582528120556008805480612d6b57612d6b6135da565b6001900381819060005260206000200160009055905550505050565b6000612d9283611619565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b038216612e215760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610931565b6000818152600260205260409020546001600160a01b031615612e865760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610931565b612e92600083836129fa565b6001600160a01b0382166000908152600360205260408120805460019290612ebb9084906134b6565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054612f2590613544565b90600052602060002090601f016020900481019282612f475760008555612f8d565b82601f10612f6057805160ff1916838001178555612f8d565b82800160010185558215612f8d579182015b82811115612f8d578251825591602001919060010190612f72565b50612f99929150612f9d565b5090565b5b80821115612f995760008155600101612f9e565b600067ffffffffffffffff831115612fcc57612fcc613606565b612fdf601f8401601f1916602001613485565b9050828152838383011115612ff357600080fd5b828260208301376000602084830101529392505050565b80356001600160a01b038116811461302157600080fd5b919050565b60006020828403121561303857600080fd5b611e868261300a565b6000806040838503121561305457600080fd5b61305d8361300a565b915061306b6020840161300a565b90509250929050565b60008060006060848603121561308957600080fd5b6130928461300a565b92506130a06020850161300a565b9150604084013590509250925092565b600080600080608085870312156130c657600080fd5b6130cf8561300a565b93506130dd6020860161300a565b925060408501359150606085013567ffffffffffffffff81111561310057600080fd5b8501601f8101871361311157600080fd5b61312087823560208401612fb2565b91505092959194509250565b6000806040838503121561313f57600080fd5b6131488361300a565b91506020830135801515811461315d57600080fd5b809150509250929050565b6000806040838503121561317b57600080fd5b6131848361300a565b946020939093013593505050565b600060208083850312156131a557600080fd5b823567ffffffffffffffff808211156131bd57600080fd5b818501915085601f8301126131d157600080fd5b8135818111156131e3576131e3613606565b8060051b91506131f4848301613485565b8181528481019084860184860187018a101561320f57600080fd5b600095505b83861015613239576132258161300a565b835260019590950194918601918601613214565b5098975050505050505050565b60006020828403121561325857600080fd5b8135611e868161361c565b60006020828403121561327557600080fd5b8151611e868161361c565b60006020828403121561329257600080fd5b813567ffffffffffffffff8111156132a957600080fd5b8201601f810184136132ba57600080fd5b61249384823560208401612fb2565b6000602082840312156132db57600080fd5b5035919050565b6000602082840312156132f457600080fd5b5051919050565b60008151808452613313816020860160208601613518565b601f01601f19169290920160200192915050565b815160009082906020808601845b8381101561335a5781516001600160a01b031685529382019390820190600101613335565b50929695505050505050565b60008351613378818460208801613518565b83519083019061338c818360208801613518565b01949350505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906133c8908301846132fb565b9695505050505050565b602081526000611e8660208301846132fb565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b604051601f8201601f1916810167ffffffffffffffff811182821017156134ae576134ae613606565b604052919050565b600082198211156134c9576134c96135ae565b500190565b6000826134dd576134dd6135c4565b500490565b60008160001904831182151516156134fc576134fc6135ae565b500290565b600082821015613513576135136135ae565b500390565b60005b8381101561353357818101518382015260200161351b565b83811115611e205750506000910152565b600181811c9082168061355857607f821691505b6020821081141561357957634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613593576135936135ae565b5060010190565b6000826135a9576135a96135c4565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114611f0357600080fdfea2646970667358221220d5730972441eeac71490896217cadaaf10a781e65556fae4f5579d1bf68f2ecd64736f6c63430008070033000000000000000000000000b340c91182b9ff831bb36232cb3296ed306c79b20000000000000000000000004e6795d725e26e340865140a870c25d1e413a11800000000000000000000000089ff2f804b6c029eee739bcee029453b05e94f43
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b340c91182b9ff831bb36232cb3296ed306c79b20000000000000000000000004e6795d725e26e340865140a870c25d1e413a11800000000000000000000000089ff2f804b6c029eee739bcee029453b05e94f43
-----Decoded View---------------
Arg [0] : _babyAlienContract (address): 0xb340c91182b9ff831bb36232cb3296ed306c79b2
Arg [1] : _vipFounders (address): 0x4e6795d725e26e340865140a870c25d1e413a118
Arg [2] : _OGLizContract (address): 0x89ff2f804b6c029eee739bcee029453b05e94f43
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000b340c91182b9ff831bb36232cb3296ed306c79b2
Arg [1] : 0000000000000000000000004e6795d725e26e340865140a870c25d1e413a118
Arg [2] : 00000000000000000000000089ff2f804b6c029eee739bcee029453b05e94f43
Deployed ByteCode Sourcemap
50569:7988:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;54673:679;;;;;;;;;;-1:-1:-1;54673:679:0;;;;;:::i;:::-;;:::i;:::-;;52742:279;;;;;;;;;;-1:-1:-1;52742:279:0;;;;;:::i;:::-;;:::i;37310:224::-;;;;;;;;;;-1:-1:-1;37310:224:0;;;;;:::i;:::-;;:::i;:::-;;;8387:14:1;;8380:22;8362:41;;8350:2;8335:18;37310:224:0;;;;;;;;50795:37;;;;;;;;;;;;;;;;;;;22668:25:1;;;22656:2;22641:18;50795:37:0;22522:177:1;24044:100:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;25557:171::-;;;;;;;;;;-1:-1:-1;25557:171:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;6450:32:1;;;6432:51;;6420:2;6405:18;25557:171:0;6286:203:1;25074:417:0;;;;;;;;;;-1:-1:-1;25074:417:0;;;;;:::i;:::-;;:::i;57077:131::-;;;;;;;;;;-1:-1:-1;57077:131:0;;;;;:::i;:::-;;:::i;37950:113::-;;;;;;;;;;-1:-1:-1;38038:10:0;:17;37950:113;;26257:336;;;;;;;;;;-1:-1:-1;26257:336:0;;;;;:::i;:::-;;:::i;57406:146::-;;;;;;;;;;;;;:::i;37618:256::-;;;;;;;;;;-1:-1:-1;37618:256:0;;;;;:::i;:::-;;:::i;58276:278::-;;;;;;;;;;;;;:::i;26664:185::-;;;;;;;;;;-1:-1:-1;26664:185:0;;;;;:::i;:::-;;:::i;38140:233::-;;;;;;;;;;-1:-1:-1;38140:233:0;;;;;:::i;:::-;;:::i;52609:125::-;;;;;;;;;;-1:-1:-1;52609:125:0;;;;;:::i;:::-;;:::i;51302:43::-;;;;;;;;;;-1:-1:-1;51302:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;45131:86;;;;;;;;;;-1:-1:-1;45202:7:0;;;;45131:86;;53029:958;;;;;;;;;;;;;:::i;23755:222::-;;;;;;;;;;-1:-1:-1;23755:222:0;;;;;:::i;:::-;;:::i;57786:243::-;;;;;;;;;;-1:-1:-1;57786:243:0;;;;;:::i;:::-;;:::i;50874:31::-;;;;;;;;;;;;;;;;23486:207;;;;;;;;;;-1:-1:-1;23486:207:0;;;;;:::i;:::-;;:::i;47996:103::-;;;;;;;;;;;;;:::i;56755:227::-;;;;;;;;;;-1:-1:-1;56755:227:0;;;;;:::i;:::-;;:::i;58037:231::-;;;;;;;;;;-1:-1:-1;58037:231:0;;;;;:::i;:::-;;:::i;51124:46::-;;;;;;;;;;;;;;;57560:218;;;;;;;;;;-1:-1:-1;57560:218:0;;;;;:::i;:::-;;:::i;47348:87::-;;;;;;;;;;-1:-1:-1;47421:6:0;;;;;-1:-1:-1;;;;;47421:6:0;47348:87;;51251:44;;;;;;;;;;-1:-1:-1;51251:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;51005:24;;;;;;;;;;;;;:::i;53995:613::-;;;;;;;;;;;;;:::i;24213:104::-;;;;;;;;;;;;;:::i;55886:683::-;;;;;;:::i;:::-;;:::i;25800:155::-;;;;;;;;;;-1:-1:-1;25800:155:0;;;;;:::i;:::-;;:::i;26920:323::-;;;;;;;;;;-1:-1:-1;26920:323:0;;;;;:::i;:::-;;:::i;24388:281::-;;;;;;;;;;-1:-1:-1;24388:281:0;;;;;:::i;:::-;;:::i;50932:33::-;;;;;;;;;;;;;;;;51177:48;;;;;;;;;;;;;;;50839:28;;;;;;;;;;;;;;;;51352:47;;;;;;;;;;-1:-1:-1;51352:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;50753:35;;;;;;;;;;;;;;;;26026:164;;;;;;;;;;-1:-1:-1;26026:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;26147:25:0;;;26123:4;26147:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;26026:164;48254:201;;;;;;;;;;-1:-1:-1;48254:201:0;;;;;:::i;:::-;;:::i;57216:182::-;;;;;;;;;;-1:-1:-1;57216:182:0;;;;;:::i;:::-;;:::i;51065:52::-;;;;;;;;;;;;;;;55360:518;;;;;;;;;;-1:-1:-1;55360:518:0;;;;;:::i;:::-;;:::i;54673:679::-;44736:19;:17;:19::i;:::-;-1:-1:-1;;;;;54769:27:0;::::1;;::::0;;;:14:::1;:27;::::0;;;;;::::1;;:35;;:27:::0;:35:::1;54761:100;;;::::0;-1:-1:-1;;;54761:100:0;;13781:2:1;54761:100:0::1;::::0;::::1;13763:21:1::0;13820:2;13800:18;;;13793:30;13859:34;13839:18;;;13832:62;-1:-1:-1;;;13910:18:1;;;13903:50;13970:19;;54761:100:0::1;;;;;;;;;54880:42;::::0;-1:-1:-1;;;54880:42:0;;54911:10:::1;54880:42;::::0;::::1;6432:51:1::0;54926:6:0;;-1:-1:-1;;;;;54880:30:0;::::1;::::0;::::1;::::0;6405:18:1;;54880:42:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;54872:114;;;::::0;-1:-1:-1;;;54872:114:0;;14619:2:1;54872:114:0::1;::::0;::::1;14601:21:1::0;14658:2;14638:18;;;14631:30;14697:34;14677:18;;;14670:62;-1:-1:-1;;;14748:18:1;;;14741:47;14805:19;;54872:114:0::1;14417:413:1::0;54872:114:0::1;55015:8;;55005:6;:18;;54997:72;;;::::0;-1:-1:-1;;;54997:72:0;;16633:2:1;54997:72:0::1;::::0;::::1;16615:21:1::0;16672:2;16652:18;;;16645:30;16711:34;16691:18;;;16684:62;-1:-1:-1;;;16762:18:1;;;16755:39;16811:19;;54997:72:0::1;16431:405:1::0;54997:72:0::1;55087:9;55082:263;55106:6;55102:1;:10;55082:263;;;55150:65;::::0;-1:-1:-1;;;55150:65:0;;55201:10:::1;55150:65;::::0;::::1;7838:51:1::0;55134:13:0::1;7905:18:1::0;;;7898:34;;;55134:13:0;-1:-1:-1;;;;;55150:50:0;::::1;::::0;::::1;::::0;7811:18:1;;55150:65:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;55230:67;::::0;-1:-1:-1;;;55230:67:0;;55264:10:::1;55230:67;::::0;::::1;6734:34:1::0;55284:4:0::1;6784:18:1::0;;;6777:43;6836:18;;;6829:34;;;55134:81:0;;-1:-1:-1;;;;;;55230:33:0;::::1;::::0;::::1;::::0;6669:18:1;;55230:67:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;55312:21;55322:10;55312:9;:21::i;:::-;-1:-1:-1::0;55114:3:0;::::1;::::0;::::1;:::i;:::-;;;;55082:263;;;;54673:679:::0;;:::o;52742:279::-;47234:13;:11;:13::i;:::-;52834:1:::1;52819:5;:12;:16;52811:71;;;::::0;-1:-1:-1;;;52811:71:0;;9843:2:1;52811:71:0::1;::::0;::::1;9825:21:1::0;9882:2;9862:18;;;9855:30;9921:34;9901:18;;;9894:62;-1:-1:-1;;;9972:18:1;;;9965:40;10022:19;;52811:71:0::1;9641:406:1::0;52811:71:0::1;52899:9;52894:90;52918:5;:12;52914:1;:16;52894:90;;;52952:19;52962:5;52968:1;52962:8;;;;;;;;:::i;:::-;;;;;;;52952:9;:19::i;:::-;52932:3:::0;::::1;::::0;::::1;:::i;:::-;;;;52894:90;;;;53007:5;52999:14;;;;;;:::i;:::-;;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;52742:279:::0;:::o;37310:224::-;37412:4;-1:-1:-1;;;;;;37436:50:0;;-1:-1:-1;;;37436:50:0;;:90;;;37490:36;37514:11;37490:23;:36::i;:::-;37429:97;37310:224;-1:-1:-1;;37310:224:0:o;24044:100::-;24098:13;24131:5;24124:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24044:100;:::o;25557:171::-;25633:7;25653:23;25668:7;25653:14;:23::i;:::-;-1:-1:-1;25696:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;25696:24:0;;25557:171::o;25074:417::-;25155:13;25171:23;25186:7;25171:14;:23::i;:::-;25155:39;;25219:5;-1:-1:-1;;;;;25213:11:0;:2;-1:-1:-1;;;;;25213:11:0;;;25205:57;;;;-1:-1:-1;;;25205:57:0;;19370:2:1;25205:57:0;;;19352:21:1;19409:2;19389:18;;;19382:30;19448:34;19428:18;;;19421:62;-1:-1:-1;;;19499:18:1;;;19492:31;19540:19;;25205:57:0;19168:397:1;25205:57:0;21576:10;-1:-1:-1;;;;;25297:21:0;;;;:62;;-1:-1:-1;25322:37:0;25339:5;21576:10;26026:164;:::i;25322:37::-;25275:174;;;;-1:-1:-1;;;25275:174:0;;17455:2:1;25275:174:0;;;17437:21:1;17494:2;17474:18;;;17467:30;17533:34;17513:18;;;17506:62;17604:32;17584:18;;;17577:60;17654:19;;25275:174:0;17253:426:1;25275:174:0;25462:21;25471:2;25475:7;25462:8;:21::i;57077:131::-;47234:13;:11;:13::i;:::-;57144:8:::1;:18:::0;;;57178:22:::1;::::0;22668:25:1;;;57178:22:0::1;::::0;22656:2:1;22641:18;57178:22:0::1;;;;;;;;57077:131:::0;:::o;26257:336::-;26452:41;21576:10;26485:7;26452:18;:41::i;:::-;26444:100;;;;-1:-1:-1;;;26444:100:0;;;;;;;:::i;:::-;26557:28;26567:4;26573:2;26577:7;26557:9;:28::i;57406:146::-;47234:13;:11;:13::i;:::-;45202:7;;;;57466:32:::1;;57490:8;:6;:8::i;:::-;57466:32;;;57477:10;:8;:10::i;:::-;57514:29;57534:8;45202:7:::0;;;;;45131:86;57534:8:::1;57514:29;::::0;8387:14:1;;8380:22;8362:41;;8350:2;8335:18;57514:29:0::1;;;;;;;;57406:146::o:0;37618:256::-;37715:7;37751:23;37768:5;37751:16;:23::i;:::-;37743:5;:31;37735:87;;;;-1:-1:-1;;;37735:87:0;;10254:2:1;37735:87:0;;;10236:21:1;10293:2;10273:18;;;10266:30;10332:34;10312:18;;;10305:62;-1:-1:-1;;;10383:18:1;;;10376:41;10434:19;;37735:87:0;10052:407:1;37735:87:0;-1:-1:-1;;;;;;37840:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;37618:256::o;58276:278::-;47234:13;:11;:13::i;:::-;58358:1:::1;58334:21;:25;58326:87;;;::::0;-1:-1:-1;;;58326:87:0;;19772:2:1;58326:87:0::1;::::0;::::1;19754:21:1::0;19811:2;19791:18;;;19784:30;19850:34;19830:18;;;19823:62;-1:-1:-1;;;19901:18:1;;;19894:47;19958:19;;58326:87:0::1;19570:413:1::0;58326:87:0::1;58476:37;::::0;58443:21:::1;::::0;58484:10:::1;::::0;58476:37;::::1;;;::::0;58443:21;;58425:15:::1;58476:37:::0;58425:15;58476:37;58443:21;58484:10;58476:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;58529:17:0::1;::::0;22668:25:1;;;58529:17:0::1;::::0;22656:2:1;22641:18;58529:17:0::1;22522:177:1::0;26664:185:0;26802:39;26819:4;26825:2;26829:7;26802:39;;;;;;;;;;;;:16;:39::i;38140:233::-;38215:7;38251:30;38038:10;:17;;37950:113;38251:30;38243:5;:38;38235:95;;;;-1:-1:-1;;;38235:95:0;;21047:2:1;38235:95:0;;;21029:21:1;21086:2;21066:18;;;21059:30;21125:34;21105:18;;;21098:62;-1:-1:-1;;;21176:18:1;;;21169:42;21228:19;;38235:95:0;20845:408:1;38235:95:0;38348:10;38359:5;38348:17;;;;;;;;:::i;:::-;;;;;;;;;38341:24;;38140:233;;;:::o;52609:125::-;47234:13;:11;:13::i;:::-;52677:17;;::::1;::::0;:10:::1;::::0;:17:::1;::::0;::::1;::::0;::::1;:::i;:::-;;52710:16;52721:4;52710:16;;;;;;:::i;53029:958::-:0;44736:19;:17;:19::i;:::-;53091:39:::1;::::0;-1:-1:-1;;;53091:39:0;;53119:10:::1;53091:39;::::0;::::1;6432:51:1::0;53134:1:0::1;::::0;53091:17:::1;-1:-1:-1::0;;;;;53091:27:0::1;::::0;::::1;::::0;6405:18:1;;53091:39:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;53083:53;;;::::0;::::1;;53204:39;::::0;-1:-1:-1;;;53204:39:0;;53232:10:::1;53204:39;::::0;::::1;6432:51:1::0;53186:15:0::1;::::0;53204:17:::1;-1:-1:-1::0;;;;;53204:27:0::1;::::0;::::1;::::0;6405:18:1;;53204:39:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;53186:57:::0;-1:-1:-1;53254:11:0::1;53268;53278:1;53186:57:::0;53268:11:::1;:::i;:::-;53254:25:::0;-1:-1:-1;53291:18:0::1;53312:13;53254:25:::0;53312:7;:13:::1;:::i;:::-;53291:34;;53336:18;53439:6:::0;53434:273:::1;53455:10;53451:1;:14;53434:273;;;53503:52;::::0;-1:-1:-1;;;53503:52:0;;53541:10:::1;53503:52;::::0;::::1;7838:51:1::0;7905:18;;;7898:34;;;53487:13:0::1;::::0;53503:17:::1;-1:-1:-1::0;;;;;53503:37:0::1;::::0;::::1;::::0;7811:18:1;;53503:52:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;53574:18;::::0;;;:11:::1;:18;::::0;;;;;53487:68;;-1:-1:-1;53574:18:0::1;;:26;;:18:::0;:26:::1;53570:126;;53621:18;::::0;;;:11:::1;:18;::::0;;;;:25;;-1:-1:-1;;53621:25:0::1;53642:4;53621:25:::0;;::::1;::::0;;;53665:15:::1;::::0;;::::1;:::i;:::-;;;53570:126;-1:-1:-1::0;53467:3:0;::::1;::::0;::::1;:::i;:::-;;;;53434:273;;;;53739:1;53725:10;:15;;53717:92;;;::::0;;-1:-1:-1;;;53717:92:0;;20190:2:1;53717:92:0::1;::::0;::::1;20172:21:1::0;20209:18;;;20202:30;;;;20268:34;20248:18;;;20241:62;20339:34;20319:18;;;20312:62;20391:19;;53717:92:0::1;19988:428:1::0;53717:92:0::1;53820:15;53838:14;53851:1;53838:10:::0;:14:::1;:::i;:::-;53820:32;;53868:6;53863:84;53884:7;53880:1;:11;53863:84;;;53914:21;53924:10;53914:9;:21::i;:::-;53893:3:::0;::::1;::::0;::::1;:::i;:::-;;;;53863:84;;;-1:-1:-1::0;53962:17:0::1;::::0;22668:25:1;;;53962:17:0::1;::::0;22656:2:1;22641:18;53962:17:0::1;;;;;;;53072:915;;;;;53029:958::o:0;23755:222::-;23827:7;23863:16;;;:7;:16;;;;;;-1:-1:-1;;;;;23863:16:0;23898:19;23890:56;;;;-1:-1:-1;;;23890:56:0;;19017:2:1;23890:56:0;;;18999:21:1;19056:2;19036:18;;;19029:30;-1:-1:-1;;;19075:18:1;;;19068:54;19139:18;;23890:56:0;18815:348:1;57786:243:0;47234:13;:11;:13::i;:::-;57882:1:::1;57870:9;:13;57862:78;;;::::0;-1:-1:-1;;;57862:78:0;;9422:2:1;57862:78:0::1;::::0;::::1;9404:21:1::0;9461:2;9441:18;;;9434:30;9500:34;9480:18;;;9473:62;-1:-1:-1;;;9551:18:1;;;9544:50;9611:19;;57862:78:0::1;9220:416:1::0;57862:78:0::1;57952:12;:24:::0;;;57993:28:::1;::::0;22668:25:1;;;57993:28:0::1;::::0;22656:2:1;22641:18;57993:28:0::1;22522:177:1::0;23486:207:0;23558:7;-1:-1:-1;;;;;23586:19:0;;23578:73;;;;-1:-1:-1;;;23578:73:0;;16223:2:1;23578:73:0;;;16205:21:1;16262:2;16242:18;;;16235:30;16301:34;16281:18;;;16274:62;-1:-1:-1;;;16352:18:1;;;16345:39;16401:19;;23578:73:0;16021:405:1;23578:73:0;-1:-1:-1;;;;;;23669:16:0;;;;;:9;:16;;;;;;;23486:207::o;47996:103::-;47234:13;:11;:13::i;:::-;48061:30:::1;48088:1;48061:18;:30::i;:::-;47996:103::o:0;56755:227::-;56827:39;56846:10;56858:7;56827:18;:39::i;:::-;56819:95;;;;-1:-1:-1;;;56819:95:0;;17043:2:1;56819:95:0;;;17025:21:1;17082:2;17062:18;;;17055:30;17121:34;17101:18;;;17094:62;-1:-1:-1;;;17172:18:1;;;17165:41;17223:19;;56819:95:0;16841:407:1;56819:95:0;56926:14;56932:7;56926:5;:14::i;:::-;56956:18;;22668:25:1;;;56956:18:0;;22656:2:1;22641:18;56956::0;22522:177:1;58037:231:0;47234:13;:11;:13::i;:::-;58128:1:::1;58119:6;:10;58111:78;;;::::0;-1:-1:-1;;;58111:78:0;;20623:2:1;58111:78:0::1;::::0;::::1;20605:21:1::0;20662:2;20642:18;;;20635:30;20701:34;20681:18;;;20674:62;20772:25;20752:18;;;20745:53;20815:19;;58111:78:0::1;20421:419:1::0;58111:78:0::1;58201:13;:22:::0;;;58239:21:::1;::::0;22668:25:1;;;58239:21:0::1;::::0;22656:2:1;22641:18;58239:21:0::1;22522:177:1::0;57560:218:0;47234:13;:11;:13::i;:::-;57648:1:::1;57637:8;:12;57629:70;;;::::0;-1:-1:-1;;;57629:70:0;;15809:2:1;57629:70:0::1;::::0;::::1;15791:21:1::0;15848:2;15828:18;;;15821:30;15887:34;15867:18;;;15860:62;-1:-1:-1;;;15938:18:1;;;15931:43;15991:19;;57629:70:0::1;15607:409:1::0;57629:70:0::1;57710:10;:21:::0;;;57748::::1;::::0;22668:25:1;;;57748:21:0::1;::::0;22656:2:1;22641:18;57748:21:0::1;22522:177:1::0;51005:24:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;53995:613::-;44736:19;:17;:19::i;:::-;54068:33:::1;::::0;-1:-1:-1;;;54068:33:0;;54090:10:::1;54068:33;::::0;::::1;6432:51:1::0;54054:11:0::1;::::0;54068::::1;-1:-1:-1::0;;;;;54068:21:0::1;::::0;::::1;::::0;6405:18:1;;54068:33:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;54054:47;;54126:1;54120:3;:7;54112:78;;;::::0;-1:-1:-1;;;54112:78:0;;15037:2:1;54112:78:0::1;::::0;::::1;15019:21:1::0;15076:2;15056:18;;;15049:30;15115:34;15095:18;;;15088:62;15186:28;15166:18;;;15159:56;15232:19;;54112:78:0::1;14835:422:1::0;54112:78:0::1;54256:9;54285:6:::0;54280:289:::1;54301:3;54297:1;:7;54280:289;;;54342:46;::::0;-1:-1:-1;;;54342:46:0;;54374:10:::1;54342:46;::::0;::::1;7838:51:1::0;7905:18;;;7898:34;;;54326:13:0::1;::::0;54342:11:::1;-1:-1:-1::0;;;;;54342:31:0::1;::::0;::::1;::::0;7811:18:1;;54342:46:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;54407:17;::::0;;;:10:::1;:17;::::0;;;;;54326:62;;-1:-1:-1;54407:17:0::1;;:25;;:17:::0;:25:::1;54403:155;;54453:17;::::0;;;:10:::1;:17;::::0;;;;:24;;-1:-1:-1;;54453:24:0::1;54473:4;54453:24;::::0;;54496:21:::1;54506:10;54496:9;:21::i;:::-;54536:6;54541:1;54536:6:::0;::::1;:::i;:::-;;;54403:155;-1:-1:-1::0;54306:3:0;::::1;::::0;::::1;:::i;:::-;;;;54280:289;;;-1:-1:-1::0;54584:16:0::1;::::0;22668:25:1;;;54584:16:0::1;::::0;22656:2:1;22641:18;54584:16:0::1;;;;;;;;54043:565;;53995:613::o:0;24213:104::-;24269:13;24302:7;24295:14;;;;;:::i;55886:683::-;44736:19;:17;:19::i;:::-;55958:24:::1;55985:22;:12;49777:14:::0;;49685:114;55985:22:::1;55958:49;;56045:12;;56026:16;:31;56018:70;;;::::0;-1:-1:-1;;;56018:70:0;;12255:2:1;56018:70:0::1;::::0;::::1;12237:21:1::0;12294:2;12274:18;;;12267:30;12333:28;12313:18;;;12306:56;12379:18;;56018:70:0::1;12053:350:1::0;56018:70:0::1;56136:12;::::0;56107:25:::1;56126:6:::0;56107:16;:25:::1;:::i;:::-;:41;;56099:112;;;::::0;-1:-1:-1;;;56099:112:0;;21460:2:1;56099:112:0::1;::::0;::::1;21442:21:1::0;21499:2;21479:18;;;21472:30;21538:34;21518:18;;;21511:62;21609:28;21589:18;;;21582:56;21655:19;;56099:112:0::1;21258:422:1::0;56099:112:0::1;56240:13;;56230:6;:23;;56222:79;;;::::0;-1:-1:-1;;;56222:79:0;;12610:2:1;56222:79:0::1;::::0;::::1;12592:21:1::0;12649:2;12629:18;;;12622:30;12688:34;12668:18;;;12661:62;-1:-1:-1;;;12739:18:1;;;12732:41;12790:19;;56222:79:0::1;12408:407:1::0;56222:79:0::1;56342:10;::::0;56333:19:::1;::::0;:6;:19:::1;:::i;:::-;56320:9;:32;56312:98;;;::::0;-1:-1:-1;;;56312:98:0;;21887:2:1;56312:98:0::1;::::0;::::1;21869:21:1::0;21926:2;21906:18;;;21899:30;21965:34;21945:18;;;21938:62;-1:-1:-1;;;22016:18:1;;;22009:51;22077:19;;56312:98:0::1;21685:417:1::0;56312:98:0::1;56430:9;56425:85;56449:6;56445:1;:10;56425:85;;;56477:21;56487:10;56477:9;:21::i;:::-;56457:3:::0;::::1;::::0;::::1;:::i;:::-;;;;56425:85;;;-1:-1:-1::0;56550:10:0::1;::::0;56525:36:::1;::::0;56530:10:::1;::::0;56525:36:::1;::::0;::::1;::::0;56542:6;22878:25:1;;22934:2;22919:18;;22912:34;22866:2;22851:18;;22704:248;56525:36:0::1;;;;;;;;55947:622;55886:683:::0;:::o;25800:155::-;25895:52;21576:10;25928:8;25938;25895:18;:52::i;:::-;25800:155;;:::o;26920:323::-;27094:41;21576:10;27127:7;27094:18;:41::i;:::-;27086:100;;;;-1:-1:-1;;;27086:100:0;;;;;;;:::i;:::-;27197:38;27211:4;27217:2;27221:7;27230:4;27197:13;:38::i;:::-;26920:323;;;;:::o;24388:281::-;24461:13;24487:23;24502:7;24487:14;:23::i;:::-;24523:21;24547:10;:8;:10::i;:::-;24523:34;;24599:1;24581:7;24575:21;:25;:86;;;;;;;;;;;;;;;;;24627:7;24636:18;:7;:16;:18::i;:::-;24610:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;24575:86;24568:93;24388:281;-1:-1:-1;;;24388:281:0:o;48254:201::-;47234:13;:11;:13::i;:::-;-1:-1:-1;;;;;48343:22:0;::::1;48335:73;;;::::0;-1:-1:-1;;;48335:73:0;;11085:2:1;48335:73:0::1;::::0;::::1;11067:21:1::0;11124:2;11104:18;;;11097:30;11163:34;11143:18;;;11136:62;-1:-1:-1;;;11214:18:1;;;11207:36;11260:19;;48335:73:0::1;10883:402:1::0;48335:73:0::1;48419:28;48438:8;48419:18;:28::i;:::-;48254:201:::0;:::o;57216:182::-;47234:13;:11;:13::i;:::-;-1:-1:-1;;;;;57304:27:0;::::1;;::::0;;;:14:::1;:27;::::0;;;;;;;;:35;;-1:-1:-1;;57304:35:0::1;::::0;::::1;;::::0;;::::1;::::0;;;57355;;7535:51:1;;;7602:18;;;7595:50;57355:35:0::1;::::0;7508:18:1;57355:35:0::1;7367:284:1::0;55360:518:0;44736:19;:17;:19::i;:::-;55434:35:::1;::::0;-1:-1:-1;;;55434:35:0;;55458:10:::1;55434:35;::::0;::::1;6432:51:1::0;55473:6:0;;55434:13:::1;-1:-1:-1::0;;;;;55434:23:0::1;::::0;::::1;::::0;6405:18:1;;55434:35:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;55426:106;;;::::0;-1:-1:-1;;;55426:106:0;;14202:2:1;55426:106:0::1;::::0;::::1;14184:21:1::0;14241:2;14221:18;;;14214:30;14280:34;14260:18;;;14253:62;-1:-1:-1;;;14331:18:1;;;14324:46;14387:19;;55426:106:0::1;14000:412:1::0;55426:106:0::1;55561:8;;55551:6;:18;;55543:71;;;::::0;-1:-1:-1;;;55543:71:0;;18608:2:1;55543:71:0::1;::::0;::::1;18590:21:1::0;18647:2;18627:18;;;18620:30;18686:34;18666:18;;;18659:62;-1:-1:-1;;;18737:18:1;;;18730:38;18785:19;;55543:71:0::1;18406:404:1::0;55543:71:0::1;55630:9;55625:246;55649:6;55645:1;:10;55625:246;;;55693:48;::::0;-1:-1:-1;;;55693:48:0;;55727:10:::1;55693:48;::::0;::::1;7838:51:1::0;55677:13:0::1;7905:18:1::0;;;7898:34;;;55677:13:0;55693::::1;-1:-1:-1::0;;;;;55693:33:0::1;::::0;::::1;::::0;7811:18:1;;55693:48:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;55756:60;::::0;-1:-1:-1;;;55756:60:0;;55783:10:::1;55756:60;::::0;::::1;6734:34:1::0;55803:4:0::1;6784:18:1::0;;;6777:43;6836:18;;;6829:34;;;55677:64:0;;-1:-1:-1;55756:13:0::1;-1:-1:-1::0;;;;;55756:26:0::1;::::0;::::1;::::0;6669:18:1;;55756:60:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;55831:28;55841:10;55853:5;55831:9;:28::i;:::-;-1:-1:-1::0;55657:3:0;::::1;::::0;::::1;:::i;:::-;;;;55625:246;;45290:108:::0;45202:7;;;;45360:9;45352:38;;;;-1:-1:-1;;;45352:38:0;;15464:2:1;45352:38:0;;;15446:21:1;15503:2;15483:18;;;15476:30;-1:-1:-1;;;15522:18:1;;;15515:46;15578:18;;45352:38:0;15262:340:1;56577:170:0;56628:24;:12;49896:19;;49914:1;49896:19;;;49807:127;56628:24;56663:10;56689:22;:12;49777:14;;49685:114;56689:22;56676:10;;:35;;;;:::i;:::-;56663:48;;56722:17;56732:2;56736;56722:9;:17::i;47513:132::-;47421:6;;-1:-1:-1;;;;;47421:6:0;;;;;21576:10;47577:23;47569:68;;;;-1:-1:-1;;;47569:68:0;;18247:2:1;47569:68:0;;;18229:21:1;;;18266:18;;;18259:30;18325:34;18305:18;;;18298:62;18377:18;;47569:68:0;18045:356:1;23117:305:0;23219:4;-1:-1:-1;;;;;;23256:40:0;;-1:-1:-1;;;23256:40:0;;:105;;-1:-1:-1;;;;;;;23313:48:0;;-1:-1:-1;;;23313:48:0;23256:105;:158;;;-1:-1:-1;;;;;;;;;;13995:40:0;;;23378:36;13886:157;33532:135;28815:4;28839:16;;;:7;:16;;;;;;-1:-1:-1;;;;;28839:16:0;33606:53;;;;-1:-1:-1;;;33606:53:0;;19017:2:1;33606:53:0;;;18999:21:1;19056:2;19036:18;;;19029:30;-1:-1:-1;;;19075:18:1;;;19068:54;19139:18;;33606:53:0;18815:348:1;32811:174:0;32886:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;32886:29:0;-1:-1:-1;;;;;32886:29:0;;;;;;;;:24;;32940:23;32886:24;32940:14;:23::i;:::-;-1:-1:-1;;;;;32931:46:0;;;;;;;;;;;32811:174;;:::o;29044:264::-;29137:4;29154:13;29170:23;29185:7;29170:14;:23::i;:::-;29154:39;;29223:5;-1:-1:-1;;;;;29212:16:0;:7;-1:-1:-1;;;;;29212:16:0;;:52;;;-1:-1:-1;;;;;;26147:25:0;;;26123:4;26147:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;29232:32;29212:87;;;;29292:7;-1:-1:-1;;;;;29268:31:0;:20;29280:7;29268:11;:20::i;:::-;-1:-1:-1;;;;;29268:31:0;;29212:87;29204:96;29044:264;-1:-1:-1;;;;29044:264:0:o;32067:625::-;32226:4;-1:-1:-1;;;;;32199:31:0;:23;32214:7;32199:14;:23::i;:::-;-1:-1:-1;;;;;32199:31:0;;32191:81;;;;-1:-1:-1;;;32191:81:0;;11492:2:1;32191:81:0;;;11474:21:1;11531:2;11511:18;;;11504:30;11570:34;11550:18;;;11543:62;-1:-1:-1;;;11621:18:1;;;11614:35;11666:19;;32191:81:0;11290:401:1;32191:81:0;-1:-1:-1;;;;;32291:16:0;;32283:65;;;;-1:-1:-1;;;32283:65:0;;13022:2:1;32283:65:0;;;13004:21:1;13061:2;13041:18;;;13034:30;13100:34;13080:18;;;13073:62;-1:-1:-1;;;13151:18:1;;;13144:34;13195:19;;32283:65:0;12820:400:1;32283:65:0;32361:39;32382:4;32388:2;32392:7;32361:20;:39::i;:::-;32465:29;32482:1;32486:7;32465:8;:29::i;:::-;-1:-1:-1;;;;;32507:15:0;;;;;;:9;:15;;;;;:20;;32526:1;;32507:15;:20;;32526:1;;32507:20;:::i;:::-;;;;-1:-1:-1;;;;;;;32538:13:0;;;;;;:9;:13;;;;;:18;;32555:1;;32538:13;:18;;32555:1;;32538:18;:::i;:::-;;;;-1:-1:-1;;32567:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;32567:21:0;-1:-1:-1;;;;;32567:21:0;;;;;;;;;32606:27;;32567:16;;32606:27;;;;;;;55082:263:::1;54673:679:::0;;:::o;45727:118::-;44736:19;:17;:19::i;:::-;45787:7:::1;:14:::0;;-1:-1:-1;;45787:14:0::1;45797:4;45787:14;::::0;;45817:20:::1;45824:12;21576:10:::0;;21496:98;45824:12:::1;45817:20;::::0;-1:-1:-1;;;;;6450:32:1;;;6432:51;;6420:2;6405:18;45817:20:0::1;6286:203:1::0;45986:120:0;44995:16;:14;:16::i;:::-;46045:7:::1;:15:::0;;-1:-1:-1;;46045:15:0::1;::::0;;46076:22:::1;21576:10:::0;46085:12:::1;21496:98:::0;48615:191;48708:6;;;-1:-1:-1;;;;;48725:17:0;;;48708:6;48725:17;;;-1:-1:-1;;;;;;48725:17:0;;;;;;48758:40;;48708:6;;;;;;;;48758:40;;48689:16;;48758:40;48678:128;48615:191;:::o;31310:420::-;31370:13;31386:23;31401:7;31386:14;:23::i;:::-;31370:39;;31422:48;31443:5;31458:1;31462:7;31422:20;:48::i;:::-;31511:29;31528:1;31532:7;31511:8;:29::i;:::-;-1:-1:-1;;;;;31553:16:0;;;;;;:9;:16;;;;;:21;;31573:1;;31553:16;:21;;31573:1;;31553:21;:::i;:::-;;;;-1:-1:-1;;31592:16:0;;;;:7;:16;;;;;;31585:23;;-1:-1:-1;;;;;;31585:23:0;;;31626:36;31600:7;;31592:16;-1:-1:-1;;;;;31626:36:0;;;;;31592:16;;31626:36;25800:155;;:::o;33128:315::-;33283:8;-1:-1:-1;;;;;33274:17:0;:5;-1:-1:-1;;;;;33274:17:0;;;33266:55;;;;-1:-1:-1;;;33266:55:0;;13427:2:1;33266:55:0;;;13409:21:1;13466:2;13446:18;;;13439:30;13505:27;13485:18;;;13478:55;13550:18;;33266:55:0;13225:349:1;33266:55:0;-1:-1:-1;;;;;33332:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;33332:46:0;;;;;;;;;;33394:41;;8362::1;;;33394::0;;8335:18:1;33394:41:0;;;;;;;33128:315;;;:::o;28124:313::-;28280:28;28290:4;28296:2;28300:7;28280:9;:28::i;:::-;28327:47;28350:4;28356:2;28360:7;28369:4;28327:22;:47::i;:::-;28319:110;;;;-1:-1:-1;;;28319:110:0;;;;;;;:::i;52498:103::-;52550:13;52583:10;52576:17;;;;;:::i;430:723::-;486:13;707:10;703:53;;-1:-1:-1;;734:10:0;;;;;;;;;;;;-1:-1:-1;;;734:10:0;;;;;430:723::o;703:53::-;781:5;766:12;822:78;829:9;;822:78;;855:8;;;;:::i;:::-;;-1:-1:-1;878:10:0;;-1:-1:-1;886:2:0;878:10;;:::i;:::-;;;822:78;;;910:19;942:6;932:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;932:17:0;;910:39;;960:154;967:10;;960:154;;994:11;1004:1;994:11;;:::i;:::-;;-1:-1:-1;1063:10:0;1071:2;1063:5;:10;:::i;:::-;1050:24;;:2;:24;:::i;:::-;1037:39;;1020:6;1027;1020:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;1020:56:0;;;;;;;;-1:-1:-1;1091:11:0;1100:2;1091:11;;:::i;:::-;;;960:154;;29650:110;29726:26;29736:2;29740:7;29726:26;;;;;;;;;;;;:9;:26::i;38986:589::-;-1:-1:-1;;;;;39192:18:0;;39188:187;;39227:40;39259:7;40402:10;:17;;40375:24;;;;:15;:24;;;;;:44;;;40430:24;;;;;;;;;;;;40298:164;39227:40;39188:187;;;39297:2;-1:-1:-1;;;;;39289:10:0;:4;-1:-1:-1;;;;;39289:10:0;;39285:90;;39316:47;39349:4;39355:7;39316:32;:47::i;:::-;-1:-1:-1;;;;;39389:16:0;;39385:183;;39422:45;39459:7;39422:36;:45::i;39385:183::-;39495:4;-1:-1:-1;;;;;39489:10:0;:2;-1:-1:-1;;;;;39489:10:0;;39485:83;;39516:40;39544:2;39548:7;39516:27;:40::i;45475:108::-;45202:7;;;;45534:41;;;;-1:-1:-1;;;45534:41:0;;9073:2:1;45534:41:0;;;9055:21:1;9112:2;9092:18;;;9085:30;-1:-1:-1;;;9131:18:1;;;9124:50;9191:18;;45534:41:0;8871:344:1;34231:853:0;34385:4;-1:-1:-1;;;;;34406:13:0;;4025:19;:23;34402:675;;34442:71;;-1:-1:-1;;;34442:71:0;;-1:-1:-1;;;;;34442:36:0;;;;;:71;;21576:10;;34493:4;;34499:7;;34508:4;;34442:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34442:71:0;;;;;;;;-1:-1:-1;;34442:71:0;;;;;;;;;;;;:::i;:::-;;;34438:584;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;34683:13:0;;34679:328;;34726:60;;-1:-1:-1;;;34726:60:0;;;;;;;:::i;34679:328::-;34957:6;34951:13;34942:6;34938:2;34934:15;34927:38;34438:584;-1:-1:-1;;;;;;34564:51:0;-1:-1:-1;;;34564:51:0;;-1:-1:-1;34557:58:0;;34402:675;-1:-1:-1;35061:4:0;34231:853;;;;;;:::o;29987:319::-;30116:18;30122:2;30126:7;30116:5;:18::i;:::-;30167:53;30198:1;30202:2;30206:7;30215:4;30167:22;:53::i;:::-;30145:153;;;;-1:-1:-1;;;30145:153:0;;;;;;;:::i;41089:988::-;41355:22;41405:1;41380:22;41397:4;41380:16;:22::i;:::-;:26;;;;:::i;:::-;41417:18;41438:26;;;:17;:26;;;;;;41355:51;;-1:-1:-1;41571:28:0;;;41567:328;;-1:-1:-1;;;;;41638:18:0;;41616:19;41638:18;;;:12;:18;;;;;;;;:34;;;;;;;;;41689:30;;;;;;:44;;;41806:30;;:17;:30;;;;;:43;;;41567:328;-1:-1:-1;41991:26:0;;;;:17;:26;;;;;;;;41984:33;;;-1:-1:-1;;;;;42035:18:0;;;;;:12;:18;;;;;:34;;;;;;;42028:41;41089:988::o;42372:1079::-;42650:10;:17;42625:22;;42650:21;;42670:1;;42650:21;:::i;:::-;42682:18;42703:24;;;:15;:24;;;;;;43076:10;:26;;42625:46;;-1:-1:-1;42703:24:0;;42625:46;;43076:26;;;;;;:::i;:::-;;;;;;;;;43054:48;;43140:11;43115:10;43126;43115:22;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;43220:28;;;:15;:28;;;;;;;:41;;;43392:24;;;;;43385:31;43427:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;42443:1008;;;42372:1079;:::o;39876:221::-;39961:14;39978:20;39995:2;39978:16;:20::i;:::-;-1:-1:-1;;;;;40009:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;40054:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;39876:221:0:o;30642:439::-;-1:-1:-1;;;;;30722:16:0;;30714:61;;;;-1:-1:-1;;;30714:61:0;;17886:2:1;30714:61:0;;;17868:21:1;;;17905:18;;;17898:30;17964:34;17944:18;;;17937:62;18016:18;;30714:61:0;17684:356:1;30714:61:0;28815:4;28839:16;;;:7;:16;;;;;;-1:-1:-1;;;;;28839:16:0;:30;30786:58;;;;-1:-1:-1;;;30786:58:0;;11898:2:1;30786:58:0;;;11880:21:1;11937:2;11917:18;;;11910:30;11976;11956:18;;;11949:58;12024:18;;30786:58:0;11696:352:1;30786:58:0;30857:45;30886:1;30890:2;30894:7;30857:20;:45::i;:::-;-1:-1:-1;;;;;30915:13:0;;;;;;:9;:13;;;;;:18;;30932:1;;30915:13;:18;;30932:1;;30915:18;:::i;:::-;;;;-1:-1:-1;;30944:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;30944:21:0;-1:-1:-1;;;;;30944:21:0;;;;;;;;30983:33;;30944:16;;;30983:33;;30944:16;;30983:33;25800:155;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:406:1;78:5;112:18;104:6;101:30;98:56;;;134:18;;:::i;:::-;172:57;217:2;196:15;;-1:-1:-1;;192:29:1;223:4;188:40;172:57;:::i;:::-;163:66;;252:6;245:5;238:21;292:3;283:6;278:3;274:16;271:25;268:45;;;309:1;306;299:12;268:45;358:6;353:3;346:4;339:5;335:16;322:43;412:1;405:4;396:6;389:5;385:18;381:29;374:40;14:406;;;;;:::o;425:173::-;493:20;;-1:-1:-1;;;;;542:31:1;;532:42;;522:70;;588:1;585;578:12;522:70;425:173;;;:::o;603:186::-;662:6;715:2;703:9;694:7;690:23;686:32;683:52;;;731:1;728;721:12;683:52;754:29;773:9;754:29;:::i;794:260::-;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;962:29;981:9;962:29;:::i;:::-;952:39;;1010:38;1044:2;1033:9;1029:18;1010:38;:::i;:::-;1000:48;;794:260;;;;;:::o;1059:328::-;1136:6;1144;1152;1205:2;1193:9;1184:7;1180:23;1176:32;1173:52;;;1221:1;1218;1211:12;1173:52;1244:29;1263:9;1244:29;:::i;:::-;1234:39;;1292:38;1326:2;1315:9;1311:18;1292:38;:::i;:::-;1282:48;;1377:2;1366:9;1362:18;1349:32;1339:42;;1059:328;;;;;:::o;1392:666::-;1487:6;1495;1503;1511;1564:3;1552:9;1543:7;1539:23;1535:33;1532:53;;;1581:1;1578;1571:12;1532:53;1604:29;1623:9;1604:29;:::i;:::-;1594:39;;1652:38;1686:2;1675:9;1671:18;1652:38;:::i;:::-;1642:48;;1737:2;1726:9;1722:18;1709:32;1699:42;;1792:2;1781:9;1777:18;1764:32;1819:18;1811:6;1808:30;1805:50;;;1851:1;1848;1841:12;1805:50;1874:22;;1927:4;1919:13;;1915:27;-1:-1:-1;1905:55:1;;1956:1;1953;1946:12;1905:55;1979:73;2044:7;2039:2;2026:16;2021:2;2017;2013:11;1979:73;:::i;:::-;1969:83;;;1392:666;;;;;;;:::o;2063:347::-;2128:6;2136;2189:2;2177:9;2168:7;2164:23;2160:32;2157:52;;;2205:1;2202;2195:12;2157:52;2228:29;2247:9;2228:29;:::i;:::-;2218:39;;2307:2;2296:9;2292:18;2279:32;2354:5;2347:13;2340:21;2333:5;2330:32;2320:60;;2376:1;2373;2366:12;2320:60;2399:5;2389:15;;;2063:347;;;;;:::o;2415:254::-;2483:6;2491;2544:2;2532:9;2523:7;2519:23;2515:32;2512:52;;;2560:1;2557;2550:12;2512:52;2583:29;2602:9;2583:29;:::i;:::-;2573:39;2659:2;2644:18;;;;2631:32;;-1:-1:-1;;;2415:254:1:o;2674:963::-;2758:6;2789:2;2832;2820:9;2811:7;2807:23;2803:32;2800:52;;;2848:1;2845;2838:12;2800:52;2888:9;2875:23;2917:18;2958:2;2950:6;2947:14;2944:34;;;2974:1;2971;2964:12;2944:34;3012:6;3001:9;2997:22;2987:32;;3057:7;3050:4;3046:2;3042:13;3038:27;3028:55;;3079:1;3076;3069:12;3028:55;3115:2;3102:16;3137:2;3133;3130:10;3127:36;;;3143:18;;:::i;:::-;3189:2;3186:1;3182:10;3172:20;;3212:28;3236:2;3232;3228:11;3212:28;:::i;:::-;3274:15;;;3305:12;;;;3337:11;;;3367;;;3363:20;;3360:33;-1:-1:-1;3357:53:1;;;3406:1;3403;3396:12;3357:53;3428:1;3419:10;;3438:169;3452:2;3449:1;3446:9;3438:169;;;3509:23;3528:3;3509:23;:::i;:::-;3497:36;;3470:1;3463:9;;;;;3553:12;;;;3585;;3438:169;;;-1:-1:-1;3626:5:1;2674:963;-1:-1:-1;;;;;;;;2674:963:1:o;3642:245::-;3700:6;3753:2;3741:9;3732:7;3728:23;3724:32;3721:52;;;3769:1;3766;3759:12;3721:52;3808:9;3795:23;3827:30;3851:5;3827:30;:::i;3892:249::-;3961:6;4014:2;4002:9;3993:7;3989:23;3985:32;3982:52;;;4030:1;4027;4020:12;3982:52;4062:9;4056:16;4081:30;4105:5;4081:30;:::i;4146:450::-;4215:6;4268:2;4256:9;4247:7;4243:23;4239:32;4236:52;;;4284:1;4281;4274:12;4236:52;4324:9;4311:23;4357:18;4349:6;4346:30;4343:50;;;4389:1;4386;4379:12;4343:50;4412:22;;4465:4;4457:13;;4453:27;-1:-1:-1;4443:55:1;;4494:1;4491;4484:12;4443:55;4517:73;4582:7;4577:2;4564:16;4559:2;4555;4551:11;4517:73;:::i;4601:180::-;4660:6;4713:2;4701:9;4692:7;4688:23;4684:32;4681:52;;;4729:1;4726;4719:12;4681:52;-1:-1:-1;4752:23:1;;4601:180;-1:-1:-1;4601:180:1:o;4786:184::-;4856:6;4909:2;4897:9;4888:7;4884:23;4880:32;4877:52;;;4925:1;4922;4915:12;4877:52;-1:-1:-1;4948:16:1;;4786:184;-1:-1:-1;4786:184:1:o;4975:257::-;5016:3;5054:5;5048:12;5081:6;5076:3;5069:19;5097:63;5153:6;5146:4;5141:3;5137:14;5130:4;5123:5;5119:16;5097:63;:::i;:::-;5214:2;5193:15;-1:-1:-1;;5189:29:1;5180:39;;;;5221:4;5176:50;;4975:257;-1:-1:-1;;4975:257:1:o;5237:569::-;5455:13;;5398:3;;5429;;5508:4;5535:15;;;5398:3;5578:201;5592:6;5589:1;5586:13;5578:201;;;5659:13;;-1:-1:-1;;;;;5655:39:1;5641:54;;5717:14;;;;5754:15;;;;5691:1;5607:9;5578:201;;;-1:-1:-1;5795:5:1;;5237:569;-1:-1:-1;;;;;;5237:569:1:o;5811:470::-;5990:3;6028:6;6022:13;6044:53;6090:6;6085:3;6078:4;6070:6;6066:17;6044:53;:::i;:::-;6160:13;;6119:16;;;;6182:57;6160:13;6119:16;6216:4;6204:17;;6182:57;:::i;:::-;6255:20;;5811:470;-1:-1:-1;;;;5811:470:1:o;6874:488::-;-1:-1:-1;;;;;7143:15:1;;;7125:34;;7195:15;;7190:2;7175:18;;7168:43;7242:2;7227:18;;7220:34;;;7290:3;7285:2;7270:18;;7263:31;;;7068:4;;7311:45;;7336:19;;7328:6;7311:45;:::i;:::-;7303:53;6874:488;-1:-1:-1;;;;;;6874:488:1:o;8647:219::-;8796:2;8785:9;8778:21;8759:4;8816:44;8856:2;8845:9;8841:18;8833:6;8816:44;:::i;10464:414::-;10666:2;10648:21;;;10705:2;10685:18;;;10678:30;10744:34;10739:2;10724:18;;10717:62;-1:-1:-1;;;10810:2:1;10795:18;;10788:48;10868:3;10853:19;;10464:414::o;22107:410::-;22309:2;22291:21;;;22348:2;22328:18;;;22321:30;22387:34;22382:2;22367:18;;22360:62;-1:-1:-1;;;22453:2:1;22438:18;;22431:44;22507:3;22492:19;;22107:410::o;22957:275::-;23028:2;23022:9;23093:2;23074:13;;-1:-1:-1;;23070:27:1;23058:40;;23128:18;23113:34;;23149:22;;;23110:62;23107:88;;;23175:18;;:::i;:::-;23211:2;23204:22;22957:275;;-1:-1:-1;22957:275:1:o;23237:128::-;23277:3;23308:1;23304:6;23301:1;23298:13;23295:39;;;23314:18;;:::i;:::-;-1:-1:-1;23350:9:1;;23237:128::o;23370:120::-;23410:1;23436;23426:35;;23441:18;;:::i;:::-;-1:-1:-1;23475:9:1;;23370:120::o;23495:168::-;23535:7;23601:1;23597;23593:6;23589:14;23586:1;23583:21;23578:1;23571:9;23564:17;23560:45;23557:71;;;23608:18;;:::i;:::-;-1:-1:-1;23648:9:1;;23495:168::o;23668:125::-;23708:4;23736:1;23733;23730:8;23727:34;;;23741:18;;:::i;:::-;-1:-1:-1;23778:9:1;;23668:125::o;23798:258::-;23870:1;23880:113;23894:6;23891:1;23888:13;23880:113;;;23970:11;;;23964:18;23951:11;;;23944:39;23916:2;23909:10;23880:113;;;24011:6;24008:1;24005:13;24002:48;;;-1:-1:-1;;24046:1:1;24028:16;;24021:27;23798:258::o;24061:380::-;24140:1;24136:12;;;;24183;;;24204:61;;24258:4;24250:6;24246:17;24236:27;;24204:61;24311:2;24303:6;24300:14;24280:18;24277:38;24274:161;;;24357:10;24352:3;24348:20;24345:1;24338:31;24392:4;24389:1;24382:15;24420:4;24417:1;24410:15;24274:161;;24061:380;;;:::o;24446:135::-;24485:3;-1:-1:-1;;24506:17:1;;24503:43;;;24526:18;;:::i;:::-;-1:-1:-1;24573:1:1;24562:13;;24446:135::o;24586:112::-;24618:1;24644;24634:35;;24649:18;;:::i;:::-;-1:-1:-1;24683:9:1;;24586:112::o;24703:127::-;24764:10;24759:3;24755:20;24752:1;24745:31;24795:4;24792:1;24785:15;24819:4;24816:1;24809:15;24835:127;24896:10;24891:3;24887:20;24884:1;24877:31;24927:4;24924:1;24917:15;24951:4;24948:1;24941:15;24967:127;25028:10;25023:3;25019:20;25016:1;25009:31;25059:4;25056:1;25049:15;25083:4;25080:1;25073:15;25099:127;25160:10;25155:3;25151:20;25148:1;25141:31;25191:4;25188:1;25181:15;25215:4;25212:1;25205:15;25231:127;25292:10;25287:3;25283:20;25280:1;25273:31;25323:4;25320:1;25313:15;25347:4;25344:1;25337:15;25363:131;-1:-1:-1;;;;;;25437:32:1;;25427:43;;25417:71;;25484:1;25481;25474:12
Swarm Source
ipfs://d5730972441eeac71490896217cadaaf10a781e65556fae4f5579d1bf68f2ecd
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.