Overview
ETH Balance
0.20000000005 ETH
Eth Value
$475.63 (@ $2,378.13/ETH)More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 84 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Approval For... | 17747527 | 584 days ago | IN | 0 ETH | 0.00039676 | ||||
Set Approval For... | 14890303 | 999 days ago | IN | 0 ETH | 0.00217905 | ||||
Set Approval For... | 14727994 | 1025 days ago | IN | 0 ETH | 0.00172997 | ||||
Set Approval For... | 14659214 | 1036 days ago | IN | 0 ETH | 0.0012413 | ||||
Mint | 14436306 | 1071 days ago | IN | 0.15 ETH | 0.01573371 | ||||
Set Approval For... | 14428220 | 1072 days ago | IN | 0 ETH | 0.00051708 | ||||
Set Approval For... | 14413742 | 1074 days ago | IN | 0 ETH | 0.00159639 | ||||
Set Approval For... | 14410174 | 1075 days ago | IN | 0 ETH | 0.00178945 | ||||
Set Approval For... | 14324501 | 1088 days ago | IN | 0 ETH | 0.00165666 | ||||
Mint | 14324388 | 1088 days ago | IN | 0.05 ETH | 0.00807981 | ||||
Set Price | 14299644 | 1092 days ago | IN | 0 ETH | 0.00134914 | ||||
Mint | 14297916 | 1092 days ago | IN | 0 ETH | 0.02262312 | ||||
Set Price | 14294081 | 1093 days ago | IN | 0 ETH | 0.0008031 | ||||
Set Price | 14269333 | 1097 days ago | IN | 0 ETH | 0.00186989 | ||||
Withdraw | 14268999 | 1097 days ago | IN | 0 ETH | 0.00149618 | ||||
Flip Pause Statu... | 14268872 | 1097 days ago | IN | 0 ETH | 0.00316724 | ||||
Flip Pre Sale Pa... | 14268866 | 1097 days ago | IN | 0 ETH | 0.00311167 | ||||
Pre Salemint | 14268038 | 1097 days ago | IN | 0.075 ETH | 0.01510679 | ||||
Pre Salemint | 14263186 | 1097 days ago | IN | 0.075 ETH | 0.02150548 | ||||
Pre Salemint | 14262551 | 1098 days ago | IN | 0.075 ETH | 0.01075603 | ||||
Pre Salemint | 14261625 | 1098 days ago | IN | 0.075 ETH | 0.00111686 | ||||
Set Approval For... | 14261539 | 1098 days ago | IN | 0 ETH | 0.00245354 | ||||
Pre Salemint | 14261374 | 1098 days ago | IN | 0.15 ETH | 0.01628806 | ||||
Pre Salemint | 14261243 | 1098 days ago | IN | 0.15 ETH | 0.01708211 | ||||
Pre Salemint | 14258376 | 1098 days ago | IN | 0.075 ETH | 0.01581039 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
14268999 | 1097 days ago | 6 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Spheraverse
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-02-20 */ /** *Submitted for verification at Etherscan.io on 2022-02-17 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } 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 * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 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); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } 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); } abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer( address indexed from, address indexed to, uint256 indexed tokenId ); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval( address indexed owner, address indexed approved, uint256 indexed tokenId ); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll( address indexed owner, address indexed operator, bool approved ); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } 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 tokenId); /** * @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); } 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); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } 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() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ /** * @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" ); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } 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; string public _baseURI; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require( owner != address(0), "ERC721: balance query for the zero address" ); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require( owner != address(0), "ERC721: owner query for nonexistent token" ); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require( _exists(tokenId), "ERC721Metadata: URI query for nonexistent token" ); string memory base = baseURI(); return bytes(base).length > 0 ? string(abi.encodePacked(base, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function baseURI() internal view virtual returns (string memory) { return _baseURI; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require( _exists(tokenId), "ERC721: approved query for nonexistent token" ); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { require(operator != _msgSender(), "ERC721: approve to caller"); _operatorApprovals[_msgSender()][operator] = approved; emit ApprovalForAll(_msgSender(), operator, approved); } /** * @dev See {IERC721-isApprovedForAll}. */ function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) { return _operatorApprovals[owner][operator]; } /** * @dev See {IERC721-transferFrom}. */ function transferFrom( address from, address to, uint256 tokenId ) public virtual override { //solhint-disable-next-line max-line-length require( _isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved" ); _transfer(from, to, tokenId); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId ) public virtual override { safeTransferFrom(from, to, tokenId, ""); } /** * @dev See {IERC721-safeTransferFrom}. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes memory _data ) public virtual override { require( _isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved" ); _safeTransfer(from, to, tokenId, _data); } /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * `_data` is additional data, it has no specified format and it is sent in call to `to`. * * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. * implement alternative mechanisms to perform token transfer, such as signature-based. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeTransfer( address from, address to, uint256 tokenId, bytes memory _data ) internal virtual { _transfer(from, to, tokenId); require( _checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Returns whether `tokenId` exists. * * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}. * * Tokens start existing when they are minted (`_mint`), * and stop existing when they are burned (`_burn`). */ function _exists(uint256 tokenId) internal view virtual returns (bool) { return _owners[tokenId] != address(0); } /** * @dev Returns whether `spender` is allowed to manage `tokenId`. * * Requirements: * * - `tokenId` must exist. */ function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) { require( _exists(tokenId), "ERC721: operator query for nonexistent token" ); address owner = ERC721.ownerOf(tokenId); return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender)); } /** * @dev Safely mints `tokenId` and transfers it to `to`. * * Requirements: * * - `tokenId` must not exist. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function _safeMint(address to, uint256 tokenId) internal virtual { _safeMint(to, tokenId, ""); } /** * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is * forwarded in {IERC721Receiver-onERC721Received} to contract recipients. */ function _safeMint( address to, uint256 tokenId, bytes memory _data ) internal virtual { _mint(to, tokenId); require( _checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer" ); } /** * @dev Mints `tokenId` and transfers it to `to`. * * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible * * Requirements: * * - `tokenId` must not exist. * - `to` cannot be the zero address. * * Emits a {Transfer} event. */ function _mint(address to, uint256 tokenId) internal virtual { require(to != address(0), "ERC721: mint to the zero address"); require(!_exists(tokenId), "ERC721: token already minted"); _beforeTokenTransfer(address(0), to, tokenId); _balances[to] += 1; _owners[tokenId] = to; emit Transfer(address(0), to, tokenId); } /** * @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); } /** * @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 of token that is not own" ); 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); } /** * @dev Approve `to` to operate on `tokenId` * * Emits a {Approval} event. */ function _approve(address to, uint256 tokenId) internal virtual { _tokenApprovals[tokenId] = to; emit Approval(ERC721.ownerOf(tokenId), to, tokenId); } /** * @dev 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(to).onERC721Received.selector; } catch (bytes memory reason) { if (reason.length == 0) { revert( "ERC721: transfer to non ERC721Receiver implementer" ); } else { assembly { revert(add(32, reason), mload(reason)) } } } } else { return true; } } /** * @dev Hook that is called before any token transfer. This includes minting * and burning. * * Calling conditions: * * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be * transferred to `to`. * - When `from` is zero, `tokenId` will be minted for `to`. * - When `to` is zero, ``from``'s `tokenId` will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 tokenId ) internal virtual {} } 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(); } } library MerkleProof { function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { bytes32 proofElement = proof[i]; if (computedHash <= proofElement) { computedHash = _efficientHash(computedHash, proofElement); } else { computedHash = _efficientHash(proofElement, computedHash); } } return computedHash; } function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } } contract Spheraverse is ERC721Enumerable, Ownable { using SafeMath for uint256; uint256 public constant _TOTALSUPPLY = 3000; uint256 public maxQuantity = 3; uint256 public price = 0.1 ether; uint256 public preSaleprice = 0.075 ether; uint256 public maxPublicSaleMintPerWallet = 5; bool public isPaused = true; bool public isPreSalePaused = true; uint256 public preSaleSupply = 2000; uint256 public reserve = 300; uint256 private tokenId = 1; uint256 public preSaleMaxQuantity = 60; struct userAddress { address userAddress; uint256 counter; } mapping(address => userAddress) public _preSaleAddresses; mapping(address => bool) public _preSaleAddressExist; mapping(address => userAddress) public _publicSaleAddresses; mapping(address => bool) public _publicSaleAddressExist; constructor(string memory baseURI) ERC721("Spheraverse", "SPVRS") { setBaseURI(baseURI); } function setBaseURI(string memory baseURI) public onlyOwner { _baseURI = baseURI; } function setPrice(uint256 _newPrice) public onlyOwner { price = _newPrice; } function setPreSalePrice(uint256 _newPrice) public onlyOwner { preSaleprice = _newPrice; } function setMaxxQtPerTx(uint256 _quantity) public onlyOwner { maxQuantity = _quantity; } function setReserveTokens(uint256 _quantity) public onlyOwner { reserve = _quantity; } modifier isSaleOpen() { require(totalSupply() < _TOTALSUPPLY, "Sale end"); _; } function flipPauseStatus() public onlyOwner { isPaused = !isPaused; } function flipPreSalePauseStatus() public onlyOwner { isPreSalePaused = !isPreSalePaused; } function getPrice(uint256 _quantity) public view returns (uint256) { return _quantity * price; } function getPreSalePrice(uint256 _quantity) public view returns (uint256) { return _quantity * preSaleprice; } function reserveTokens(uint256 quantity) public onlyOwner { require(quantity <= reserve, "The quantity exceeds the reserve."); reserve -= quantity; for (uint256 i = 0; i < quantity; i++) { _safeMint(msg.sender, totalsupply()); tokenId++; } } function preSalemint(bytes32[] calldata _merkleProof, bytes32 merkleRoot, uint256 quantity) public payable { if (_preSaleAddressExist[msg.sender] == false) { _preSaleAddresses[msg.sender] = userAddress({ userAddress: msg.sender, counter: 0 }); _preSaleAddressExist[msg.sender] = true; } require(isPreSalePaused == false, "Sale is not active at the moment"); require(totalSupply() + quantity <= _TOTALSUPPLY, "Quantity is greater than remaining Supply"); require(_preSaleAddresses[msg.sender].counter + quantity <= preSaleMaxQuantity, "Quantity Must Be Lesser Than Max Supply"); require(preSaleprice.mul(quantity) == msg.value, "Sent Ether Value Is Incorrect"); bytes32 leaf = keccak256(abi.encodePacked(msg.sender)); require(MerkleProof.verify(_merkleProof, merkleRoot, leaf),"Invalid Proof"); for (uint256 i; i < quantity; i++) { _safeMint(msg.sender, totalsupply()); tokenId++; } _preSaleAddresses[msg.sender].counter += quantity; } function mint(uint256 chosenAmount) public payable isSaleOpen { if (_publicSaleAddressExist[msg.sender] == false) { _publicSaleAddresses[msg.sender] = userAddress({ userAddress: msg.sender, counter: 0 }); _publicSaleAddressExist[msg.sender] = true; } require(isPaused == false, "Sale is not active at the moment"); require(_publicSaleAddresses[msg.sender].counter + chosenAmount <= maxPublicSaleMintPerWallet, "Max mints per wallet is 5"); require(totalSupply() + chosenAmount <= _TOTALSUPPLY - reserve, "Quantity must be lesser then MaxSupply"); require(chosenAmount > 0, "Number of tokens can not be less than or equal to 0"); require(chosenAmount <= maxQuantity, "Chosen Amount exceeds MaxQuantity"); require(price.mul(chosenAmount) == msg.value, "Sent ether value is incorrect"); for (uint256 i = 0; i < chosenAmount; i++) { _safeMint(msg.sender, totalsupply()); tokenId++; } _publicSaleAddresses[msg.sender].counter += chosenAmount; } function tokensOfOwner(address _owner) public view returns (uint256[] memory) { uint256 count = balanceOf(_owner); uint256[] memory result = new uint256[](count); for (uint256 index = 0; index < count; index++) { result[index] = tokenOfOwnerByIndex(_owner, index); } return result; } function withdraw() public onlyOwner { uint256 balance = address(this).balance; payable(msg.sender).transfer(balance); } function totalsupply() private view returns (uint256) { return tokenId; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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"},{"inputs":[],"name":"_TOTALSUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_preSaleAddressExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_preSaleAddresses","outputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"counter","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_publicSaleAddressExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_publicSaleAddresses","outputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"counter","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flipPauseStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipPreSalePauseStatus","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":"uint256","name":"_quantity","type":"uint256"}],"name":"getPreSalePrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPreSalePaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPublicSaleMintPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxQuantity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"chosenAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleMaxQuantity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"preSaleSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"_merkleProof","type":"bytes32[]"},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32"},{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"preSalemint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"preSaleprice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"quantity","type":"uint256"}],"name":"reserveTokens","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":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"setMaxxQtPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPreSalePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_quantity","type":"uint256"}],"name":"setReserveTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"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":[{"internalType":"address","name":"_owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526003600c5567016345785d8a0000600d5567010a741a46278000600e556005600f556001601060006101000a81548160ff0219169083151502179055506001601060016101000a81548160ff0219169083151502179055506107d060115561012c6012556001601355603c6014553480156200007f57600080fd5b5060405162005ca238038062005ca28339818101604052810190620000a5919062000419565b6040518060400160405280600b81526020017f53706865726176657273650000000000000000000000000000000000000000008152506040518060400160405280600581526020017f5350565253000000000000000000000000000000000000000000000000000000815250816000908051906020019062000129929190620002eb565b50806001908051906020019062000142929190620002eb565b5050506000620001576200020e60201b60201c565b905080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35062000207816200021660201b60201c565b5062000671565b600033905090565b620002266200020e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200024c620002c160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200029c9062000491565b60405180910390fd5b8060069080519060200190620002bd929190620002eb565b5050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620002f99062000559565b90600052602060002090601f0160209004810192826200031d576000855562000369565b82601f106200033857805160ff191683800117855562000369565b8280016001018555821562000369579182015b82811115620003685782518255916020019190600101906200034b565b5b5090506200037891906200037c565b5090565b5b80821115620003975760008160009055506001016200037d565b5090565b6000620003b2620003ac84620004dc565b620004b3565b905082815260208101848484011115620003d157620003d062000628565b5b620003de84828562000523565b509392505050565b600082601f830112620003fe57620003fd62000623565b5b8151620004108482602086016200039b565b91505092915050565b60006020828403121562000432576200043162000632565b5b600082015167ffffffffffffffff8111156200045357620004526200062d565b5b6200046184828501620003e6565b91505092915050565b60006200047960208362000512565b9150620004868262000648565b602082019050919050565b60006020820190508181036000830152620004ac816200046a565b9050919050565b6000620004bf620004d2565b9050620004cd82826200058f565b919050565b6000604051905090565b600067ffffffffffffffff821115620004fa57620004f9620005f4565b5b620005058262000637565b9050602081019050919050565b600082825260208201905092915050565b60005b838110156200054357808201518184015260208101905062000526565b8381111562000553576000848401525b50505050565b600060028204905060018216806200057257607f821691505b60208210811415620005895762000588620005c5565b5b50919050565b6200059a8262000637565b810181811067ffffffffffffffff82111715620005bc57620005bb620005f4565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b61562180620006816000396000f3fe6080604052600436106102875760003560e01c8063743976a01161015a578063b187bd26116100c1578063e640cf7d1161007a578063e640cf7d146109ed578063e757223014610a18578063e985e9c514610a55578063f2fde38b14610a92578063f3c7fbbb14610abb578063fa62884c14610af857610287565b8063b187bd26146108dd578063b88d4fde14610908578063c87b56dd14610931578063cd3293de1461096e578063d031370b14610999578063db4568e2146109c257610287565b80639d38fd21116101135780639d38fd21146107ca5780639e21dabb146107f3578063a035b1fe14610830578063a0712d681461085b578063a22cb46514610877578063aaf2b168146108a057610287565b8063743976a0146106ba5780637d7eee42146106e55780638462151c1461070e5780638da5cb5b1461074b57806391b7f5ed1461077657806395d89b411461079f57610287565b80632f745c59116101fe57806355f804b3116101b757806355f804b31461059957806358275ee4146105c25780636352211e1461060057806367f8ccb81461063d5780636a44e1731461065457806370a082311461067d57610287565b80632f745c59146104985780633ccfd60b146104d557806342842e0e146104ec5780634a173285146105155780634f6ccce714610531578063558da2e31461056e57610287565b806309f29f921161025057806309f29f921461039857806310046824146103c357806318160ddd146103ee57806323b872dd146104195780632e055bcc146104425780632e280e321461046d57610287565b8062b0e7031461028c57806301ffc9a7146102ca57806306fdde0314610307578063081812fc14610332578063095ea7b31461036f575b600080fd5b34801561029857600080fd5b506102b360048036038101906102ae9190613aed565b610b0f565b6040516102c1929190614420565b60405180910390f35b3480156102d657600080fd5b506102f160048036038101906102ec9190613d24565b610b53565b6040516102fe919061446b565b60405180910390f35b34801561031357600080fd5b5061031c610bcd565b6040516103299190614486565b60405180910390f35b34801561033e57600080fd5b5061035960048036038101906103549190613dc7565b610c5f565b60405161036691906143b9565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190613c70565b610ce4565b005b3480156103a457600080fd5b506103ad610dfc565b6040516103ba9190614868565b60405180910390f35b3480156103cf57600080fd5b506103d8610e02565b6040516103e59190614868565b60405180910390f35b3480156103fa57600080fd5b50610403610e08565b6040516104109190614868565b60405180910390f35b34801561042557600080fd5b50610440600480360381019061043b9190613b5a565b610e15565b005b34801561044e57600080fd5b50610457610e75565b6040516104649190614868565b60405180910390f35b34801561047957600080fd5b50610482610e7b565b60405161048f919061446b565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba9190613c70565b610e8e565b6040516104cc9190614868565b60405180910390f35b3480156104e157600080fd5b506104ea610f33565b005b3480156104f857600080fd5b50610513600480360381019061050e9190613b5a565b610ffe565b005b61052f600480360381019061052a9190613cb0565b61101e565b005b34801561053d57600080fd5b5061055860048036038101906105539190613dc7565b611482565b6040516105659190614868565b60405180910390f35b34801561057a57600080fd5b506105836114f3565b6040516105909190614868565b60405180910390f35b3480156105a557600080fd5b506105c060048036038101906105bb9190613d7e565b6114f9565b005b3480156105ce57600080fd5b506105e960048036038101906105e49190613aed565b61158f565b6040516105f7929190614420565b60405180910390f35b34801561060c57600080fd5b5061062760048036038101906106229190613dc7565b6115d3565b60405161063491906143b9565b60405180910390f35b34801561064957600080fd5b50610652611685565b005b34801561066057600080fd5b5061067b60048036038101906106769190613dc7565b61172d565b005b34801561068957600080fd5b506106a4600480360381019061069f9190613aed565b6117b3565b6040516106b19190614868565b60405180910390f35b3480156106c657600080fd5b506106cf61186b565b6040516106dc9190614486565b60405180910390f35b3480156106f157600080fd5b5061070c60048036038101906107079190613dc7565b6118f9565b005b34801561071a57600080fd5b5061073560048036038101906107309190613aed565b61197f565b6040516107429190614449565b60405180910390f35b34801561075757600080fd5b50610760611a2d565b60405161076d91906143b9565b60405180910390f35b34801561078257600080fd5b5061079d60048036038101906107989190613dc7565b611a57565b005b3480156107ab57600080fd5b506107b4611add565b6040516107c19190614486565b60405180910390f35b3480156107d657600080fd5b506107f160048036038101906107ec9190613dc7565b611b6f565b005b3480156107ff57600080fd5b5061081a60048036038101906108159190613dc7565b611bf5565b6040516108279190614868565b60405180910390f35b34801561083c57600080fd5b50610845611c0c565b6040516108529190614868565b60405180910390f35b61087560048036038101906108709190613dc7565b611c12565b005b34801561088357600080fd5b5061089e60048036038101906108999190613c30565b61209c565b005b3480156108ac57600080fd5b506108c760048036038101906108c29190613aed565b61221d565b6040516108d4919061446b565b60405180910390f35b3480156108e957600080fd5b506108f261223d565b6040516108ff919061446b565b60405180910390f35b34801561091457600080fd5b5061092f600480360381019061092a9190613bad565b612250565b005b34801561093d57600080fd5b5061095860048036038101906109539190613dc7565b6122b2565b6040516109659190614486565b60405180910390f35b34801561097a57600080fd5b50610983612359565b6040516109909190614868565b60405180910390f35b3480156109a557600080fd5b506109c060048036038101906109bb9190613dc7565b61235f565b005b3480156109ce57600080fd5b506109d7612484565b6040516109e49190614868565b60405180910390f35b3480156109f957600080fd5b50610a0261248a565b604051610a0f9190614868565b60405180910390f35b348015610a2457600080fd5b50610a3f6004803603810190610a3a9190613dc7565b612490565b604051610a4c9190614868565b60405180910390f35b348015610a6157600080fd5b50610a7c6004803603810190610a779190613b1a565b6124a7565b604051610a89919061446b565b60405180910390f35b348015610a9e57600080fd5b50610ab96004803603810190610ab49190613aed565b61253b565b005b348015610ac757600080fd5b50610ae26004803603810190610add9190613aed565b612633565b604051610aef919061446b565b60405180910390f35b348015610b0457600080fd5b50610b0d612653565b005b60156020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610bc65750610bc5826126fb565b5b9050919050565b606060008054610bdc90614b5b565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0890614b5b565b8015610c555780601f10610c2a57610100808354040283529160200191610c55565b820191906000526020600020905b815481529060010190602001808311610c3857829003601f168201915b5050505050905090565b6000610c6a826127dd565b610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca090614708565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610cef826115d3565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d57906147a8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610d7f612849565b73ffffffffffffffffffffffffffffffffffffffff161480610dae5750610dad81610da8612849565b6124a7565b5b610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de4906145e8565b60405180910390fd5b610df78383612851565b505050565b60145481565b600f5481565b6000600980549050905090565b610e26610e20612849565b8261290a565b610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c906147c8565b60405180910390fd5b610e708383836129e8565b505050565b60115481565b601060019054906101000a900460ff1681565b6000610e99836117b3565b8210610eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed1906144c8565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610f3b612849565b73ffffffffffffffffffffffffffffffffffffffff16610f59611a2d565b73ffffffffffffffffffffffffffffffffffffffff1614610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa690614728565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ffa573d6000803e3d6000fd5b5050565b61101983838360405180602001604052806000815250612250565b505050565b60001515601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561118f5760405180604001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016000815250601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506001601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60001515601060019054906101000a900460ff161515146111e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dc90614848565b60405180910390fd5b610bb8816111f1610e08565b6111fb9190614986565b111561123c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611233906145c8565b60405180910390fd5b60145481601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461128d9190614986565b11156112ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c590614608565b60405180910390fd5b346112e482600e54612c4490919063ffffffff16565b14611324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131b90614828565b60405180910390fd5b600033604051602001611337919061437a565b60405160208183030381529060405280519060200120905061139b858580806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508483612c5a565b6113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d190614808565b60405180910390fd5b60005b82811015611421576113f6336113f1612c71565b612c7b565b6013600081548092919061140990614bbe565b9190505550808061141990614bbe565b9150506113dd565b5081601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282546114749190614986565b925050819055505050505050565b600061148c610e08565b82106114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c4906147e8565b60405180910390fd5b600982815481106114e1576114e0614d18565b5b90600052602060002001549050919050565b600e5481565b611501612849565b73ffffffffffffffffffffffffffffffffffffffff1661151f611a2d565b73ffffffffffffffffffffffffffffffffffffffff1614611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c90614728565b60405180910390fd5b806006908051906020019061158b929190613896565b5050565b60176020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561167c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167390614648565b60405180910390fd5b80915050919050565b61168d612849565b73ffffffffffffffffffffffffffffffffffffffff166116ab611a2d565b73ffffffffffffffffffffffffffffffffffffffff1614611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f890614728565b60405180910390fd5b601060019054906101000a900460ff1615601060016101000a81548160ff021916908315150217905550565b611735612849565b73ffffffffffffffffffffffffffffffffffffffff16611753611a2d565b73ffffffffffffffffffffffffffffffffffffffff16146117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a090614728565b60405180910390fd5b8060128190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181b90614628565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6006805461187890614b5b565b80601f01602080910402602001604051908101604052809291908181526020018280546118a490614b5b565b80156118f15780601f106118c6576101008083540402835291602001916118f1565b820191906000526020600020905b8154815290600101906020018083116118d457829003601f168201915b505050505081565b611901612849565b73ffffffffffffffffffffffffffffffffffffffff1661191f611a2d565b73ffffffffffffffffffffffffffffffffffffffff1614611975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196c90614728565b60405180910390fd5b80600e8190555050565b6060600061198c836117b3565b905060008167ffffffffffffffff8111156119aa576119a9614d47565b5b6040519080825280602002602001820160405280156119d85781602001602082028036833780820191505090505b50905060005b82811015611a22576119f08582610e8e565b828281518110611a0357611a02614d18565b5b6020026020010181815250508080611a1a90614bbe565b9150506119de565b508092505050919050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611a5f612849565b73ffffffffffffffffffffffffffffffffffffffff16611a7d611a2d565b73ffffffffffffffffffffffffffffffffffffffff1614611ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aca90614728565b60405180910390fd5b80600d8190555050565b606060018054611aec90614b5b565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1890614b5b565b8015611b655780601f10611b3a57610100808354040283529160200191611b65565b820191906000526020600020905b815481529060010190602001808311611b4857829003601f168201915b5050505050905090565b611b77612849565b73ffffffffffffffffffffffffffffffffffffffff16611b95611a2d565b73ffffffffffffffffffffffffffffffffffffffff1614611beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be290614728565b60405180910390fd5b80600c8190555050565b6000600e5482611c059190614a0d565b9050919050565b600d5481565b610bb8611c1d610e08565b10611c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c54906146a8565b60405180910390fd5b60001515601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611dce5760405180604001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016000815250601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506001601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60001515601060009054906101000a900460ff16151514611e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1b90614848565b60405180910390fd5b600f5481601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154611e759190614986565b1115611eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ead906146c8565b60405180910390fd5b601254610bb8611ec69190614a67565b81611ecf610e08565b611ed99190614986565b1115611f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1190614748565b60405180910390fd5b60008111611f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f54906144a8565b60405180910390fd5b600c54811115611fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f99906146e8565b60405180910390fd5b34611fb882600d54612c4490919063ffffffff16565b14611ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fef90614668565b60405180910390fd5b60005b8181101561203f576120143361200f612c71565b612c7b565b6013600081548092919061202790614bbe565b9190505550808061203790614bbe565b915050611ffb565b5080601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282546120929190614986565b9250508190555050565b6120a4612849565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210990614588565b60405180910390fd5b806005600061211f612849565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166121cc612849565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612211919061446b565b60405180910390a35050565b60186020528060005260406000206000915054906101000a900460ff1681565b601060009054906101000a900460ff1681565b61226161225b612849565b8361290a565b6122a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612297906147c8565b60405180910390fd5b6122ac84848484612c99565b50505050565b60606122bd826127dd565b6122fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f390614788565b60405180910390fd5b6000612306612cf5565b905060008151116123265760405180602001604052806000815250612351565b8061233084612d87565b604051602001612341929190614395565b6040516020818303038152906040525b915050919050565b60125481565b612367612849565b73ffffffffffffffffffffffffffffffffffffffff16612385611a2d565b73ffffffffffffffffffffffffffffffffffffffff16146123db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d290614728565b60405180910390fd5b601254811115612420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241790614548565b60405180910390fd5b80601260008282546124329190614a67565b9250508190555060005b818110156124805761245533612450612c71565b612c7b565b6013600081548092919061246890614bbe565b9190505550808061247890614bbe565b91505061243c565b5050565b610bb881565b600c5481565b6000600d54826124a09190614a0d565b9050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612543612849565b73ffffffffffffffffffffffffffffffffffffffff16612561611a2d565b73ffffffffffffffffffffffffffffffffffffffff16146125b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ae90614728565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261e90614508565b60405180910390fd5b61263081612ee8565b50565b60166020528060005260406000206000915054906101000a900460ff1681565b61265b612849565b73ffffffffffffffffffffffffffffffffffffffff16612679611a2d565b73ffffffffffffffffffffffffffffffffffffffff16146126cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c690614728565b60405180910390fd5b601060009054906101000a900460ff1615601060006101000a81548160ff021916908315150217905550565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806127c657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806127d657506127d582612fae565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166128c4836115d3565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612915826127dd565b612954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294b906145a8565b60405180910390fd5b600061295f836115d3565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806129ce57508373ffffffffffffffffffffffffffffffffffffffff166129b684610c5f565b73ffffffffffffffffffffffffffffffffffffffff16145b806129df57506129de81856124a7565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612a08826115d3565b73ffffffffffffffffffffffffffffffffffffffff1614612a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5590614768565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac590614568565b60405180910390fd5b612ad9838383613018565b612ae4600082612851565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b349190614a67565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b8b9190614986565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60008183612c529190614a0d565b905092915050565b600082612c67858461312c565b1490509392505050565b6000601354905090565b612c958282604051806020016040528060008152506131a1565b5050565b612ca48484846129e8565b612cb0848484846131fc565b612cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce6906144e8565b60405180910390fd5b50505050565b606060068054612d0490614b5b565b80601f0160208091040260200160405190810160405280929190818152602001828054612d3090614b5b565b8015612d7d5780601f10612d5257610100808354040283529160200191612d7d565b820191906000526020600020905b815481529060010190602001808311612d6057829003601f168201915b5050505050905090565b60606000821415612dcf576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612ee3565b600082905060005b60008214612e01578080612dea90614bbe565b915050600a82612dfa91906149dc565b9150612dd7565b60008167ffffffffffffffff811115612e1d57612e1c614d47565b5b6040519080825280601f01601f191660200182016040528015612e4f5781602001600182028036833780820191505090505b5090505b60008514612edc57600182612e689190614a67565b9150600a85612e779190614c2b565b6030612e839190614986565b60f81b818381518110612e9957612e98614d18565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612ed591906149dc565b9450612e53565b8093505050505b919050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b613023838383613393565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156130665761306181613398565b6130a5565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146130a4576130a383826133e1565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130e8576130e38161354e565b613127565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461312657613125828261361f565b5b5b505050565b60008082905060005b845181101561319657600085828151811061315357613152614d18565b5b602002602001015190508083116131755761316e838261369e565b9250613182565b61317f818461369e565b92505b50808061318e90614bbe565b915050613135565b508091505092915050565b6131ab83836136b5565b6131b860008484846131fc565b6131f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ee906144e8565b60405180910390fd5b505050565b600061321d8473ffffffffffffffffffffffffffffffffffffffff16613883565b15613386578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613246612849565b8786866040518563ffffffff1660e01b815260040161326894939291906143d4565b602060405180830381600087803b15801561328257600080fd5b505af19250505080156132b357506040513d601f19601f820116820180604052508101906132b09190613d51565b60015b613336573d80600081146132e3576040519150601f19603f3d011682016040523d82523d6000602084013e6132e8565b606091505b5060008151141561332e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613325906144e8565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061338b565b600190505b949350505050565b505050565b600980549050600a600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016133ee846117b3565b6133f89190614a67565b90506000600860008481526020019081526020016000205490508181146134dd576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016009805490506135629190614a67565b90506000600a600084815260200190815260200160002054905060006009838154811061359257613591614d18565b5b9060005260206000200154905080600983815481106135b4576135b3614d18565b5b906000526020600020018190555081600a600083815260200190815260200160002081905550600a600085815260200190815260200160002060009055600980548061360357613602614ce9565b5b6001900381819060005260206000200160009055905550505050565b600061362a836117b3565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b600082600052816020526040600020905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371c90614688565b60405180910390fd5b61372e816127dd565b1561376e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161376590614528565b60405180910390fd5b61377a60008383613018565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546137ca9190614986565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b8280546138a290614b5b565b90600052602060002090601f0160209004810192826138c4576000855561390b565b82601f106138dd57805160ff191683800117855561390b565b8280016001018555821561390b579182015b8281111561390a5782518255916020019190600101906138ef565b5b509050613918919061391c565b5090565b5b8082111561393557600081600090555060010161391d565b5090565b600061394c613947846148a8565b614883565b90508281526020810184848401111561396857613967614d85565b5b613973848285614b19565b509392505050565b600061398e613989846148d9565b614883565b9050828152602081018484840111156139aa576139a9614d85565b5b6139b5848285614b19565b509392505050565b6000813590506139cc81615578565b92915050565b60008083601f8401126139e8576139e7614d7b565b5b8235905067ffffffffffffffff811115613a0557613a04614d76565b5b602083019150836020820283011115613a2157613a20614d80565b5b9250929050565b600081359050613a378161558f565b92915050565b600081359050613a4c816155a6565b92915050565b600081359050613a61816155bd565b92915050565b600081519050613a76816155bd565b92915050565b600082601f830112613a9157613a90614d7b565b5b8135613aa1848260208601613939565b91505092915050565b600082601f830112613abf57613abe614d7b565b5b8135613acf84826020860161397b565b91505092915050565b600081359050613ae7816155d4565b92915050565b600060208284031215613b0357613b02614d8f565b5b6000613b11848285016139bd565b91505092915050565b60008060408385031215613b3157613b30614d8f565b5b6000613b3f858286016139bd565b9250506020613b50858286016139bd565b9150509250929050565b600080600060608486031215613b7357613b72614d8f565b5b6000613b81868287016139bd565b9350506020613b92868287016139bd565b9250506040613ba386828701613ad8565b9150509250925092565b60008060008060808587031215613bc757613bc6614d8f565b5b6000613bd5878288016139bd565b9450506020613be6878288016139bd565b9350506040613bf787828801613ad8565b925050606085013567ffffffffffffffff811115613c1857613c17614d8a565b5b613c2487828801613a7c565b91505092959194509250565b60008060408385031215613c4757613c46614d8f565b5b6000613c55858286016139bd565b9250506020613c6685828601613a28565b9150509250929050565b60008060408385031215613c8757613c86614d8f565b5b6000613c95858286016139bd565b9250506020613ca685828601613ad8565b9150509250929050565b60008060008060608587031215613cca57613cc9614d8f565b5b600085013567ffffffffffffffff811115613ce857613ce7614d8a565b5b613cf4878288016139d2565b94509450506020613d0787828801613a3d565b9250506040613d1887828801613ad8565b91505092959194509250565b600060208284031215613d3a57613d39614d8f565b5b6000613d4884828501613a52565b91505092915050565b600060208284031215613d6757613d66614d8f565b5b6000613d7584828501613a67565b91505092915050565b600060208284031215613d9457613d93614d8f565b5b600082013567ffffffffffffffff811115613db257613db1614d8a565b5b613dbe84828501613aaa565b91505092915050565b600060208284031215613ddd57613ddc614d8f565b5b6000613deb84828501613ad8565b91505092915050565b6000613e00838361435c565b60208301905092915050565b613e1581614a9b565b82525050565b613e2c613e2782614a9b565b614c07565b82525050565b6000613e3d8261491a565b613e478185614948565b9350613e528361490a565b8060005b83811015613e83578151613e6a8882613df4565b9750613e758361493b565b925050600181019050613e56565b5085935050505092915050565b613e9981614aad565b82525050565b6000613eaa82614925565b613eb48185614959565b9350613ec4818560208601614b28565b613ecd81614d94565b840191505092915050565b6000613ee382614930565b613eed818561496a565b9350613efd818560208601614b28565b613f0681614d94565b840191505092915050565b6000613f1c82614930565b613f26818561497b565b9350613f36818560208601614b28565b80840191505092915050565b6000613f4f60338361496a565b9150613f5a82614db2565b604082019050919050565b6000613f72602b8361496a565b9150613f7d82614e01565b604082019050919050565b6000613f9560328361496a565b9150613fa082614e50565b604082019050919050565b6000613fb860268361496a565b9150613fc382614e9f565b604082019050919050565b6000613fdb601c8361496a565b9150613fe682614eee565b602082019050919050565b6000613ffe60218361496a565b915061400982614f17565b604082019050919050565b600061402160248361496a565b915061402c82614f66565b604082019050919050565b600061404460198361496a565b915061404f82614fb5565b602082019050919050565b6000614067602c8361496a565b915061407282614fde565b604082019050919050565b600061408a60298361496a565b91506140958261502d565b604082019050919050565b60006140ad60388361496a565b91506140b88261507c565b604082019050919050565b60006140d060278361496a565b91506140db826150cb565b604082019050919050565b60006140f3602a8361496a565b91506140fe8261511a565b604082019050919050565b600061411660298361496a565b915061412182615169565b604082019050919050565b6000614139601d8361496a565b9150614144826151b8565b602082019050919050565b600061415c60208361496a565b9150614167826151e1565b602082019050919050565b600061417f60088361496a565b915061418a8261520a565b602082019050919050565b60006141a260198361496a565b91506141ad82615233565b602082019050919050565b60006141c560218361496a565b91506141d08261525c565b604082019050919050565b60006141e8602c8361496a565b91506141f3826152ab565b604082019050919050565b600061420b60208361496a565b9150614216826152fa565b602082019050919050565b600061422e60268361496a565b915061423982615323565b604082019050919050565b600061425160298361496a565b915061425c82615372565b604082019050919050565b6000614274602f8361496a565b915061427f826153c1565b604082019050919050565b600061429760218361496a565b91506142a282615410565b604082019050919050565b60006142ba60318361496a565b91506142c58261545f565b604082019050919050565b60006142dd602c8361496a565b91506142e8826154ae565b604082019050919050565b6000614300600d8361496a565b915061430b826154fd565b602082019050919050565b6000614323601d8361496a565b915061432e82615526565b602082019050919050565b600061434660208361496a565b91506143518261554f565b602082019050919050565b61436581614b0f565b82525050565b61437481614b0f565b82525050565b60006143868284613e1b565b60148201915081905092915050565b60006143a18285613f11565b91506143ad8284613f11565b91508190509392505050565b60006020820190506143ce6000830184613e0c565b92915050565b60006080820190506143e96000830187613e0c565b6143f66020830186613e0c565b614403604083018561436b565b81810360608301526144158184613e9f565b905095945050505050565b60006040820190506144356000830185613e0c565b614442602083018461436b565b9392505050565b600060208201905081810360008301526144638184613e32565b905092915050565b60006020820190506144806000830184613e90565b92915050565b600060208201905081810360008301526144a08184613ed8565b905092915050565b600060208201905081810360008301526144c181613f42565b9050919050565b600060208201905081810360008301526144e181613f65565b9050919050565b6000602082019050818103600083015261450181613f88565b9050919050565b6000602082019050818103600083015261452181613fab565b9050919050565b6000602082019050818103600083015261454181613fce565b9050919050565b6000602082019050818103600083015261456181613ff1565b9050919050565b6000602082019050818103600083015261458181614014565b9050919050565b600060208201905081810360008301526145a181614037565b9050919050565b600060208201905081810360008301526145c18161405a565b9050919050565b600060208201905081810360008301526145e18161407d565b9050919050565b60006020820190508181036000830152614601816140a0565b9050919050565b60006020820190508181036000830152614621816140c3565b9050919050565b60006020820190508181036000830152614641816140e6565b9050919050565b6000602082019050818103600083015261466181614109565b9050919050565b600060208201905081810360008301526146818161412c565b9050919050565b600060208201905081810360008301526146a18161414f565b9050919050565b600060208201905081810360008301526146c181614172565b9050919050565b600060208201905081810360008301526146e181614195565b9050919050565b60006020820190508181036000830152614701816141b8565b9050919050565b60006020820190508181036000830152614721816141db565b9050919050565b60006020820190508181036000830152614741816141fe565b9050919050565b6000602082019050818103600083015261476181614221565b9050919050565b6000602082019050818103600083015261478181614244565b9050919050565b600060208201905081810360008301526147a181614267565b9050919050565b600060208201905081810360008301526147c18161428a565b9050919050565b600060208201905081810360008301526147e1816142ad565b9050919050565b60006020820190508181036000830152614801816142d0565b9050919050565b60006020820190508181036000830152614821816142f3565b9050919050565b6000602082019050818103600083015261484181614316565b9050919050565b6000602082019050818103600083015261486181614339565b9050919050565b600060208201905061487d600083018461436b565b92915050565b600061488d61489e565b90506148998282614b8d565b919050565b6000604051905090565b600067ffffffffffffffff8211156148c3576148c2614d47565b5b6148cc82614d94565b9050602081019050919050565b600067ffffffffffffffff8211156148f4576148f3614d47565b5b6148fd82614d94565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061499182614b0f565b915061499c83614b0f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156149d1576149d0614c5c565b5b828201905092915050565b60006149e782614b0f565b91506149f283614b0f565b925082614a0257614a01614c8b565b5b828204905092915050565b6000614a1882614b0f565b9150614a2383614b0f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a5c57614a5b614c5c565b5b828202905092915050565b6000614a7282614b0f565b9150614a7d83614b0f565b925082821015614a9057614a8f614c5c565b5b828203905092915050565b6000614aa682614aef565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614b46578082015181840152602081019050614b2b565b83811115614b55576000848401525b50505050565b60006002820490506001821680614b7357607f821691505b60208210811415614b8757614b86614cba565b5b50919050565b614b9682614d94565b810181811067ffffffffffffffff82111715614bb557614bb4614d47565b5b80604052505050565b6000614bc982614b0f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614bfc57614bfb614c5c565b5b600182019050919050565b6000614c1282614c19565b9050919050565b6000614c2482614da5565b9050919050565b6000614c3682614b0f565b9150614c4183614b0f565b925082614c5157614c50614c8b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4e756d626572206f6620746f6b656e732063616e206e6f74206265206c65737360008201527f207468616e206f7220657175616c20746f203000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f546865207175616e74697479206578636565647320746865207265736572766560008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f5175616e746974792069732067726561746572207468616e2072656d61696e6960008201527f6e6720537570706c790000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f5175616e74697479204d757374204265204c6573736572205468616e204d617860008201527f20537570706c7900000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f53656e742065746865722076616c756520697320696e636f7272656374000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f53616c6520656e64000000000000000000000000000000000000000000000000600082015250565b7f4d6178206d696e7473207065722077616c6c6574206973203500000000000000600082015250565b7f43686f73656e20416d6f756e742065786365656473204d61785175616e74697460008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5175616e74697479206d757374206265206c6573736572207468656e204d617860008201527f537570706c790000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f496e76616c69642050726f6f6600000000000000000000000000000000000000600082015250565b7f53656e742045746865722056616c756520497320496e636f7272656374000000600082015250565b7f53616c65206973206e6f742061637469766520617420746865206d6f6d656e74600082015250565b61558181614a9b565b811461558c57600080fd5b50565b61559881614aad565b81146155a357600080fd5b50565b6155af81614ab9565b81146155ba57600080fd5b50565b6155c681614ac3565b81146155d157600080fd5b50565b6155dd81614b0f565b81146155e857600080fd5b5056fea264697066735822122051b9e30b9c38d9b755f773ebc222b6fb7aec79a44bc7cbab4e16eca7697335d764736f6c634300080700330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003768747470733a2f2f73706865726176657273652d6261636b656e642e6865726f6b756170702e636f6d2f6170692f6d657461646174612f000000000000000000
Deployed Bytecode
0x6080604052600436106102875760003560e01c8063743976a01161015a578063b187bd26116100c1578063e640cf7d1161007a578063e640cf7d146109ed578063e757223014610a18578063e985e9c514610a55578063f2fde38b14610a92578063f3c7fbbb14610abb578063fa62884c14610af857610287565b8063b187bd26146108dd578063b88d4fde14610908578063c87b56dd14610931578063cd3293de1461096e578063d031370b14610999578063db4568e2146109c257610287565b80639d38fd21116101135780639d38fd21146107ca5780639e21dabb146107f3578063a035b1fe14610830578063a0712d681461085b578063a22cb46514610877578063aaf2b168146108a057610287565b8063743976a0146106ba5780637d7eee42146106e55780638462151c1461070e5780638da5cb5b1461074b57806391b7f5ed1461077657806395d89b411461079f57610287565b80632f745c59116101fe57806355f804b3116101b757806355f804b31461059957806358275ee4146105c25780636352211e1461060057806367f8ccb81461063d5780636a44e1731461065457806370a082311461067d57610287565b80632f745c59146104985780633ccfd60b146104d557806342842e0e146104ec5780634a173285146105155780634f6ccce714610531578063558da2e31461056e57610287565b806309f29f921161025057806309f29f921461039857806310046824146103c357806318160ddd146103ee57806323b872dd146104195780632e055bcc146104425780632e280e321461046d57610287565b8062b0e7031461028c57806301ffc9a7146102ca57806306fdde0314610307578063081812fc14610332578063095ea7b31461036f575b600080fd5b34801561029857600080fd5b506102b360048036038101906102ae9190613aed565b610b0f565b6040516102c1929190614420565b60405180910390f35b3480156102d657600080fd5b506102f160048036038101906102ec9190613d24565b610b53565b6040516102fe919061446b565b60405180910390f35b34801561031357600080fd5b5061031c610bcd565b6040516103299190614486565b60405180910390f35b34801561033e57600080fd5b5061035960048036038101906103549190613dc7565b610c5f565b60405161036691906143b9565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190613c70565b610ce4565b005b3480156103a457600080fd5b506103ad610dfc565b6040516103ba9190614868565b60405180910390f35b3480156103cf57600080fd5b506103d8610e02565b6040516103e59190614868565b60405180910390f35b3480156103fa57600080fd5b50610403610e08565b6040516104109190614868565b60405180910390f35b34801561042557600080fd5b50610440600480360381019061043b9190613b5a565b610e15565b005b34801561044e57600080fd5b50610457610e75565b6040516104649190614868565b60405180910390f35b34801561047957600080fd5b50610482610e7b565b60405161048f919061446b565b60405180910390f35b3480156104a457600080fd5b506104bf60048036038101906104ba9190613c70565b610e8e565b6040516104cc9190614868565b60405180910390f35b3480156104e157600080fd5b506104ea610f33565b005b3480156104f857600080fd5b50610513600480360381019061050e9190613b5a565b610ffe565b005b61052f600480360381019061052a9190613cb0565b61101e565b005b34801561053d57600080fd5b5061055860048036038101906105539190613dc7565b611482565b6040516105659190614868565b60405180910390f35b34801561057a57600080fd5b506105836114f3565b6040516105909190614868565b60405180910390f35b3480156105a557600080fd5b506105c060048036038101906105bb9190613d7e565b6114f9565b005b3480156105ce57600080fd5b506105e960048036038101906105e49190613aed565b61158f565b6040516105f7929190614420565b60405180910390f35b34801561060c57600080fd5b5061062760048036038101906106229190613dc7565b6115d3565b60405161063491906143b9565b60405180910390f35b34801561064957600080fd5b50610652611685565b005b34801561066057600080fd5b5061067b60048036038101906106769190613dc7565b61172d565b005b34801561068957600080fd5b506106a4600480360381019061069f9190613aed565b6117b3565b6040516106b19190614868565b60405180910390f35b3480156106c657600080fd5b506106cf61186b565b6040516106dc9190614486565b60405180910390f35b3480156106f157600080fd5b5061070c60048036038101906107079190613dc7565b6118f9565b005b34801561071a57600080fd5b5061073560048036038101906107309190613aed565b61197f565b6040516107429190614449565b60405180910390f35b34801561075757600080fd5b50610760611a2d565b60405161076d91906143b9565b60405180910390f35b34801561078257600080fd5b5061079d60048036038101906107989190613dc7565b611a57565b005b3480156107ab57600080fd5b506107b4611add565b6040516107c19190614486565b60405180910390f35b3480156107d657600080fd5b506107f160048036038101906107ec9190613dc7565b611b6f565b005b3480156107ff57600080fd5b5061081a60048036038101906108159190613dc7565b611bf5565b6040516108279190614868565b60405180910390f35b34801561083c57600080fd5b50610845611c0c565b6040516108529190614868565b60405180910390f35b61087560048036038101906108709190613dc7565b611c12565b005b34801561088357600080fd5b5061089e60048036038101906108999190613c30565b61209c565b005b3480156108ac57600080fd5b506108c760048036038101906108c29190613aed565b61221d565b6040516108d4919061446b565b60405180910390f35b3480156108e957600080fd5b506108f261223d565b6040516108ff919061446b565b60405180910390f35b34801561091457600080fd5b5061092f600480360381019061092a9190613bad565b612250565b005b34801561093d57600080fd5b5061095860048036038101906109539190613dc7565b6122b2565b6040516109659190614486565b60405180910390f35b34801561097a57600080fd5b50610983612359565b6040516109909190614868565b60405180910390f35b3480156109a557600080fd5b506109c060048036038101906109bb9190613dc7565b61235f565b005b3480156109ce57600080fd5b506109d7612484565b6040516109e49190614868565b60405180910390f35b3480156109f957600080fd5b50610a0261248a565b604051610a0f9190614868565b60405180910390f35b348015610a2457600080fd5b50610a3f6004803603810190610a3a9190613dc7565b612490565b604051610a4c9190614868565b60405180910390f35b348015610a6157600080fd5b50610a7c6004803603810190610a779190613b1a565b6124a7565b604051610a89919061446b565b60405180910390f35b348015610a9e57600080fd5b50610ab96004803603810190610ab49190613aed565b61253b565b005b348015610ac757600080fd5b50610ae26004803603810190610add9190613aed565b612633565b604051610aef919061446b565b60405180910390f35b348015610b0457600080fd5b50610b0d612653565b005b60156020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610bc65750610bc5826126fb565b5b9050919050565b606060008054610bdc90614b5b565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0890614b5b565b8015610c555780601f10610c2a57610100808354040283529160200191610c55565b820191906000526020600020905b815481529060010190602001808311610c3857829003601f168201915b5050505050905090565b6000610c6a826127dd565b610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca090614708565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610cef826115d3565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d57906147a8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610d7f612849565b73ffffffffffffffffffffffffffffffffffffffff161480610dae5750610dad81610da8612849565b6124a7565b5b610ded576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de4906145e8565b60405180910390fd5b610df78383612851565b505050565b60145481565b600f5481565b6000600980549050905090565b610e26610e20612849565b8261290a565b610e65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5c906147c8565b60405180910390fd5b610e708383836129e8565b505050565b60115481565b601060019054906101000a900460ff1681565b6000610e99836117b3565b8210610eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed1906144c8565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b610f3b612849565b73ffffffffffffffffffffffffffffffffffffffff16610f59611a2d565b73ffffffffffffffffffffffffffffffffffffffff1614610faf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa690614728565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ffa573d6000803e3d6000fd5b5050565b61101983838360405180602001604052806000815250612250565b505050565b60001515601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561118f5760405180604001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016000815250601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506001601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60001515601060019054906101000a900460ff161515146111e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dc90614848565b60405180910390fd5b610bb8816111f1610e08565b6111fb9190614986565b111561123c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611233906145c8565b60405180910390fd5b60145481601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461128d9190614986565b11156112ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c590614608565b60405180910390fd5b346112e482600e54612c4490919063ffffffff16565b14611324576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131b90614828565b60405180910390fd5b600033604051602001611337919061437a565b60405160208183030381529060405280519060200120905061139b858580806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508483612c5a565b6113da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d190614808565b60405180910390fd5b60005b82811015611421576113f6336113f1612c71565b612c7b565b6013600081548092919061140990614bbe565b9190505550808061141990614bbe565b9150506113dd565b5081601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282546114749190614986565b925050819055505050505050565b600061148c610e08565b82106114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c4906147e8565b60405180910390fd5b600982815481106114e1576114e0614d18565b5b90600052602060002001549050919050565b600e5481565b611501612849565b73ffffffffffffffffffffffffffffffffffffffff1661151f611a2d565b73ffffffffffffffffffffffffffffffffffffffff1614611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c90614728565b60405180910390fd5b806006908051906020019061158b929190613896565b5050565b60176020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561167c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167390614648565b60405180910390fd5b80915050919050565b61168d612849565b73ffffffffffffffffffffffffffffffffffffffff166116ab611a2d565b73ffffffffffffffffffffffffffffffffffffffff1614611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f890614728565b60405180910390fd5b601060019054906101000a900460ff1615601060016101000a81548160ff021916908315150217905550565b611735612849565b73ffffffffffffffffffffffffffffffffffffffff16611753611a2d565b73ffffffffffffffffffffffffffffffffffffffff16146117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a090614728565b60405180910390fd5b8060128190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181b90614628565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6006805461187890614b5b565b80601f01602080910402602001604051908101604052809291908181526020018280546118a490614b5b565b80156118f15780601f106118c6576101008083540402835291602001916118f1565b820191906000526020600020905b8154815290600101906020018083116118d457829003601f168201915b505050505081565b611901612849565b73ffffffffffffffffffffffffffffffffffffffff1661191f611a2d565b73ffffffffffffffffffffffffffffffffffffffff1614611975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196c90614728565b60405180910390fd5b80600e8190555050565b6060600061198c836117b3565b905060008167ffffffffffffffff8111156119aa576119a9614d47565b5b6040519080825280602002602001820160405280156119d85781602001602082028036833780820191505090505b50905060005b82811015611a22576119f08582610e8e565b828281518110611a0357611a02614d18565b5b6020026020010181815250508080611a1a90614bbe565b9150506119de565b508092505050919050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611a5f612849565b73ffffffffffffffffffffffffffffffffffffffff16611a7d611a2d565b73ffffffffffffffffffffffffffffffffffffffff1614611ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aca90614728565b60405180910390fd5b80600d8190555050565b606060018054611aec90614b5b565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1890614b5b565b8015611b655780601f10611b3a57610100808354040283529160200191611b65565b820191906000526020600020905b815481529060010190602001808311611b4857829003601f168201915b5050505050905090565b611b77612849565b73ffffffffffffffffffffffffffffffffffffffff16611b95611a2d565b73ffffffffffffffffffffffffffffffffffffffff1614611beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be290614728565b60405180910390fd5b80600c8190555050565b6000600e5482611c059190614a0d565b9050919050565b600d5481565b610bb8611c1d610e08565b10611c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c54906146a8565b60405180910390fd5b60001515601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611dce5760405180604001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020016000815250601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101559050506001601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60001515601060009054906101000a900460ff16151514611e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1b90614848565b60405180910390fd5b600f5481601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154611e759190614986565b1115611eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ead906146c8565b60405180910390fd5b601254610bb8611ec69190614a67565b81611ecf610e08565b611ed99190614986565b1115611f1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1190614748565b60405180910390fd5b60008111611f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f54906144a8565b60405180910390fd5b600c54811115611fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f99906146e8565b60405180910390fd5b34611fb882600d54612c4490919063ffffffff16565b14611ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fef90614668565b60405180910390fd5b60005b8181101561203f576120143361200f612c71565b612c7b565b6013600081548092919061202790614bbe565b9190505550808061203790614bbe565b915050611ffb565b5080601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282546120929190614986565b9250508190555050565b6120a4612849565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210990614588565b60405180910390fd5b806005600061211f612849565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166121cc612849565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612211919061446b565b60405180910390a35050565b60186020528060005260406000206000915054906101000a900460ff1681565b601060009054906101000a900460ff1681565b61226161225b612849565b8361290a565b6122a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612297906147c8565b60405180910390fd5b6122ac84848484612c99565b50505050565b60606122bd826127dd565b6122fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f390614788565b60405180910390fd5b6000612306612cf5565b905060008151116123265760405180602001604052806000815250612351565b8061233084612d87565b604051602001612341929190614395565b6040516020818303038152906040525b915050919050565b60125481565b612367612849565b73ffffffffffffffffffffffffffffffffffffffff16612385611a2d565b73ffffffffffffffffffffffffffffffffffffffff16146123db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d290614728565b60405180910390fd5b601254811115612420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241790614548565b60405180910390fd5b80601260008282546124329190614a67565b9250508190555060005b818110156124805761245533612450612c71565b612c7b565b6013600081548092919061246890614bbe565b9190505550808061247890614bbe565b91505061243c565b5050565b610bb881565b600c5481565b6000600d54826124a09190614a0d565b9050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b612543612849565b73ffffffffffffffffffffffffffffffffffffffff16612561611a2d565b73ffffffffffffffffffffffffffffffffffffffff16146125b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ae90614728565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261e90614508565b60405180910390fd5b61263081612ee8565b50565b60166020528060005260406000206000915054906101000a900460ff1681565b61265b612849565b73ffffffffffffffffffffffffffffffffffffffff16612679611a2d565b73ffffffffffffffffffffffffffffffffffffffff16146126cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c690614728565b60405180910390fd5b601060009054906101000a900460ff1615601060006101000a81548160ff021916908315150217905550565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806127c657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806127d657506127d582612fae565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166128c4836115d3565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000612915826127dd565b612954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294b906145a8565b60405180910390fd5b600061295f836115d3565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806129ce57508373ffffffffffffffffffffffffffffffffffffffff166129b684610c5f565b73ffffffffffffffffffffffffffffffffffffffff16145b806129df57506129de81856124a7565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16612a08826115d3565b73ffffffffffffffffffffffffffffffffffffffff1614612a5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a5590614768565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ace576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac590614568565b60405180910390fd5b612ad9838383613018565b612ae4600082612851565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b349190614a67565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b8b9190614986565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b60008183612c529190614a0d565b905092915050565b600082612c67858461312c565b1490509392505050565b6000601354905090565b612c958282604051806020016040528060008152506131a1565b5050565b612ca48484846129e8565b612cb0848484846131fc565b612cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce6906144e8565b60405180910390fd5b50505050565b606060068054612d0490614b5b565b80601f0160208091040260200160405190810160405280929190818152602001828054612d3090614b5b565b8015612d7d5780601f10612d5257610100808354040283529160200191612d7d565b820191906000526020600020905b815481529060010190602001808311612d6057829003601f168201915b5050505050905090565b60606000821415612dcf576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612ee3565b600082905060005b60008214612e01578080612dea90614bbe565b915050600a82612dfa91906149dc565b9150612dd7565b60008167ffffffffffffffff811115612e1d57612e1c614d47565b5b6040519080825280601f01601f191660200182016040528015612e4f5781602001600182028036833780820191505090505b5090505b60008514612edc57600182612e689190614a67565b9150600a85612e779190614c2b565b6030612e839190614986565b60f81b818381518110612e9957612e98614d18565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612ed591906149dc565b9450612e53565b8093505050505b919050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b613023838383613393565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156130665761306181613398565b6130a5565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146130a4576130a383826133e1565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156130e8576130e38161354e565b613127565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461312657613125828261361f565b5b5b505050565b60008082905060005b845181101561319657600085828151811061315357613152614d18565b5b602002602001015190508083116131755761316e838261369e565b9250613182565b61317f818461369e565b92505b50808061318e90614bbe565b915050613135565b508091505092915050565b6131ab83836136b5565b6131b860008484846131fc565b6131f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ee906144e8565b60405180910390fd5b505050565b600061321d8473ffffffffffffffffffffffffffffffffffffffff16613883565b15613386578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613246612849565b8786866040518563ffffffff1660e01b815260040161326894939291906143d4565b602060405180830381600087803b15801561328257600080fd5b505af19250505080156132b357506040513d601f19601f820116820180604052508101906132b09190613d51565b60015b613336573d80600081146132e3576040519150601f19603f3d011682016040523d82523d6000602084013e6132e8565b606091505b5060008151141561332e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613325906144e8565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061338b565b600190505b949350505050565b505050565b600980549050600a600083815260200190815260200160002081905550600981908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016133ee846117b3565b6133f89190614a67565b90506000600860008481526020019081526020016000205490508181146134dd576000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816008600083815260200190815260200160002081905550505b6008600084815260200190815260200160002060009055600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b600060016009805490506135629190614a67565b90506000600a600084815260200190815260200160002054905060006009838154811061359257613591614d18565b5b9060005260206000200154905080600983815481106135b4576135b3614d18565b5b906000526020600020018190555081600a600083815260200190815260200160002081905550600a600085815260200190815260200160002060009055600980548061360357613602614ce9565b5b6001900381819060005260206000200160009055905550505050565b600061362a836117b3565b905081600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806008600084815260200190815260200160002081905550505050565b600082600052816020526040600020905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161371c90614688565b60405180910390fd5b61372e816127dd565b1561376e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161376590614528565b60405180910390fd5b61377a60008383613018565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546137ca9190614986565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b600080823b905060008111915050919050565b8280546138a290614b5b565b90600052602060002090601f0160209004810192826138c4576000855561390b565b82601f106138dd57805160ff191683800117855561390b565b8280016001018555821561390b579182015b8281111561390a5782518255916020019190600101906138ef565b5b509050613918919061391c565b5090565b5b8082111561393557600081600090555060010161391d565b5090565b600061394c613947846148a8565b614883565b90508281526020810184848401111561396857613967614d85565b5b613973848285614b19565b509392505050565b600061398e613989846148d9565b614883565b9050828152602081018484840111156139aa576139a9614d85565b5b6139b5848285614b19565b509392505050565b6000813590506139cc81615578565b92915050565b60008083601f8401126139e8576139e7614d7b565b5b8235905067ffffffffffffffff811115613a0557613a04614d76565b5b602083019150836020820283011115613a2157613a20614d80565b5b9250929050565b600081359050613a378161558f565b92915050565b600081359050613a4c816155a6565b92915050565b600081359050613a61816155bd565b92915050565b600081519050613a76816155bd565b92915050565b600082601f830112613a9157613a90614d7b565b5b8135613aa1848260208601613939565b91505092915050565b600082601f830112613abf57613abe614d7b565b5b8135613acf84826020860161397b565b91505092915050565b600081359050613ae7816155d4565b92915050565b600060208284031215613b0357613b02614d8f565b5b6000613b11848285016139bd565b91505092915050565b60008060408385031215613b3157613b30614d8f565b5b6000613b3f858286016139bd565b9250506020613b50858286016139bd565b9150509250929050565b600080600060608486031215613b7357613b72614d8f565b5b6000613b81868287016139bd565b9350506020613b92868287016139bd565b9250506040613ba386828701613ad8565b9150509250925092565b60008060008060808587031215613bc757613bc6614d8f565b5b6000613bd5878288016139bd565b9450506020613be6878288016139bd565b9350506040613bf787828801613ad8565b925050606085013567ffffffffffffffff811115613c1857613c17614d8a565b5b613c2487828801613a7c565b91505092959194509250565b60008060408385031215613c4757613c46614d8f565b5b6000613c55858286016139bd565b9250506020613c6685828601613a28565b9150509250929050565b60008060408385031215613c8757613c86614d8f565b5b6000613c95858286016139bd565b9250506020613ca685828601613ad8565b9150509250929050565b60008060008060608587031215613cca57613cc9614d8f565b5b600085013567ffffffffffffffff811115613ce857613ce7614d8a565b5b613cf4878288016139d2565b94509450506020613d0787828801613a3d565b9250506040613d1887828801613ad8565b91505092959194509250565b600060208284031215613d3a57613d39614d8f565b5b6000613d4884828501613a52565b91505092915050565b600060208284031215613d6757613d66614d8f565b5b6000613d7584828501613a67565b91505092915050565b600060208284031215613d9457613d93614d8f565b5b600082013567ffffffffffffffff811115613db257613db1614d8a565b5b613dbe84828501613aaa565b91505092915050565b600060208284031215613ddd57613ddc614d8f565b5b6000613deb84828501613ad8565b91505092915050565b6000613e00838361435c565b60208301905092915050565b613e1581614a9b565b82525050565b613e2c613e2782614a9b565b614c07565b82525050565b6000613e3d8261491a565b613e478185614948565b9350613e528361490a565b8060005b83811015613e83578151613e6a8882613df4565b9750613e758361493b565b925050600181019050613e56565b5085935050505092915050565b613e9981614aad565b82525050565b6000613eaa82614925565b613eb48185614959565b9350613ec4818560208601614b28565b613ecd81614d94565b840191505092915050565b6000613ee382614930565b613eed818561496a565b9350613efd818560208601614b28565b613f0681614d94565b840191505092915050565b6000613f1c82614930565b613f26818561497b565b9350613f36818560208601614b28565b80840191505092915050565b6000613f4f60338361496a565b9150613f5a82614db2565b604082019050919050565b6000613f72602b8361496a565b9150613f7d82614e01565b604082019050919050565b6000613f9560328361496a565b9150613fa082614e50565b604082019050919050565b6000613fb860268361496a565b9150613fc382614e9f565b604082019050919050565b6000613fdb601c8361496a565b9150613fe682614eee565b602082019050919050565b6000613ffe60218361496a565b915061400982614f17565b604082019050919050565b600061402160248361496a565b915061402c82614f66565b604082019050919050565b600061404460198361496a565b915061404f82614fb5565b602082019050919050565b6000614067602c8361496a565b915061407282614fde565b604082019050919050565b600061408a60298361496a565b91506140958261502d565b604082019050919050565b60006140ad60388361496a565b91506140b88261507c565b604082019050919050565b60006140d060278361496a565b91506140db826150cb565b604082019050919050565b60006140f3602a8361496a565b91506140fe8261511a565b604082019050919050565b600061411660298361496a565b915061412182615169565b604082019050919050565b6000614139601d8361496a565b9150614144826151b8565b602082019050919050565b600061415c60208361496a565b9150614167826151e1565b602082019050919050565b600061417f60088361496a565b915061418a8261520a565b602082019050919050565b60006141a260198361496a565b91506141ad82615233565b602082019050919050565b60006141c560218361496a565b91506141d08261525c565b604082019050919050565b60006141e8602c8361496a565b91506141f3826152ab565b604082019050919050565b600061420b60208361496a565b9150614216826152fa565b602082019050919050565b600061422e60268361496a565b915061423982615323565b604082019050919050565b600061425160298361496a565b915061425c82615372565b604082019050919050565b6000614274602f8361496a565b915061427f826153c1565b604082019050919050565b600061429760218361496a565b91506142a282615410565b604082019050919050565b60006142ba60318361496a565b91506142c58261545f565b604082019050919050565b60006142dd602c8361496a565b91506142e8826154ae565b604082019050919050565b6000614300600d8361496a565b915061430b826154fd565b602082019050919050565b6000614323601d8361496a565b915061432e82615526565b602082019050919050565b600061434660208361496a565b91506143518261554f565b602082019050919050565b61436581614b0f565b82525050565b61437481614b0f565b82525050565b60006143868284613e1b565b60148201915081905092915050565b60006143a18285613f11565b91506143ad8284613f11565b91508190509392505050565b60006020820190506143ce6000830184613e0c565b92915050565b60006080820190506143e96000830187613e0c565b6143f66020830186613e0c565b614403604083018561436b565b81810360608301526144158184613e9f565b905095945050505050565b60006040820190506144356000830185613e0c565b614442602083018461436b565b9392505050565b600060208201905081810360008301526144638184613e32565b905092915050565b60006020820190506144806000830184613e90565b92915050565b600060208201905081810360008301526144a08184613ed8565b905092915050565b600060208201905081810360008301526144c181613f42565b9050919050565b600060208201905081810360008301526144e181613f65565b9050919050565b6000602082019050818103600083015261450181613f88565b9050919050565b6000602082019050818103600083015261452181613fab565b9050919050565b6000602082019050818103600083015261454181613fce565b9050919050565b6000602082019050818103600083015261456181613ff1565b9050919050565b6000602082019050818103600083015261458181614014565b9050919050565b600060208201905081810360008301526145a181614037565b9050919050565b600060208201905081810360008301526145c18161405a565b9050919050565b600060208201905081810360008301526145e18161407d565b9050919050565b60006020820190508181036000830152614601816140a0565b9050919050565b60006020820190508181036000830152614621816140c3565b9050919050565b60006020820190508181036000830152614641816140e6565b9050919050565b6000602082019050818103600083015261466181614109565b9050919050565b600060208201905081810360008301526146818161412c565b9050919050565b600060208201905081810360008301526146a18161414f565b9050919050565b600060208201905081810360008301526146c181614172565b9050919050565b600060208201905081810360008301526146e181614195565b9050919050565b60006020820190508181036000830152614701816141b8565b9050919050565b60006020820190508181036000830152614721816141db565b9050919050565b60006020820190508181036000830152614741816141fe565b9050919050565b6000602082019050818103600083015261476181614221565b9050919050565b6000602082019050818103600083015261478181614244565b9050919050565b600060208201905081810360008301526147a181614267565b9050919050565b600060208201905081810360008301526147c18161428a565b9050919050565b600060208201905081810360008301526147e1816142ad565b9050919050565b60006020820190508181036000830152614801816142d0565b9050919050565b60006020820190508181036000830152614821816142f3565b9050919050565b6000602082019050818103600083015261484181614316565b9050919050565b6000602082019050818103600083015261486181614339565b9050919050565b600060208201905061487d600083018461436b565b92915050565b600061488d61489e565b90506148998282614b8d565b919050565b6000604051905090565b600067ffffffffffffffff8211156148c3576148c2614d47565b5b6148cc82614d94565b9050602081019050919050565b600067ffffffffffffffff8211156148f4576148f3614d47565b5b6148fd82614d94565b9050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600061499182614b0f565b915061499c83614b0f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156149d1576149d0614c5c565b5b828201905092915050565b60006149e782614b0f565b91506149f283614b0f565b925082614a0257614a01614c8b565b5b828204905092915050565b6000614a1882614b0f565b9150614a2383614b0f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a5c57614a5b614c5c565b5b828202905092915050565b6000614a7282614b0f565b9150614a7d83614b0f565b925082821015614a9057614a8f614c5c565b5b828203905092915050565b6000614aa682614aef565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614b46578082015181840152602081019050614b2b565b83811115614b55576000848401525b50505050565b60006002820490506001821680614b7357607f821691505b60208210811415614b8757614b86614cba565b5b50919050565b614b9682614d94565b810181811067ffffffffffffffff82111715614bb557614bb4614d47565b5b80604052505050565b6000614bc982614b0f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614bfc57614bfb614c5c565b5b600182019050919050565b6000614c1282614c19565b9050919050565b6000614c2482614da5565b9050919050565b6000614c3682614b0f565b9150614c4183614b0f565b925082614c5157614c50614c8b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4e756d626572206f6620746f6b656e732063616e206e6f74206265206c65737360008201527f207468616e206f7220657175616c20746f203000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f546865207175616e74697479206578636565647320746865207265736572766560008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f5175616e746974792069732067726561746572207468616e2072656d61696e6960008201527f6e6720537570706c790000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f5175616e74697479204d757374204265204c6573736572205468616e204d617860008201527f20537570706c7900000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f53656e742065746865722076616c756520697320696e636f7272656374000000600082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f53616c6520656e64000000000000000000000000000000000000000000000000600082015250565b7f4d6178206d696e7473207065722077616c6c6574206973203500000000000000600082015250565b7f43686f73656e20416d6f756e742065786365656473204d61785175616e74697460008201527f7900000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5175616e74697479206d757374206265206c6573736572207468656e204d617860008201527f537570706c790000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f496e76616c69642050726f6f6600000000000000000000000000000000000000600082015250565b7f53656e742045746865722056616c756520497320496e636f7272656374000000600082015250565b7f53616c65206973206e6f742061637469766520617420746865206d6f6d656e74600082015250565b61558181614a9b565b811461558c57600080fd5b50565b61559881614aad565b81146155a357600080fd5b50565b6155af81614ab9565b81146155ba57600080fd5b50565b6155c681614ac3565b81146155d157600080fd5b50565b6155dd81614b0f565b81146155e857600080fd5b5056fea264697066735822122051b9e30b9c38d9b755f773ebc222b6fb7aec79a44bc7cbab4e16eca7697335d764736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003768747470733a2f2f73706865726176657273652d6261636b656e642e6865726f6b756170702e636f6d2f6170692f6d657461646174612f000000000000000000
-----Decoded View---------------
Arg [0] : baseURI (string): https://spheraverse-backend.herokuapp.com/api/metadata/
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000037
Arg [2] : 68747470733a2f2f73706865726176657273652d6261636b656e642e6865726f
Arg [3] : 6b756170702e636f6d2f6170692f6d657461646174612f000000000000000000
Deployed Bytecode Sourcemap
48644:5536:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49480:56;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;41187:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28665:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30353:308;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29876:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49332:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48979:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41990:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31412:376;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49159:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49096;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;41571:343;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;53939:143;;;;;;;;;;;;;:::i;:::-;;31859:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;51258:1137;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;42180:320;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48915:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49846:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49604:59;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;28272:326;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50580:104;;;;;;;;;;;;;:::i;:::-;;50271:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27915:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27161:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50049:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;53553:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25273:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49951:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28834:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50161:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;50810:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48853:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;52403:1142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30733:327;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49670:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49039:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32115:365;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29009:458;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;49216:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50942:308;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;48736:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;48793:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50692:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31131:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26073:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;49543:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;50489:83;;;;;;;;;;;;;:::i;:::-;;49480:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;41187:300::-;41334:4;41391:35;41376:50;;;:11;:50;;;;:103;;;;41443:36;41467:11;41443:23;:36::i;:::-;41376:103;41356:123;;41187:300;;;:::o;28665:100::-;28719:13;28752:5;28745:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28665:100;:::o;30353:308::-;30474:7;30521:16;30529:7;30521;:16::i;:::-;30499:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;30629:15;:24;30645:7;30629:24;;;;;;;;;;;;;;;;;;;;;30622:31;;30353:308;;;:::o;29876:411::-;29957:13;29973:23;29988:7;29973:14;:23::i;:::-;29957:39;;30021:5;30015:11;;:2;:11;;;;30007:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;30115:5;30099:21;;:12;:10;:12::i;:::-;:21;;;:62;;;;30124:37;30141:5;30148:12;:10;:12::i;:::-;30124:16;:37::i;:::-;30099:62;30077:168;;;;;;;;;;;;:::i;:::-;;;;;;;;;30258:21;30267:2;30271:7;30258:8;:21::i;:::-;29946:341;29876:411;;:::o;49332:48::-;;;;:::o;48979:47::-;;;;:::o;41990:113::-;42051:7;42078:10;:17;;;;42071:24;;41990:113;:::o;31412:376::-;31621:41;31640:12;:10;:12::i;:::-;31654:7;31621:18;:41::i;:::-;31599:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;31752:28;31762:4;31768:2;31772:7;31752:9;:28::i;:::-;31412:376;;;:::o;49159:50::-;;;;:::o;49096:::-;;;;;;;;;;;;;:::o;41571:343::-;41713:7;41768:23;41785:5;41768:16;:23::i;:::-;41760:5;:31;41738:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;41880:12;:19;41893:5;41880:19;;;;;;;;;;;;;;;:26;41900:5;41880:26;;;;;;;;;;;;41873:33;;41571:343;;;;:::o;53939:143::-;25504:12;:10;:12::i;:::-;25493:23;;:7;:5;:7::i;:::-;:23;;;25485:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;53987:15:::1;54005:21;53987:39;;54045:10;54037:28;;:37;54066:7;54037:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;53976:106;53939:143::o:0;31859:185::-;31997:39;32014:4;32020:2;32024:7;31997:39;;;;;;;;;;;;:16;:39::i;:::-;31859:185;;;:::o;51258:1137::-;51416:5;51380:41;;:20;:32;51401:10;51380:32;;;;;;;;;;;;;;;;;;;;;;;;;:41;;;51376:259;;;51470:99;;;;;;;;51514:10;51470:99;;;;;;51552:1;51470:99;;;51438:17;:29;51456:10;51438:29;;;;;;;;;;;;;;;:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51619:4;51584:20;:32;51605:10;51584:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;51376:259;51672:5;51653:24;;:15;;;;;;;;;;;:24;;;51645:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;48782:4;51749:8;51733:13;:11;:13::i;:::-;:24;;;;:::i;:::-;:40;;51725:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;51890:18;;51878:8;51838:17;:29;51856:10;51838:29;;;;;;;;;;;;;;;:37;;;:48;;;;:::i;:::-;:70;;51830:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;52001:9;51971:26;51988:8;51971:12;;:16;;:26;;;;:::i;:::-;:39;51963:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;52055:12;52097:10;52080:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;52070:39;;;;;;52055:54;;52128:50;52147:12;;52128:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52161:10;52173:4;52128:18;:50::i;:::-;52120:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;52211:9;52206:122;52226:8;52222:1;:12;52206:122;;;52256:36;52266:10;52278:13;:11;:13::i;:::-;52256:9;:36::i;:::-;52307:7;;:9;;;;;;;;;:::i;:::-;;;;;;52236:3;;;;;:::i;:::-;;;;52206:122;;;;52379:8;52338:17;:29;52356:10;52338:29;;;;;;;;;;;;;;;:37;;;:49;;;;;;;:::i;:::-;;;;;;;;51365:1030;51258:1137;;;;:::o;42180:320::-;42300:7;42355:30;:28;:30::i;:::-;42347:5;:38;42325:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;42475:10;42486:5;42475:17;;;;;;;;:::i;:::-;;;;;;;;;;42468:24;;42180:320;;;:::o;48915:57::-;;;;:::o;49846:97::-;25504:12;:10;:12::i;:::-;25493:23;;:7;:5;:7::i;:::-;:23;;;25485:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;49928:7:::1;49917:8;:18;;;;;;;;;;;;:::i;:::-;;49846:97:::0;:::o;49604:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;28272:326::-;28389:7;28414:13;28430:7;:16;28438:7;28430:16;;;;;;;;;;;;;;;;;;;;;28414:32;;28496:1;28479:19;;:5;:19;;;;28457:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;28585:5;28578:12;;;28272:326;;;:::o;50580:104::-;25504:12;:10;:12::i;:::-;25493:23;;:7;:5;:7::i;:::-;:23;;;25485:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50661:15:::1;;;;;;;;;;;50660:16;50642:15;;:34;;;;;;;;;;;;;;;;;;50580:104::o:0;50271:100::-;25504:12;:10;:12::i;:::-;25493:23;;:7;:5;:7::i;:::-;:23;;;25485:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50354:9:::1;50344:7;:19;;;;50271:100:::0;:::o;27915:295::-;28032:7;28096:1;28079:19;;:5;:19;;;;28057:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;28186:9;:16;28196:5;28186:16;;;;;;;;;;;;;;;;28179:23;;27915:295;;;:::o;27161:22::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;50049:104::-;25504:12;:10;:12::i;:::-;25493:23;;:7;:5;:7::i;:::-;:23;;;25485:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50136:9:::1;50121:12;:24;;;;50049:104:::0;:::o;53553:378::-;53640:16;53674:13;53690:17;53700:6;53690:9;:17::i;:::-;53674:33;;53718:23;53758:5;53744:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;53718:46;;53780:13;53775:125;53807:5;53799;:13;53775:125;;;53854:34;53874:6;53882:5;53854:19;:34::i;:::-;53838:6;53845:5;53838:13;;;;;;;;:::i;:::-;;;;;;;:50;;;;;53814:7;;;;;:::i;:::-;;;;53775:125;;;;53917:6;53910:13;;;;53553:378;;;:::o;25273:87::-;25319:7;25346:6;;;;;;;;;;;25339:13;;25273:87;:::o;49951:90::-;25504:12;:10;:12::i;:::-;25493:23;;:7;:5;:7::i;:::-;:23;;;25485:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50024:9:::1;50016:5;:17;;;;49951:90:::0;:::o;28834:104::-;28890:13;28923:7;28916:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28834:104;:::o;50161:102::-;25504:12;:10;:12::i;:::-;25493:23;;:7;:5;:7::i;:::-;:23;;;25485:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50246:9:::1;50232:11;:23;;;;50161:102:::0;:::o;50810:124::-;50875:7;50914:12;;50902:9;:24;;;;:::i;:::-;50895:31;;50810:124;;;:::o;48853:55::-;;;;:::o;52403:1142::-;48782:4;50420:13;:11;:13::i;:::-;:28;50412:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;52519:5:::1;52480:44;;:23;:35;52504:10;52480:35;;;;;;;;;;;;;;;;;;;;;;;;;:44;;;52476:268;;;52576:99;;;;;;;;52620:10;52576:99;;;;;;52658:1;52576:99;;::::0;52541:20:::1;:32;52562:10;52541:32;;;;;;;;;;;;;;;:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52728:4;52690:23;:35;52714:10;52690:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;52476:268;52774:5;52762:17;;:8;;;;;;;;;;;:17;;;52754:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;52894:26;;52878:12;52835:20;:32;52856:10;52835:32;;;;;;;;;;;;;;;:40;;;:55;;;;:::i;:::-;:85;;52827:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;53016:7;;48782:4;53001:22;;;;:::i;:::-;52985:12;52969:13;:11;:13::i;:::-;:28;;;;:::i;:::-;:54;;52961:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;53100:1;53085:12;:16;53077:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;53192:11;;53176:12;:27;;53168:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;53287:9;53260:23;53270:12;53260:5;;:9;;:23;;;;:::i;:::-;:36;53252:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;53346:9;53341:130;53365:12;53361:1;:16;53341:130;;;53399:36;53409:10;53421:13;:11;:13::i;:::-;53399:9;:36::i;:::-;53450:7;;:9;;;;;;;;;:::i;:::-;;;;;;53379:3;;;;;:::i;:::-;;;;53341:130;;;;53525:12;53481:20;:32;53502:10;53481:32;;;;;;;;;;;;;;;:40;;;:56;;;;;;;:::i;:::-;;;;;;;;52403:1142:::0;:::o;30733:327::-;30880:12;:10;:12::i;:::-;30868:24;;:8;:24;;;;30860:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;30980:8;30935:18;:32;30954:12;:10;:12::i;:::-;30935:32;;;;;;;;;;;;;;;:42;30968:8;30935:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;31033:8;31004:48;;31019:12;:10;:12::i;:::-;31004:48;;;31043:8;31004:48;;;;;;:::i;:::-;;;;;;;;30733:327;;:::o;49670:55::-;;;;;;;;;;;;;;;;;;;;;;:::o;49039:50::-;;;;;;;;;;;;;:::o;32115:365::-;32304:41;32323:12;:10;:12::i;:::-;32337:7;32304:18;:41::i;:::-;32282:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;32433:39;32447:4;32453:2;32457:7;32466:5;32433:13;:39::i;:::-;32115:365;;;;:::o;29009:458::-;29127:13;29180:16;29188:7;29180;:16::i;:::-;29158:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;29284:18;29305:9;:7;:9::i;:::-;29284:30;;29366:1;29351:4;29345:18;:22;:114;;;;;;;;;;;;;;;;;29411:4;29417:18;:7;:16;:18::i;:::-;29394:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;29345:114;29325:134;;;29009:458;;;:::o;49216:49::-;;;;:::o;50942:308::-;25504:12;:10;:12::i;:::-;25493:23;;:7;:5;:7::i;:::-;:23;;;25485:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;51031:7:::1;;51019:8;:19;;51011:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;51098:8;51087:7;;:19;;;;;;;:::i;:::-;;;;;;;;51122:9;51117:126;51141:8;51137:1;:12;51117:126;;;51171:36;51181:10;51193:13;:11;:13::i;:::-;51171:9;:36::i;:::-;51222:7;;:9;;;;;;;;;:::i;:::-;;;;;;51151:3;;;;;:::i;:::-;;;;51117:126;;;;50942:308:::0;:::o;48736:50::-;48782:4;48736:50;:::o;48793:47::-;;;;:::o;50692:110::-;50750:7;50789:5;;50777:9;:17;;;;:::i;:::-;50770:24;;50692:110;;;:::o;31131:214::-;31273:4;31302:18;:25;31321:5;31302:25;;;;;;;;;;;;;;;:35;31328:8;31302:35;;;;;;;;;;;;;;;;;;;;;;;;;31295:42;;31131:214;;;;:::o;26073:229::-;25504:12;:10;:12::i;:::-;25493:23;;:7;:5;:7::i;:::-;:23;;;25485:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26196:1:::1;26176:22;;:8;:22;;;;26154:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;26275:19;26285:8;26275:9;:19::i;:::-;26073:229:::0;:::o;49543:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;50489:83::-;25504:12;:10;:12::i;:::-;25493:23;;:7;:5;:7::i;:::-;:23;;;25485:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;50556:8:::1;;;;;;;;;;;50555:9;50544:8;;:20;;;;;;;;;;;;;;;;;;50489:83::o:0;27496:355::-;27643:4;27700:25;27685:40;;;:11;:40;;;;:105;;;;27757:33;27742:48;;;:11;:48;;;;27685:105;:158;;;;27807:36;27831:11;27807:23;:36::i;:::-;27685:158;27665:178;;27496:355;;;:::o;34027:127::-;34092:4;34144:1;34116:30;;:7;:16;34124:7;34116:16;;;;;;;;;;;;;;;;;;;;;:30;;;;34109:37;;34027:127;;;:::o;24534:98::-;24587:7;24614:10;24607:17;;24534:98;:::o;38150:174::-;38252:2;38225:15;:24;38241:7;38225:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;38308:7;38304:2;38270:46;;38279:23;38294:7;38279:14;:23::i;:::-;38270:46;;;;;;;;;;;;38150:174;;:::o;34321:452::-;34450:4;34494:16;34502:7;34494;:16::i;:::-;34472:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;34593:13;34609:23;34624:7;34609:14;:23::i;:::-;34593:39;;34662:5;34651:16;;:7;:16;;;:64;;;;34708:7;34684:31;;:20;34696:7;34684:11;:20::i;:::-;:31;;;34651:64;:113;;;;34732:32;34749:5;34756:7;34732:16;:32::i;:::-;34651:113;34643:122;;;34321:452;;;;:::o;37417:615::-;37590:4;37563:31;;:23;37578:7;37563:14;:23::i;:::-;:31;;;37541:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;37696:1;37682:16;;:2;:16;;;;37674:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;37752:39;37773:4;37779:2;37783:7;37752:20;:39::i;:::-;37856:29;37873:1;37877:7;37856:8;:29::i;:::-;37917:1;37898:9;:15;37908:4;37898:15;;;;;;;;;;;;;;;;:20;;;;;;;:::i;:::-;;;;;;;;37946:1;37929:9;:13;37939:2;37929:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;37977:2;37958:7;:16;37966:7;37958:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;38016:7;38012:2;37997:27;;38006:4;37997:27;;;;;;;;;;;;37417:615;;;:::o;3382:98::-;3440:7;3471:1;3467;:5;;;;:::i;:::-;3460:12;;3382:98;;;;:::o;47626:190::-;47751:4;47804;47775:25;47788:5;47795:4;47775:12;:25::i;:::-;:33;47768:40;;47626:190;;;;;:::o;54090:87::-;54135:7;54162;;54155:14;;54090:87;:::o;35115:110::-;35191:26;35201:2;35205:7;35191:26;;;;;;;;;;;;:9;:26::i;:::-;35115:110;;:::o;33362:352::-;33519:28;33529:4;33535:2;33539:7;33519:9;:28::i;:::-;33580:48;33603:4;33609:2;33613:7;33622:5;33580:22;:48::i;:::-;33558:148;;;;;;;;;;;;:::i;:::-;;;;;;;;;33362:352;;;;:::o;29715:99::-;29765:13;29798:8;29791:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29715:99;:::o;6997:723::-;7053:13;7283:1;7274:5;:10;7270:53;;;7301:10;;;;;;;;;;;;;;;;;;;;;7270:53;7333:12;7348:5;7333:20;;7364:14;7389:78;7404:1;7396:4;:9;7389:78;;7422:8;;;;;:::i;:::-;;;;7453:2;7445:10;;;;;:::i;:::-;;;7389:78;;;7477:19;7509:6;7499:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7477:39;;7527:154;7543:1;7534:5;:10;7527:154;;7571:1;7561:11;;;;;:::i;:::-;;;7638:2;7630:5;:10;;;;:::i;:::-;7617:2;:24;;;;:::i;:::-;7604:39;;7587:6;7594;7587:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;7667:2;7658:11;;;;;:::i;:::-;;;7527:154;;;7705:6;7691:21;;;;;6997:723;;;;:::o;26310:173::-;26366:16;26385:6;;;;;;;;;;;26366:25;;26411:8;26402:6;;:17;;;;;;;;;;;;;;;;;;26466:8;26435:40;;26456:8;26435:40;;;;;;;;;;;;26355:128;26310:173;:::o;18251:207::-;18381:4;18425:25;18410:40;;;:11;:40;;;;18403:47;;18251:207;;;:::o;43113:589::-;43257:45;43284:4;43290:2;43294:7;43257:26;:45::i;:::-;43335:1;43319:18;;:4;:18;;;43315:187;;;43354:40;43386:7;43354:31;:40::i;:::-;43315:187;;;43424:2;43416:10;;:4;:10;;;43412:90;;43443:47;43476:4;43482:7;43443:32;:47::i;:::-;43412:90;43315:187;43530:1;43516:16;;:2;:16;;;43512:183;;;43549:45;43586:7;43549:36;:45::i;:::-;43512:183;;;43622:4;43616:10;;:2;:10;;;43612:83;;43643:40;43671:2;43675:7;43643:27;:40::i;:::-;43612:83;43512:183;43113:589;;;:::o;47824:549::-;47934:7;47959:20;47982:4;47959:27;;48002:9;47997:339;48021:5;:12;48017:1;:16;47997:339;;;48055:20;48078:5;48084:1;48078:8;;;;;;;;:::i;:::-;;;;;;;;48055:31;;48121:12;48105;:28;48101:224;;48169:42;48184:12;48198;48169:14;:42::i;:::-;48154:57;;48101:224;;;48267:42;48282:12;48296;48267:14;:42::i;:::-;48252:57;;48101:224;48040:296;48035:3;;;;;:::i;:::-;;;;47997:339;;;;48353:12;48346:19;;;47824:549;;;;:::o;35452:321::-;35582:18;35588:2;35592:7;35582:5;:18::i;:::-;35633:54;35664:1;35668:2;35672:7;35681:5;35633:22;:54::i;:::-;35611:154;;;;;;;;;;;;:::i;:::-;;;;;;;;;35452:321;;;:::o;38889:984::-;39044:4;39065:15;:2;:13;;;:15::i;:::-;39061:805;;;39134:2;39118:36;;;39177:12;:10;:12::i;:::-;39212:4;39239:7;39269:5;39118:175;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;39097:714;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39497:1;39480:6;:13;:18;39476:320;;;39523:108;;;;;;;;;;:::i;:::-;;;;;;;;39476:320;39746:6;39740:13;39731:6;39727:2;39723:15;39716:38;39097:714;39367:45;;;39357:55;;;:6;:55;;;;39350:62;;;;;39061:805;39850:4;39843:11;;38889:984;;;;;;;:::o;40445:126::-;;;;:::o;44425:164::-;44529:10;:17;;;;44502:15;:24;44518:7;44502:24;;;;;;;;;;;:44;;;;44557:10;44573:7;44557:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44425:164;:::o;45216:1002::-;45496:22;45546:1;45521:22;45538:4;45521:16;:22::i;:::-;:26;;;;:::i;:::-;45496:51;;45558:18;45579:17;:26;45597:7;45579:26;;;;;;;;;;;;45558:47;;45726:14;45712:10;:28;45708:328;;45757:19;45779:12;:18;45792:4;45779:18;;;;;;;;;;;;;;;:34;45798:14;45779:34;;;;;;;;;;;;45757:56;;45863:11;45830:12;:18;45843:4;45830:18;;;;;;;;;;;;;;;:30;45849:10;45830:30;;;;;;;;;;;:44;;;;45980:10;45947:17;:30;45965:11;45947:30;;;;;;;;;;;:43;;;;45742:294;45708:328;46132:17;:26;46150:7;46132:26;;;;;;;;;;;46125:33;;;46176:12;:18;46189:4;46176:18;;;;;;;;;;;;;;;:34;46195:14;46176:34;;;;;;;;;;;46169:41;;;45311:907;;45216:1002;;:::o;46513:1079::-;46766:22;46811:1;46791:10;:17;;;;:21;;;;:::i;:::-;46766:46;;46823:18;46844:15;:24;46860:7;46844:24;;;;;;;;;;;;46823:45;;47195:19;47217:10;47228:14;47217:26;;;;;;;;:::i;:::-;;;;;;;;;;47195:48;;47281:11;47256:10;47267;47256:22;;;;;;;;:::i;:::-;;;;;;;;;:36;;;;47392:10;47361:15;:28;47377:11;47361:28;;;;;;;;;;;:41;;;;47533:15;:24;47549:7;47533:24;;;;;;;;;;;47526:31;;;47568:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;46584:1008;;;46513:1079;:::o;44003:221::-;44088:14;44105:20;44122:2;44105:16;:20::i;:::-;44088:37;;44163:7;44136:12;:16;44149:2;44136:16;;;;;;;;;;;;;;;:24;44153:6;44136:24;;;;;;;;;;;:34;;;;44210:6;44181:17;:26;44199:7;44181:26;;;;;;;;;;;:35;;;;44077:147;44003:221;;:::o;48381:256::-;48476:13;48544:1;48538:4;48531:15;48573:1;48567:4;48560:15;48614:4;48608;48598:21;48589:30;;48381:256;;;;:::o;36109:382::-;36203:1;36189:16;;:2;:16;;;;36181:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;36262:16;36270:7;36262;:16::i;:::-;36261:17;36253:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;36324:45;36353:1;36357:2;36361:7;36324:20;:45::i;:::-;36399:1;36382:9;:13;36392:2;36382:13;;;;;;;;;;;;;;;;:18;;;;;;;:::i;:::-;;;;;;;;36430:2;36411:7;:16;36419:7;36411:16;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;36475:7;36471:2;36450:33;;36467:1;36450:33;;;;;;;;;;;;36109:382;;:::o;9398:387::-;9458:4;9666:12;9733:7;9721:20;9713:28;;9776:1;9769:4;:8;9762:15;;;9398:387;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:410:1:-;84:5;109:65;125:48;166:6;125:48;:::i;:::-;109:65;:::i;:::-;100:74;;197:6;190:5;183:21;235:4;228:5;224:16;273:3;264:6;259:3;255:16;252:25;249:112;;;280:79;;:::i;:::-;249:112;370:41;404:6;399:3;394;370:41;:::i;:::-;90:327;7:410;;;;;:::o;423:412::-;501:5;526:66;542:49;584:6;542:49;:::i;:::-;526:66;:::i;:::-;517:75;;615:6;608:5;601:21;653:4;646:5;642:16;691:3;682:6;677:3;673:16;670:25;667:112;;;698:79;;:::i;:::-;667:112;788:41;822:6;817:3;812;788:41;:::i;:::-;507:328;423:412;;;;;:::o;841:139::-;887:5;925:6;912:20;903:29;;941:33;968:5;941:33;:::i;:::-;841:139;;;;:::o;1003:568::-;1076:8;1086:6;1136:3;1129:4;1121:6;1117:17;1113:27;1103:122;;1144:79;;:::i;:::-;1103:122;1257:6;1244:20;1234:30;;1287:18;1279:6;1276:30;1273:117;;;1309:79;;:::i;:::-;1273:117;1423:4;1415:6;1411:17;1399:29;;1477:3;1469:4;1461:6;1457:17;1447:8;1443:32;1440:41;1437:128;;;1484:79;;:::i;:::-;1437:128;1003:568;;;;;:::o;1577:133::-;1620:5;1658:6;1645:20;1636:29;;1674:30;1698:5;1674:30;:::i;:::-;1577:133;;;;:::o;1716:139::-;1762:5;1800:6;1787:20;1778:29;;1816:33;1843:5;1816:33;:::i;:::-;1716:139;;;;:::o;1861:137::-;1906:5;1944:6;1931:20;1922:29;;1960:32;1986:5;1960:32;:::i;:::-;1861:137;;;;:::o;2004:141::-;2060:5;2091:6;2085:13;2076:22;;2107:32;2133:5;2107:32;:::i;:::-;2004:141;;;;:::o;2164:338::-;2219:5;2268:3;2261:4;2253:6;2249:17;2245:27;2235:122;;2276:79;;:::i;:::-;2235:122;2393:6;2380:20;2418:78;2492:3;2484:6;2477:4;2469:6;2465:17;2418:78;:::i;:::-;2409:87;;2225:277;2164:338;;;;:::o;2522:340::-;2578:5;2627:3;2620:4;2612:6;2608:17;2604:27;2594:122;;2635:79;;:::i;:::-;2594:122;2752:6;2739:20;2777:79;2852:3;2844:6;2837:4;2829:6;2825:17;2777:79;:::i;:::-;2768:88;;2584:278;2522:340;;;;:::o;2868:139::-;2914:5;2952:6;2939:20;2930:29;;2968:33;2995:5;2968:33;:::i;:::-;2868:139;;;;:::o;3013:329::-;3072:6;3121:2;3109:9;3100:7;3096:23;3092:32;3089:119;;;3127:79;;:::i;:::-;3089:119;3247:1;3272:53;3317:7;3308:6;3297:9;3293:22;3272:53;:::i;:::-;3262:63;;3218:117;3013:329;;;;:::o;3348:474::-;3416:6;3424;3473:2;3461:9;3452:7;3448:23;3444:32;3441:119;;;3479:79;;:::i;:::-;3441:119;3599:1;3624:53;3669:7;3660:6;3649:9;3645:22;3624:53;:::i;:::-;3614:63;;3570:117;3726:2;3752:53;3797:7;3788:6;3777:9;3773:22;3752:53;:::i;:::-;3742:63;;3697:118;3348:474;;;;;:::o;3828:619::-;3905:6;3913;3921;3970:2;3958:9;3949:7;3945:23;3941:32;3938:119;;;3976:79;;:::i;:::-;3938:119;4096:1;4121:53;4166:7;4157:6;4146:9;4142:22;4121:53;:::i;:::-;4111:63;;4067:117;4223:2;4249:53;4294:7;4285:6;4274:9;4270:22;4249:53;:::i;:::-;4239:63;;4194:118;4351:2;4377:53;4422:7;4413:6;4402:9;4398:22;4377:53;:::i;:::-;4367:63;;4322:118;3828:619;;;;;:::o;4453:943::-;4548:6;4556;4564;4572;4621:3;4609:9;4600:7;4596:23;4592:33;4589:120;;;4628:79;;:::i;:::-;4589:120;4748:1;4773:53;4818:7;4809:6;4798:9;4794:22;4773:53;:::i;:::-;4763:63;;4719:117;4875:2;4901:53;4946:7;4937:6;4926:9;4922:22;4901:53;:::i;:::-;4891:63;;4846:118;5003:2;5029:53;5074:7;5065:6;5054:9;5050:22;5029:53;:::i;:::-;5019:63;;4974:118;5159:2;5148:9;5144:18;5131:32;5190:18;5182:6;5179:30;5176:117;;;5212:79;;:::i;:::-;5176:117;5317:62;5371:7;5362:6;5351:9;5347:22;5317:62;:::i;:::-;5307:72;;5102:287;4453:943;;;;;;;:::o;5402:468::-;5467:6;5475;5524:2;5512:9;5503:7;5499:23;5495:32;5492:119;;;5530:79;;:::i;:::-;5492:119;5650:1;5675:53;5720:7;5711:6;5700:9;5696:22;5675:53;:::i;:::-;5665:63;;5621:117;5777:2;5803:50;5845:7;5836:6;5825:9;5821:22;5803:50;:::i;:::-;5793:60;;5748:115;5402:468;;;;;:::o;5876:474::-;5944:6;5952;6001:2;5989:9;5980:7;5976:23;5972:32;5969:119;;;6007:79;;:::i;:::-;5969:119;6127:1;6152:53;6197:7;6188:6;6177:9;6173:22;6152:53;:::i;:::-;6142:63;;6098:117;6254:2;6280:53;6325:7;6316:6;6305:9;6301:22;6280:53;:::i;:::-;6270:63;;6225:118;5876:474;;;;;:::o;6356:849::-;6460:6;6468;6476;6484;6533:2;6521:9;6512:7;6508:23;6504:32;6501:119;;;6539:79;;:::i;:::-;6501:119;6687:1;6676:9;6672:17;6659:31;6717:18;6709:6;6706:30;6703:117;;;6739:79;;:::i;:::-;6703:117;6852:80;6924:7;6915:6;6904:9;6900:22;6852:80;:::i;:::-;6834:98;;;;6630:312;6981:2;7007:53;7052:7;7043:6;7032:9;7028:22;7007:53;:::i;:::-;6997:63;;6952:118;7109:2;7135:53;7180:7;7171:6;7160:9;7156:22;7135:53;:::i;:::-;7125:63;;7080:118;6356:849;;;;;;;:::o;7211:327::-;7269:6;7318:2;7306:9;7297:7;7293:23;7289:32;7286:119;;;7324:79;;:::i;:::-;7286:119;7444:1;7469:52;7513:7;7504:6;7493:9;7489:22;7469:52;:::i;:::-;7459:62;;7415:116;7211:327;;;;:::o;7544:349::-;7613:6;7662:2;7650:9;7641:7;7637:23;7633:32;7630:119;;;7668:79;;:::i;:::-;7630:119;7788:1;7813:63;7868:7;7859:6;7848:9;7844:22;7813:63;:::i;:::-;7803:73;;7759:127;7544:349;;;;:::o;7899:509::-;7968:6;8017:2;8005:9;7996:7;7992:23;7988:32;7985:119;;;8023:79;;:::i;:::-;7985:119;8171:1;8160:9;8156:17;8143:31;8201:18;8193:6;8190:30;8187:117;;;8223:79;;:::i;:::-;8187:117;8328:63;8383:7;8374:6;8363:9;8359:22;8328:63;:::i;:::-;8318:73;;8114:287;7899:509;;;;:::o;8414:329::-;8473:6;8522:2;8510:9;8501:7;8497:23;8493:32;8490:119;;;8528:79;;:::i;:::-;8490:119;8648:1;8673:53;8718:7;8709:6;8698:9;8694:22;8673:53;:::i;:::-;8663:63;;8619:117;8414:329;;;;:::o;8749:179::-;8818:10;8839:46;8881:3;8873:6;8839:46;:::i;:::-;8917:4;8912:3;8908:14;8894:28;;8749:179;;;;:::o;8934:118::-;9021:24;9039:5;9021:24;:::i;:::-;9016:3;9009:37;8934:118;;:::o;9058:157::-;9163:45;9183:24;9201:5;9183:24;:::i;:::-;9163:45;:::i;:::-;9158:3;9151:58;9058:157;;:::o;9251:732::-;9370:3;9399:54;9447:5;9399:54;:::i;:::-;9469:86;9548:6;9543:3;9469:86;:::i;:::-;9462:93;;9579:56;9629:5;9579:56;:::i;:::-;9658:7;9689:1;9674:284;9699:6;9696:1;9693:13;9674:284;;;9775:6;9769:13;9802:63;9861:3;9846:13;9802:63;:::i;:::-;9795:70;;9888:60;9941:6;9888:60;:::i;:::-;9878:70;;9734:224;9721:1;9718;9714:9;9709:14;;9674:284;;;9678:14;9974:3;9967:10;;9375:608;;;9251:732;;;;:::o;9989:109::-;10070:21;10085:5;10070:21;:::i;:::-;10065:3;10058:34;9989:109;;:::o;10104:360::-;10190:3;10218:38;10250:5;10218:38;:::i;:::-;10272:70;10335:6;10330:3;10272:70;:::i;:::-;10265:77;;10351:52;10396:6;10391:3;10384:4;10377:5;10373:16;10351:52;:::i;:::-;10428:29;10450:6;10428:29;:::i;:::-;10423:3;10419:39;10412:46;;10194:270;10104:360;;;;:::o;10470:364::-;10558:3;10586:39;10619:5;10586:39;:::i;:::-;10641:71;10705:6;10700:3;10641:71;:::i;:::-;10634:78;;10721:52;10766:6;10761:3;10754:4;10747:5;10743:16;10721:52;:::i;:::-;10798:29;10820:6;10798:29;:::i;:::-;10793:3;10789:39;10782:46;;10562:272;10470:364;;;;:::o;10840:377::-;10946:3;10974:39;11007:5;10974:39;:::i;:::-;11029:89;11111:6;11106:3;11029:89;:::i;:::-;11022:96;;11127:52;11172:6;11167:3;11160:4;11153:5;11149:16;11127:52;:::i;:::-;11204:6;11199:3;11195:16;11188:23;;10950:267;10840:377;;;;:::o;11223:366::-;11365:3;11386:67;11450:2;11445:3;11386:67;:::i;:::-;11379:74;;11462:93;11551:3;11462:93;:::i;:::-;11580:2;11575:3;11571:12;11564:19;;11223:366;;;:::o;11595:::-;11737:3;11758:67;11822:2;11817:3;11758:67;:::i;:::-;11751:74;;11834:93;11923:3;11834:93;:::i;:::-;11952:2;11947:3;11943:12;11936:19;;11595:366;;;:::o;11967:::-;12109:3;12130:67;12194:2;12189:3;12130:67;:::i;:::-;12123:74;;12206:93;12295:3;12206:93;:::i;:::-;12324:2;12319:3;12315:12;12308:19;;11967:366;;;:::o;12339:::-;12481:3;12502:67;12566:2;12561:3;12502:67;:::i;:::-;12495:74;;12578:93;12667:3;12578:93;:::i;:::-;12696:2;12691:3;12687:12;12680:19;;12339:366;;;:::o;12711:::-;12853:3;12874:67;12938:2;12933:3;12874:67;:::i;:::-;12867:74;;12950:93;13039:3;12950:93;:::i;:::-;13068:2;13063:3;13059:12;13052:19;;12711:366;;;:::o;13083:::-;13225:3;13246:67;13310:2;13305:3;13246:67;:::i;:::-;13239:74;;13322:93;13411:3;13322:93;:::i;:::-;13440:2;13435:3;13431:12;13424:19;;13083:366;;;:::o;13455:::-;13597:3;13618:67;13682:2;13677:3;13618:67;:::i;:::-;13611:74;;13694:93;13783:3;13694:93;:::i;:::-;13812:2;13807:3;13803:12;13796:19;;13455:366;;;:::o;13827:::-;13969:3;13990:67;14054:2;14049:3;13990:67;:::i;:::-;13983:74;;14066:93;14155:3;14066:93;:::i;:::-;14184:2;14179:3;14175:12;14168:19;;13827:366;;;:::o;14199:::-;14341:3;14362:67;14426:2;14421:3;14362:67;:::i;:::-;14355:74;;14438:93;14527:3;14438:93;:::i;:::-;14556:2;14551:3;14547:12;14540:19;;14199:366;;;:::o;14571:::-;14713:3;14734:67;14798:2;14793:3;14734:67;:::i;:::-;14727:74;;14810:93;14899:3;14810:93;:::i;:::-;14928:2;14923:3;14919:12;14912:19;;14571:366;;;:::o;14943:::-;15085:3;15106:67;15170:2;15165:3;15106:67;:::i;:::-;15099:74;;15182:93;15271:3;15182:93;:::i;:::-;15300:2;15295:3;15291:12;15284:19;;14943:366;;;:::o;15315:::-;15457:3;15478:67;15542:2;15537:3;15478:67;:::i;:::-;15471:74;;15554:93;15643:3;15554:93;:::i;:::-;15672:2;15667:3;15663:12;15656:19;;15315:366;;;:::o;15687:::-;15829:3;15850:67;15914:2;15909:3;15850:67;:::i;:::-;15843:74;;15926:93;16015:3;15926:93;:::i;:::-;16044:2;16039:3;16035:12;16028:19;;15687:366;;;:::o;16059:::-;16201:3;16222:67;16286:2;16281:3;16222:67;:::i;:::-;16215:74;;16298:93;16387:3;16298:93;:::i;:::-;16416:2;16411:3;16407:12;16400:19;;16059:366;;;:::o;16431:::-;16573:3;16594:67;16658:2;16653:3;16594:67;:::i;:::-;16587:74;;16670:93;16759:3;16670:93;:::i;:::-;16788:2;16783:3;16779:12;16772:19;;16431:366;;;:::o;16803:::-;16945:3;16966:67;17030:2;17025:3;16966:67;:::i;:::-;16959:74;;17042:93;17131:3;17042:93;:::i;:::-;17160:2;17155:3;17151:12;17144:19;;16803:366;;;:::o;17175:365::-;17317:3;17338:66;17402:1;17397:3;17338:66;:::i;:::-;17331:73;;17413:93;17502:3;17413:93;:::i;:::-;17531:2;17526:3;17522:12;17515:19;;17175:365;;;:::o;17546:366::-;17688:3;17709:67;17773:2;17768:3;17709:67;:::i;:::-;17702:74;;17785:93;17874:3;17785:93;:::i;:::-;17903:2;17898:3;17894:12;17887:19;;17546:366;;;:::o;17918:::-;18060:3;18081:67;18145:2;18140:3;18081:67;:::i;:::-;18074:74;;18157:93;18246:3;18157:93;:::i;:::-;18275:2;18270:3;18266:12;18259:19;;17918:366;;;:::o;18290:::-;18432:3;18453:67;18517:2;18512:3;18453:67;:::i;:::-;18446:74;;18529:93;18618:3;18529:93;:::i;:::-;18647:2;18642:3;18638:12;18631:19;;18290:366;;;:::o;18662:::-;18804:3;18825:67;18889:2;18884:3;18825:67;:::i;:::-;18818:74;;18901:93;18990:3;18901:93;:::i;:::-;19019:2;19014:3;19010:12;19003:19;;18662:366;;;:::o;19034:::-;19176:3;19197:67;19261:2;19256:3;19197:67;:::i;:::-;19190:74;;19273:93;19362:3;19273:93;:::i;:::-;19391:2;19386:3;19382:12;19375:19;;19034:366;;;:::o;19406:::-;19548:3;19569:67;19633:2;19628:3;19569:67;:::i;:::-;19562:74;;19645:93;19734:3;19645:93;:::i;:::-;19763:2;19758:3;19754:12;19747:19;;19406:366;;;:::o;19778:::-;19920:3;19941:67;20005:2;20000:3;19941:67;:::i;:::-;19934:74;;20017:93;20106:3;20017:93;:::i;:::-;20135:2;20130:3;20126:12;20119:19;;19778:366;;;:::o;20150:::-;20292:3;20313:67;20377:2;20372:3;20313:67;:::i;:::-;20306:74;;20389:93;20478:3;20389:93;:::i;:::-;20507:2;20502:3;20498:12;20491:19;;20150:366;;;:::o;20522:::-;20664:3;20685:67;20749:2;20744:3;20685:67;:::i;:::-;20678:74;;20761:93;20850:3;20761:93;:::i;:::-;20879:2;20874:3;20870:12;20863:19;;20522:366;;;:::o;20894:::-;21036:3;21057:67;21121:2;21116:3;21057:67;:::i;:::-;21050:74;;21133:93;21222:3;21133:93;:::i;:::-;21251:2;21246:3;21242:12;21235:19;;20894:366;;;:::o;21266:::-;21408:3;21429:67;21493:2;21488:3;21429:67;:::i;:::-;21422:74;;21505:93;21594:3;21505:93;:::i;:::-;21623:2;21618:3;21614:12;21607:19;;21266:366;;;:::o;21638:::-;21780:3;21801:67;21865:2;21860:3;21801:67;:::i;:::-;21794:74;;21877:93;21966:3;21877:93;:::i;:::-;21995:2;21990:3;21986:12;21979:19;;21638:366;;;:::o;22010:::-;22152:3;22173:67;22237:2;22232:3;22173:67;:::i;:::-;22166:74;;22249:93;22338:3;22249:93;:::i;:::-;22367:2;22362:3;22358:12;22351:19;;22010:366;;;:::o;22382:108::-;22459:24;22477:5;22459:24;:::i;:::-;22454:3;22447:37;22382:108;;:::o;22496:118::-;22583:24;22601:5;22583:24;:::i;:::-;22578:3;22571:37;22496:118;;:::o;22620:256::-;22732:3;22747:75;22818:3;22809:6;22747:75;:::i;:::-;22847:2;22842:3;22838:12;22831:19;;22867:3;22860:10;;22620:256;;;;:::o;22882:435::-;23062:3;23084:95;23175:3;23166:6;23084:95;:::i;:::-;23077:102;;23196:95;23287:3;23278:6;23196:95;:::i;:::-;23189:102;;23308:3;23301:10;;22882:435;;;;;:::o;23323:222::-;23416:4;23454:2;23443:9;23439:18;23431:26;;23467:71;23535:1;23524:9;23520:17;23511:6;23467:71;:::i;:::-;23323:222;;;;:::o;23551:640::-;23746:4;23784:3;23773:9;23769:19;23761:27;;23798:71;23866:1;23855:9;23851:17;23842:6;23798:71;:::i;:::-;23879:72;23947:2;23936:9;23932:18;23923:6;23879:72;:::i;:::-;23961;24029:2;24018:9;24014:18;24005:6;23961:72;:::i;:::-;24080:9;24074:4;24070:20;24065:2;24054:9;24050:18;24043:48;24108:76;24179:4;24170:6;24108:76;:::i;:::-;24100:84;;23551:640;;;;;;;:::o;24197:332::-;24318:4;24356:2;24345:9;24341:18;24333:26;;24369:71;24437:1;24426:9;24422:17;24413:6;24369:71;:::i;:::-;24450:72;24518:2;24507:9;24503:18;24494:6;24450:72;:::i;:::-;24197:332;;;;;:::o;24535:373::-;24678:4;24716:2;24705:9;24701:18;24693:26;;24765:9;24759:4;24755:20;24751:1;24740:9;24736:17;24729:47;24793:108;24896:4;24887:6;24793:108;:::i;:::-;24785:116;;24535:373;;;;:::o;24914:210::-;25001:4;25039:2;25028:9;25024:18;25016:26;;25052:65;25114:1;25103:9;25099:17;25090:6;25052:65;:::i;:::-;24914:210;;;;:::o;25130:313::-;25243:4;25281:2;25270:9;25266:18;25258:26;;25330:9;25324:4;25320:20;25316:1;25305:9;25301:17;25294:47;25358:78;25431:4;25422:6;25358:78;:::i;:::-;25350:86;;25130:313;;;;:::o;25449:419::-;25615:4;25653:2;25642:9;25638:18;25630:26;;25702:9;25696:4;25692:20;25688:1;25677:9;25673:17;25666:47;25730:131;25856:4;25730:131;:::i;:::-;25722:139;;25449:419;;;:::o;25874:::-;26040:4;26078:2;26067:9;26063:18;26055:26;;26127:9;26121:4;26117:20;26113:1;26102:9;26098:17;26091:47;26155:131;26281:4;26155:131;:::i;:::-;26147:139;;25874:419;;;:::o;26299:::-;26465:4;26503:2;26492:9;26488:18;26480:26;;26552:9;26546:4;26542:20;26538:1;26527:9;26523:17;26516:47;26580:131;26706:4;26580:131;:::i;:::-;26572:139;;26299:419;;;:::o;26724:::-;26890:4;26928:2;26917:9;26913:18;26905:26;;26977:9;26971:4;26967:20;26963:1;26952:9;26948:17;26941:47;27005:131;27131:4;27005:131;:::i;:::-;26997:139;;26724:419;;;:::o;27149:::-;27315:4;27353:2;27342:9;27338:18;27330:26;;27402:9;27396:4;27392:20;27388:1;27377:9;27373:17;27366:47;27430:131;27556:4;27430:131;:::i;:::-;27422:139;;27149:419;;;:::o;27574:::-;27740:4;27778:2;27767:9;27763:18;27755:26;;27827:9;27821:4;27817:20;27813:1;27802:9;27798:17;27791:47;27855:131;27981:4;27855:131;:::i;:::-;27847:139;;27574:419;;;:::o;27999:::-;28165:4;28203:2;28192:9;28188:18;28180:26;;28252:9;28246:4;28242:20;28238:1;28227:9;28223:17;28216:47;28280:131;28406:4;28280:131;:::i;:::-;28272:139;;27999:419;;;:::o;28424:::-;28590:4;28628:2;28617:9;28613:18;28605:26;;28677:9;28671:4;28667:20;28663:1;28652:9;28648:17;28641:47;28705:131;28831:4;28705:131;:::i;:::-;28697:139;;28424:419;;;:::o;28849:::-;29015:4;29053:2;29042:9;29038:18;29030:26;;29102:9;29096:4;29092:20;29088:1;29077:9;29073:17;29066:47;29130:131;29256:4;29130:131;:::i;:::-;29122:139;;28849:419;;;:::o;29274:::-;29440:4;29478:2;29467:9;29463:18;29455:26;;29527:9;29521:4;29517:20;29513:1;29502:9;29498:17;29491:47;29555:131;29681:4;29555:131;:::i;:::-;29547:139;;29274:419;;;:::o;29699:::-;29865:4;29903:2;29892:9;29888:18;29880:26;;29952:9;29946:4;29942:20;29938:1;29927:9;29923:17;29916:47;29980:131;30106:4;29980:131;:::i;:::-;29972:139;;29699:419;;;:::o;30124:::-;30290:4;30328:2;30317:9;30313:18;30305:26;;30377:9;30371:4;30367:20;30363:1;30352:9;30348:17;30341:47;30405:131;30531:4;30405:131;:::i;:::-;30397:139;;30124:419;;;:::o;30549:::-;30715:4;30753:2;30742:9;30738:18;30730:26;;30802:9;30796:4;30792:20;30788:1;30777:9;30773:17;30766:47;30830:131;30956:4;30830:131;:::i;:::-;30822:139;;30549:419;;;:::o;30974:::-;31140:4;31178:2;31167:9;31163:18;31155:26;;31227:9;31221:4;31217:20;31213:1;31202:9;31198:17;31191:47;31255:131;31381:4;31255:131;:::i;:::-;31247:139;;30974:419;;;:::o;31399:::-;31565:4;31603:2;31592:9;31588:18;31580:26;;31652:9;31646:4;31642:20;31638:1;31627:9;31623:17;31616:47;31680:131;31806:4;31680:131;:::i;:::-;31672:139;;31399:419;;;:::o;31824:::-;31990:4;32028:2;32017:9;32013:18;32005:26;;32077:9;32071:4;32067:20;32063:1;32052:9;32048:17;32041:47;32105:131;32231:4;32105:131;:::i;:::-;32097:139;;31824:419;;;:::o;32249:::-;32415:4;32453:2;32442:9;32438:18;32430:26;;32502:9;32496:4;32492:20;32488:1;32477:9;32473:17;32466:47;32530:131;32656:4;32530:131;:::i;:::-;32522:139;;32249:419;;;:::o;32674:::-;32840:4;32878:2;32867:9;32863:18;32855:26;;32927:9;32921:4;32917:20;32913:1;32902:9;32898:17;32891:47;32955:131;33081:4;32955:131;:::i;:::-;32947:139;;32674:419;;;:::o;33099:::-;33265:4;33303:2;33292:9;33288:18;33280:26;;33352:9;33346:4;33342:20;33338:1;33327:9;33323:17;33316:47;33380:131;33506:4;33380:131;:::i;:::-;33372:139;;33099:419;;;:::o;33524:::-;33690:4;33728:2;33717:9;33713:18;33705:26;;33777:9;33771:4;33767:20;33763:1;33752:9;33748:17;33741:47;33805:131;33931:4;33805:131;:::i;:::-;33797:139;;33524:419;;;:::o;33949:::-;34115:4;34153:2;34142:9;34138:18;34130:26;;34202:9;34196:4;34192:20;34188:1;34177:9;34173:17;34166:47;34230:131;34356:4;34230:131;:::i;:::-;34222:139;;33949:419;;;:::o;34374:::-;34540:4;34578:2;34567:9;34563:18;34555:26;;34627:9;34621:4;34617:20;34613:1;34602:9;34598:17;34591:47;34655:131;34781:4;34655:131;:::i;:::-;34647:139;;34374:419;;;:::o;34799:::-;34965:4;35003:2;34992:9;34988:18;34980:26;;35052:9;35046:4;35042:20;35038:1;35027:9;35023:17;35016:47;35080:131;35206:4;35080:131;:::i;:::-;35072:139;;34799:419;;;:::o;35224:::-;35390:4;35428:2;35417:9;35413:18;35405:26;;35477:9;35471:4;35467:20;35463:1;35452:9;35448:17;35441:47;35505:131;35631:4;35505:131;:::i;:::-;35497:139;;35224:419;;;:::o;35649:::-;35815:4;35853:2;35842:9;35838:18;35830:26;;35902:9;35896:4;35892:20;35888:1;35877:9;35873:17;35866:47;35930:131;36056:4;35930:131;:::i;:::-;35922:139;;35649:419;;;:::o;36074:::-;36240:4;36278:2;36267:9;36263:18;36255:26;;36327:9;36321:4;36317:20;36313:1;36302:9;36298:17;36291:47;36355:131;36481:4;36355:131;:::i;:::-;36347:139;;36074:419;;;:::o;36499:::-;36665:4;36703:2;36692:9;36688:18;36680:26;;36752:9;36746:4;36742:20;36738:1;36727:9;36723:17;36716:47;36780:131;36906:4;36780:131;:::i;:::-;36772:139;;36499:419;;;:::o;36924:::-;37090:4;37128:2;37117:9;37113:18;37105:26;;37177:9;37171:4;37167:20;37163:1;37152:9;37148:17;37141:47;37205:131;37331:4;37205:131;:::i;:::-;37197:139;;36924:419;;;:::o;37349:::-;37515:4;37553:2;37542:9;37538:18;37530:26;;37602:9;37596:4;37592:20;37588:1;37577:9;37573:17;37566:47;37630:131;37756:4;37630:131;:::i;:::-;37622:139;;37349:419;;;:::o;37774:::-;37940:4;37978:2;37967:9;37963:18;37955:26;;38027:9;38021:4;38017:20;38013:1;38002:9;37998:17;37991:47;38055:131;38181:4;38055:131;:::i;:::-;38047:139;;37774:419;;;:::o;38199:222::-;38292:4;38330:2;38319:9;38315:18;38307:26;;38343:71;38411:1;38400:9;38396:17;38387:6;38343:71;:::i;:::-;38199:222;;;;:::o;38427:129::-;38461:6;38488:20;;:::i;:::-;38478:30;;38517:33;38545:4;38537:6;38517:33;:::i;:::-;38427:129;;;:::o;38562:75::-;38595:6;38628:2;38622:9;38612:19;;38562:75;:::o;38643:307::-;38704:4;38794:18;38786:6;38783:30;38780:56;;;38816:18;;:::i;:::-;38780:56;38854:29;38876:6;38854:29;:::i;:::-;38846:37;;38938:4;38932;38928:15;38920:23;;38643:307;;;:::o;38956:308::-;39018:4;39108:18;39100:6;39097:30;39094:56;;;39130:18;;:::i;:::-;39094:56;39168:29;39190:6;39168:29;:::i;:::-;39160:37;;39252:4;39246;39242:15;39234:23;;38956:308;;;:::o;39270:132::-;39337:4;39360:3;39352:11;;39390:4;39385:3;39381:14;39373:22;;39270:132;;;:::o;39408:114::-;39475:6;39509:5;39503:12;39493:22;;39408:114;;;:::o;39528:98::-;39579:6;39613:5;39607:12;39597:22;;39528:98;;;:::o;39632:99::-;39684:6;39718:5;39712:12;39702:22;;39632:99;;;:::o;39737:113::-;39807:4;39839;39834:3;39830:14;39822:22;;39737:113;;;:::o;39856:184::-;39955:11;39989:6;39984:3;39977:19;40029:4;40024:3;40020:14;40005:29;;39856:184;;;;:::o;40046:168::-;40129:11;40163:6;40158:3;40151:19;40203:4;40198:3;40194:14;40179:29;;40046:168;;;;:::o;40220:169::-;40304:11;40338:6;40333:3;40326:19;40378:4;40373:3;40369:14;40354:29;;40220:169;;;;:::o;40395:148::-;40497:11;40534:3;40519:18;;40395:148;;;;:::o;40549:305::-;40589:3;40608:20;40626:1;40608:20;:::i;:::-;40603:25;;40642:20;40660:1;40642:20;:::i;:::-;40637:25;;40796:1;40728:66;40724:74;40721:1;40718:81;40715:107;;;40802:18;;:::i;:::-;40715:107;40846:1;40843;40839:9;40832:16;;40549:305;;;;:::o;40860:185::-;40900:1;40917:20;40935:1;40917:20;:::i;:::-;40912:25;;40951:20;40969:1;40951:20;:::i;:::-;40946:25;;40990:1;40980:35;;40995:18;;:::i;:::-;40980:35;41037:1;41034;41030:9;41025:14;;40860:185;;;;:::o;41051:348::-;41091:7;41114:20;41132:1;41114:20;:::i;:::-;41109:25;;41148:20;41166:1;41148:20;:::i;:::-;41143:25;;41336:1;41268:66;41264:74;41261:1;41258:81;41253:1;41246:9;41239:17;41235:105;41232:131;;;41343:18;;:::i;:::-;41232:131;41391:1;41388;41384:9;41373:20;;41051:348;;;;:::o;41405:191::-;41445:4;41465:20;41483:1;41465:20;:::i;:::-;41460:25;;41499:20;41517:1;41499:20;:::i;:::-;41494:25;;41538:1;41535;41532:8;41529:34;;;41543:18;;:::i;:::-;41529:34;41588:1;41585;41581:9;41573:17;;41405:191;;;;:::o;41602:96::-;41639:7;41668:24;41686:5;41668:24;:::i;:::-;41657:35;;41602:96;;;:::o;41704:90::-;41738:7;41781:5;41774:13;41767:21;41756:32;;41704:90;;;:::o;41800:77::-;41837:7;41866:5;41855:16;;41800:77;;;:::o;41883:149::-;41919:7;41959:66;41952:5;41948:78;41937:89;;41883:149;;;:::o;42038:126::-;42075:7;42115:42;42108:5;42104:54;42093:65;;42038:126;;;:::o;42170:77::-;42207:7;42236:5;42225:16;;42170:77;;;:::o;42253:154::-;42337:6;42332:3;42327;42314:30;42399:1;42390:6;42385:3;42381:16;42374:27;42253:154;;;:::o;42413:307::-;42481:1;42491:113;42505:6;42502:1;42499:13;42491:113;;;42590:1;42585:3;42581:11;42575:18;42571:1;42566:3;42562:11;42555:39;42527:2;42524:1;42520:10;42515:15;;42491:113;;;42622:6;42619:1;42616:13;42613:101;;;42702:1;42693:6;42688:3;42684:16;42677:27;42613:101;42462:258;42413:307;;;:::o;42726:320::-;42770:6;42807:1;42801:4;42797:12;42787:22;;42854:1;42848:4;42844:12;42875:18;42865:81;;42931:4;42923:6;42919:17;42909:27;;42865:81;42993:2;42985:6;42982:14;42962:18;42959:38;42956:84;;;43012:18;;:::i;:::-;42956:84;42777:269;42726:320;;;:::o;43052:281::-;43135:27;43157:4;43135:27;:::i;:::-;43127:6;43123:40;43265:6;43253:10;43250:22;43229:18;43217:10;43214:34;43211:62;43208:88;;;43276:18;;:::i;:::-;43208:88;43316:10;43312:2;43305:22;43095:238;43052:281;;:::o;43339:233::-;43378:3;43401:24;43419:5;43401:24;:::i;:::-;43392:33;;43447:66;43440:5;43437:77;43434:103;;;43517:18;;:::i;:::-;43434:103;43564:1;43557:5;43553:13;43546:20;;43339:233;;;:::o;43578:100::-;43617:7;43646:26;43666:5;43646:26;:::i;:::-;43635:37;;43578:100;;;:::o;43684:94::-;43723:7;43752:20;43766:5;43752:20;:::i;:::-;43741:31;;43684:94;;;:::o;43784:176::-;43816:1;43833:20;43851:1;43833:20;:::i;:::-;43828:25;;43867:20;43885:1;43867:20;:::i;:::-;43862:25;;43906:1;43896:35;;43911:18;;:::i;:::-;43896:35;43952:1;43949;43945:9;43940:14;;43784:176;;;;:::o;43966:180::-;44014:77;44011:1;44004:88;44111:4;44108:1;44101:15;44135:4;44132:1;44125:15;44152:180;44200:77;44197:1;44190:88;44297:4;44294:1;44287:15;44321:4;44318:1;44311:15;44338:180;44386:77;44383:1;44376:88;44483:4;44480:1;44473:15;44507:4;44504:1;44497:15;44524:180;44572:77;44569:1;44562:88;44669:4;44666:1;44659:15;44693:4;44690:1;44683:15;44710:180;44758:77;44755:1;44748:88;44855:4;44852:1;44845:15;44879:4;44876:1;44869:15;44896:180;44944:77;44941:1;44934:88;45041:4;45038:1;45031:15;45065:4;45062:1;45055:15;45082:117;45191:1;45188;45181:12;45205:117;45314:1;45311;45304:12;45328:117;45437:1;45434;45427:12;45451:117;45560:1;45557;45550:12;45574:117;45683:1;45680;45673:12;45697:117;45806:1;45803;45796:12;45820:102;45861:6;45912:2;45908:7;45903:2;45896:5;45892:14;45888:28;45878:38;;45820:102;;;:::o;45928:94::-;45961:8;46009:5;46005:2;46001:14;45980:35;;45928:94;;;:::o;46028:238::-;46168:34;46164:1;46156:6;46152:14;46145:58;46237:21;46232:2;46224:6;46220:15;46213:46;46028:238;:::o;46272:230::-;46412:34;46408:1;46400:6;46396:14;46389:58;46481:13;46476:2;46468:6;46464:15;46457:38;46272:230;:::o;46508:237::-;46648:34;46644:1;46636:6;46632:14;46625:58;46717:20;46712:2;46704:6;46700:15;46693:45;46508:237;:::o;46751:225::-;46891:34;46887:1;46879:6;46875:14;46868:58;46960:8;46955:2;46947:6;46943:15;46936:33;46751:225;:::o;46982:178::-;47122:30;47118:1;47110:6;47106:14;47099:54;46982:178;:::o;47166:220::-;47306:34;47302:1;47294:6;47290:14;47283:58;47375:3;47370:2;47362:6;47358:15;47351:28;47166:220;:::o;47392:223::-;47532:34;47528:1;47520:6;47516:14;47509:58;47601:6;47596:2;47588:6;47584:15;47577:31;47392:223;:::o;47621:175::-;47761:27;47757:1;47749:6;47745:14;47738:51;47621:175;:::o;47802:231::-;47942:34;47938:1;47930:6;47926:14;47919:58;48011:14;48006:2;47998:6;47994:15;47987:39;47802:231;:::o;48039:228::-;48179:34;48175:1;48167:6;48163:14;48156:58;48248:11;48243:2;48235:6;48231:15;48224:36;48039:228;:::o;48273:243::-;48413:34;48409:1;48401:6;48397:14;48390:58;48482:26;48477:2;48469:6;48465:15;48458:51;48273:243;:::o;48522:226::-;48662:34;48658:1;48650:6;48646:14;48639:58;48731:9;48726:2;48718:6;48714:15;48707:34;48522:226;:::o;48754:229::-;48894:34;48890:1;48882:6;48878:14;48871:58;48963:12;48958:2;48950:6;48946:15;48939:37;48754:229;:::o;48989:228::-;49129:34;49125:1;49117:6;49113:14;49106:58;49198:11;49193:2;49185:6;49181:15;49174:36;48989:228;:::o;49223:179::-;49363:31;49359:1;49351:6;49347:14;49340:55;49223:179;:::o;49408:182::-;49548:34;49544:1;49536:6;49532:14;49525:58;49408:182;:::o;49596:158::-;49736:10;49732:1;49724:6;49720:14;49713:34;49596:158;:::o;49760:175::-;49900:27;49896:1;49888:6;49884:14;49877:51;49760:175;:::o;49941:220::-;50081:34;50077:1;50069:6;50065:14;50058:58;50150:3;50145:2;50137:6;50133:15;50126:28;49941:220;:::o;50167:231::-;50307:34;50303:1;50295:6;50291:14;50284:58;50376:14;50371:2;50363:6;50359:15;50352:39;50167:231;:::o;50404:182::-;50544:34;50540:1;50532:6;50528:14;50521:58;50404:182;:::o;50592:225::-;50732:34;50728:1;50720:6;50716:14;50709:58;50801:8;50796:2;50788:6;50784:15;50777:33;50592:225;:::o;50823:228::-;50963:34;50959:1;50951:6;50947:14;50940:58;51032:11;51027:2;51019:6;51015:15;51008:36;50823:228;:::o;51057:234::-;51197:34;51193:1;51185:6;51181:14;51174:58;51266:17;51261:2;51253:6;51249:15;51242:42;51057:234;:::o;51297:220::-;51437:34;51433:1;51425:6;51421:14;51414:58;51506:3;51501:2;51493:6;51489:15;51482:28;51297:220;:::o;51523:236::-;51663:34;51659:1;51651:6;51647:14;51640:58;51732:19;51727:2;51719:6;51715:15;51708:44;51523:236;:::o;51765:231::-;51905:34;51901:1;51893:6;51889:14;51882:58;51974:14;51969:2;51961:6;51957:15;51950:39;51765:231;:::o;52002:163::-;52142:15;52138:1;52130:6;52126:14;52119:39;52002:163;:::o;52171:179::-;52311:31;52307:1;52299:6;52295:14;52288:55;52171:179;:::o;52356:182::-;52496:34;52492:1;52484:6;52480:14;52473:58;52356:182;:::o;52544:122::-;52617:24;52635:5;52617:24;:::i;:::-;52610:5;52607:35;52597:63;;52656:1;52653;52646:12;52597:63;52544:122;:::o;52672:116::-;52742:21;52757:5;52742:21;:::i;:::-;52735:5;52732:32;52722:60;;52778:1;52775;52768:12;52722:60;52672:116;:::o;52794:122::-;52867:24;52885:5;52867:24;:::i;:::-;52860:5;52857:35;52847:63;;52906:1;52903;52896:12;52847:63;52794:122;:::o;52922:120::-;52994:23;53011:5;52994:23;:::i;:::-;52987:5;52984:34;52974:62;;53032:1;53029;53022:12;52974:62;52922:120;:::o;53048:122::-;53121:24;53139:5;53121:24;:::i;:::-;53114:5;53111:35;53101:63;;53160:1;53157;53150:12;53101:63;53048:122;:::o
Swarm Source
ipfs://51b9e30b9c38d9b755f773ebc222b6fb7aec79a44bc7cbab4e16eca7697335d7
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $2,379.28 | 0.2 | $475.86 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.