Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 179 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Approval For... | 17452169 | 552 days ago | IN | 0 ETH | 0.00076695 | ||||
Set Approval For... | 16730069 | 654 days ago | IN | 0 ETH | 0.00080193 | ||||
Set Approval For... | 16285240 | 716 days ago | IN | 0 ETH | 0.00088568 | ||||
Safe Transfer Fr... | 16260568 | 719 days ago | IN | 0 ETH | 0.00064828 | ||||
Set Approval For... | 16156265 | 734 days ago | IN | 0 ETH | 0.0008016 | ||||
Set Approval For... | 16156056 | 734 days ago | IN | 0 ETH | 0.00064631 | ||||
Set Approval For... | 15437976 | 837 days ago | IN | 0 ETH | 0.00048022 | ||||
Set Approval For... | 15286675 | 860 days ago | IN | 0 ETH | 0.00035945 | ||||
Set Approval For... | 15208490 | 873 days ago | IN | 0 ETH | 0.00038679 | ||||
Set Approval For... | 15161771 | 880 days ago | IN | 0 ETH | 0.00071594 | ||||
Set Approval For... | 14752669 | 947 days ago | IN | 0 ETH | 0.00179548 | ||||
Set Approval For... | 14573905 | 976 days ago | IN | 0 ETH | 0.00277767 | ||||
Set Approval For... | 14532659 | 982 days ago | IN | 0 ETH | 0.00173157 | ||||
Transfer From | 14529152 | 983 days ago | IN | 0 ETH | 0.00395616 | ||||
Set Approval For... | 14478635 | 991 days ago | IN | 0 ETH | 0.00142497 | ||||
Set Approval For... | 14458441 | 994 days ago | IN | 0 ETH | 0.00172727 | ||||
Set Approval For... | 14452132 | 995 days ago | IN | 0 ETH | 0.00289998 | ||||
Set Approval For... | 14449013 | 995 days ago | IN | 0 ETH | 0.00138634 | ||||
Set Approval For... | 14448175 | 995 days ago | IN | 0 ETH | 0.00132898 | ||||
Set Approval For... | 14443858 | 996 days ago | IN | 0 ETH | 0.00206932 | ||||
Safe Transfer Fr... | 14419244 | 1000 days ago | IN | 0 ETH | 0.00129001 | ||||
Set Approval For... | 14407645 | 1002 days ago | IN | 0 ETH | 0.00358707 | ||||
Set Approval For... | 14399842 | 1003 days ago | IN | 0 ETH | 0.00145122 | ||||
Set Approval For... | 14396428 | 1003 days ago | IN | 0 ETH | 0.00145502 | ||||
Approve | 14396419 | 1003 days ago | IN | 0 ETH | 0.00123608 |
Loading...
Loading
Contract Name:
Daddydelphia
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-02-22 */ // SPDX-License-Identifier: MIT /* ________ .___ .___ .___ .__ .__ .__ \______ \ _____ __| _/__| _/__.__. __| _/____ | | ______ | |__ |__|____ | | \\__ \ / __ |/ __ < | |/ __ |/ __ \| | \____ \| | \| \__ \ | ` \/ __ \_/ /_/ / /_/ |\___ / /_/ \ ___/| |_| |_> > Y \ |/ __ \_ /_______ (____ /\____ \____ |/ ____\____ |\___ >____/ __/|___| /__(____ / \/ \/ \/ \/\/ \/ \/ |__| \/ \/ */ pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ 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); } /** * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * Implementers can declare support of contract interfaces, which can then be * queried by others ({ERC165Checker}). * * For an implementation, see {ERC165}. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } pragma solidity ^0.8.0; /** * @dev Required interface of an ERC721 compliant contract. */ interface IERC721 is IERC165 { /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in ``owner``'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC721 protocol to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll} */ function isApprovedForAll(address owner, address operator) external view returns (bool); /** * @dev Safely transfers `tokenId` token from `from` to `to`. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external; } pragma solidity ^0.8.0; /** * @title ERC-721 Non-Fungible Token Standard, optional metadata extension * @dev See https://eips.ethereum.org/EIPS/eip-721 */ interface IERC721Metadata is IERC721 { /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); } pragma solidity ^0.8.0; /** * @title ERC721 token receiver interface * @dev Interface for any contract that wants to support safeTransfers * from ERC721 asset contracts. */ interface IERC721Receiver { /** * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} * by `operator` from `from`, this function is called. * * It must return its Solidity selector to confirm the token transfer. * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. * * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`. */ function onERC721Received( address operator, address from, uint256 tokenId, bytes calldata data ) external returns (bytes4); } pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } pragma solidity ^0.8.0; /** * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including * the Metadata extension, but not including the Enumerable extension, which is available separately as * {ERC721Enumerable}. */ contract ERC721 is Context, ERC165, IERC721, IERC721Metadata { using Address for address; using Strings for uint256; // Token name string private _name; // Token symbol string private _symbol; // Mapping from token ID to owner address mapping(uint256 => address) private _owners; // Mapping owner address to token count mapping(address => uint256) private _balances; // Mapping from token ID to approved address mapping(uint256 => address) private _tokenApprovals; // Mapping from owner to operator approvals mapping(address => mapping(address => bool)) private _operatorApprovals; /** * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) { return interfaceId == type(IERC721).interfaceId || interfaceId == type(IERC721Metadata).interfaceId || super.supportsInterface(interfaceId); } /** * @dev See {IERC721-balanceOf}. */ function balanceOf(address owner) public view virtual override returns (uint256) { require(owner != address(0), "ERC721: balance query for the zero address"); return _balances[owner]; } /** * @dev See {IERC721-ownerOf}. */ function ownerOf(uint256 tokenId) public view virtual override returns (address) { address owner = _owners[tokenId]; require(owner != address(0), "ERC721: owner query for nonexistent token"); return owner; } /** * @dev See {IERC721Metadata-name}. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev See {IERC721Metadata-symbol}. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev See {IERC721Metadata-tokenURI}. */ function tokenURI(uint256 tokenId) public view virtual override returns (string memory) { require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token"); string memory baseURI = _baseURI(); return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : ""; } /** * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each * token will be the concatenation of the `baseURI` and the `tokenId`. Empty * by default, can be overriden in child contracts. */ function _baseURI() internal view virtual returns (string memory) { return ""; } /** * @dev See {IERC721-approve}. */ function approve(address to, uint256 tokenId) public virtual override { address owner = ERC721.ownerOf(tokenId); require(to != owner, "ERC721: approval to current owner"); require( _msgSender() == owner || isApprovedForAll(owner, _msgSender()), "ERC721: approve caller is not owner nor approved for all" ); _approve(to, tokenId); } /** * @dev See {IERC721-getApproved}. */ function getApproved(uint256 tokenId) public view virtual override returns (address) { require(_exists(tokenId), "ERC721: approved query for nonexistent token"); return _tokenApprovals[tokenId]; } /** * @dev See {IERC721-setApprovalForAll}. */ function setApprovalForAll(address operator, bool approved) public virtual override { 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.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 {} } pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } pragma solidity ^0.8.0; /** * @title PaymentSplitter * @dev This contract allows to split Ether payments among a group of accounts. The sender does not need to be aware * that the Ether will be split in this way, since it is handled transparently by the contract. * * The split can be in equal parts or in any other arbitrary proportion. The way this is specified is by assigning each * account to a number of shares. Of all the Ether that this contract receives, each account will then be able to claim * an amount proportional to the percentage of total shares they were assigned. * * `PaymentSplitter` follows a _pull payment_ model. This means that payments are not automatically forwarded to the * accounts but kept in this contract, and the actual transfer is triggered as a separate step by calling the {release} * function. * * NOTE: This contract assumes that ERC20 tokens will behave similarly to native tokens (Ether). Rebasing tokens, and * tokens that apply fees during transfers, are likely to not be supported as expected. If in doubt, we encourage you * to run tests before sending real value to this contract. */ contract PaymentSplitter is Context { event PayeeAdded(address account, uint256 shares); event PaymentReleased(address to, uint256 amount); event PaymentReceived(address from, uint256 amount); uint256 private _totalShares; uint256 private _totalReleased; mapping(address => uint256) private _shares; mapping(address => uint256) private _released; address[] private _payees; /** * @dev Creates an instance of `PaymentSplitter` where each account in `payees` is assigned the number of shares at * the matching position in the `shares` array. * * All addresses in `payees` must be non-zero. Both arrays must have the same non-zero length, and there must be no * duplicates in `payees`. */ constructor(address[] memory payees, uint256[] memory shares_) payable { require(payees.length == shares_.length, "PaymentSplitter: payees and shares length mismatch"); require(payees.length > 0, "PaymentSplitter: no payees"); for (uint256 i = 0; i < payees.length; i++) { _addPayee(payees[i], shares_[i]); } } /** * @dev The Ether received will be logged with {PaymentReceived} events. Note that these events are not fully * reliable: it's possible for a contract to receive Ether without triggering this function. This only affects the * reliability of the events, and not the actual splitting of Ether. * * To learn more about this see the Solidity documentation for * https://solidity.readthedocs.io/en/latest/contracts.html#fallback-function[fallback * functions]. */ receive() external payable virtual { emit PaymentReceived(_msgSender(), msg.value); } /** * @dev Getter for the total shares held by payees. */ function totalShares() public view returns (uint256) { return _totalShares; } /** * @dev Getter for the total amount of Ether already released. */ function totalReleased() public view returns (uint256) { return _totalReleased; } /** * @dev Getter for the amount of shares held by an account. */ function shares(address account) public view returns (uint256) { return _shares[account]; } /** * @dev Getter for the amount of Ether already released to a payee. */ function released(address account) public view returns (uint256) { return _released[account]; } /** * @dev Getter for the address of the payee number `index`. */ function payee(uint256 index) public view returns (address) { return _payees[index]; } /** * @dev Triggers a transfer to `account` of the amount of Ether they are owed, according to their percentage of the * total shares and their previous withdrawals. */ function release(address payable account) public virtual { require(_shares[account] > 0, "PaymentSplitter: account has no shares"); uint256 totalReceived = address(this).balance + totalReleased(); uint256 payment = _pendingPayment(account, totalReceived, released(account)); require(payment != 0, "PaymentSplitter: account is not due payment"); _released[account] += payment; _totalReleased += payment; Address.sendValue(account, payment); emit PaymentReleased(account, payment); } /** * @dev internal logic for computing the pending payment of an `account` given the token historical balances and * already released amounts. */ function _pendingPayment( address account, uint256 totalReceived, uint256 alreadyReleased ) private view returns (uint256) { return (totalReceived * _shares[account]) / _totalShares - alreadyReleased; } /** * @dev Add a new payee to the contract. * @param account The address of the payee to add. * @param shares_ The number of shares owned by the payee. */ function _addPayee(address account, uint256 shares_) private { require(account != address(0), "PaymentSplitter: account is the zero address"); require(shares_ > 0, "PaymentSplitter: shares are 0"); require(_shares[account] == 0, "PaymentSplitter: account already has shares"); _payees.push(account); _shares[account] = shares_; _totalShares = _totalShares + shares_; emit PayeeAdded(account, shares_); } } pragma solidity ^0.8.0; /** * @dev These functions deal with verification of Merkle Trees proofs. * * The proofs can be generated using the JavaScript library * https://github.com/miguelmota/merkletreejs[merkletreejs]. * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled. * * See `test/utils/cryptography/MerkleProof.test.js` for some examples. */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } /** * @dev Returns the rebuilt hash obtained by traversing a Merklee tree up * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt * hash matches the root of the tree. When processing the proof, the pairs * of leafs & pre-images are assumed to be sorted. * * _Available since v4.4._ */ 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) { // Hash(current computed hash + current element of the proof) computedHash = _efficientHash(computedHash, proofElement); } else { // Hash(current element of the proof + current computed hash) 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) } } } pragma solidity >=0.4.22 <0.9.0; contract Daddydelphia is Ownable, ERC721, PaymentSplitter { using Strings for uint256; bool public active; bool public isPresale = true; uint256 public constant MAX_SUPPLY = 2500; uint256 public PRICE = 0.1 ether; uint256 public PRESALE_LIMIT = 3; uint256 public PUBLIC_LIMIT = 10; string public baseURI; uint256 public totalSupply; bytes32 merkleTreeRoot; mapping(address => uint256) public mintMap; constructor( string memory tokenBaseURI, address[] memory payees, uint256[] memory shares ) ERC721("Daddydelphia", "DDA") PaymentSplitter(payees, shares) { baseURI = tokenBaseURI; } function flipSale() external onlyOwner { active = !active; } function flipPresale() external onlyOwner { isPresale = !isPresale; } function changeToPublicSale() external onlyOwner { PRICE = 0.12 ether; isPresale = false; } function mint(uint256 qty, bytes32[] calldata proof) external payable { require(active, "SALE NOT STARTED"); require(totalSupply + qty <= MAX_SUPPLY, "MINTED MAXIMUM SUPPLY"); require(msg.value >= PRICE * qty, "WRONG ETH VALUE SENT"); if(isPresale) { require(_verify(_leaf(msg.sender), proof), "ADDRESS NOT ON PRESALE ACCESS LIST"); require(mintMap[msg.sender] + qty <= PRESALE_LIMIT, "YOU CAN'T MINT MORE"); mintMap[msg.sender] += qty; } else { require(qty <= PUBLIC_LIMIT, "YOU CAN'T MINT MORE PER TRANSACTION"); } for (uint256 i = 0; i < qty; i++) { _mint(msg.sender, totalSupply + i); } totalSupply += qty; } function setBaseURI(string calldata URI) public onlyOwner { baseURI = URI; } function _baseURI() internal view override(ERC721) returns (string memory) { return baseURI; } function tokenURI(uint256 _tokenId) public view virtual override(ERC721) returns (string memory) { require(_exists(_tokenId), "ERC721Metadata: Nonexistent token"); string memory currentBaseURI = _baseURI(); return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, _tokenId.toString(), ".json")) : ""; } function setMerkleTreeRoot(bytes32 merkleTreeRoot_) external onlyOwner { merkleTreeRoot = merkleTreeRoot_; } function _leaf(address account) internal pure returns (bytes32) { return keccak256(abi.encodePacked(account)); } function _verify(bytes32 _leafNode, bytes32[] memory proof) internal view returns (bool) { return MerkleProof.verify(proof, merkleTreeRoot, _leafNode); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"tokenBaseURI","type":"string"},{"internalType":"address[]","name":"payees","type":"address[]"},{"internalType":"uint256[]","name":"shares","type":"uint256[]"}],"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":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"PayeeAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"PaymentReleased","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":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRESALE_LIMIT","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":"PUBLIC_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"active","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changeToPublicSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPresale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"qty","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"mintMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"payee","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"released","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"URI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"merkleTreeRoot_","type":"bytes32"}],"name":"setMerkleTreeRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReleased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600c805461ff00191661010017905567016345785d8a0000600d556003600e55600a600f553480156200003657600080fd5b5060405162002c3238038062002c3283398101604081905262000059916200067a565b81816040518060400160405280600c81526020016b446164647964656c7068696160a01b8152506040518060400160405280600381526020016244444160e81b815250620000b6620000b06200023760201b60201c565b6200023b565b8151620000cb90600190602085019062000479565b508051620000e190600290602084019062000479565b5050508051825114620001565760405162461bcd60e51b815260206004820152603260248201527f5061796d656e7453706c69747465723a2070617965657320616e6420736861726044820152710cae640d8cadccee8d040dad2e6dac2e8c6d60731b60648201526084015b60405180910390fd5b6000825111620001a95760405162461bcd60e51b815260206004820152601a60248201527f5061796d656e7453706c69747465723a206e6f2070617965657300000000000060448201526064016200014d565b60005b8251811015620002155762000200838281518110620001cf57620001cf62000786565b6020026020010151838381518110620001ec57620001ec62000786565b60200260200101516200028b60201b60201c565b806200020c81620007b2565b915050620001ac565b505083516200022d9150601090602086019062000479565b5050505062000828565b3390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216620002f85760405162461bcd60e51b815260206004820152602c60248201527f5061796d656e7453706c69747465723a206163636f756e74206973207468652060448201526b7a65726f206164647265737360a01b60648201526084016200014d565b600081116200034a5760405162461bcd60e51b815260206004820152601d60248201527f5061796d656e7453706c69747465723a2073686172657320617265203000000060448201526064016200014d565b6001600160a01b03821660009081526009602052604090205415620003c65760405162461bcd60e51b815260206004820152602b60248201527f5061796d656e7453706c69747465723a206163636f756e7420616c726561647960448201526a206861732073686172657360a81b60648201526084016200014d565b600b8054600181019091557f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b038416908117909155600090815260096020526040902081905560075462000430908290620007d0565b600755604080516001600160a01b0384168152602081018390527f40c340f65e17194d14ddddb073d3c9f888e3cb52b5aae0c6c7706b4fbc905fac910160405180910390a15050565b8280546200048790620007eb565b90600052602060002090601f016020900481019282620004ab5760008555620004f6565b82601f10620004c657805160ff1916838001178555620004f6565b82800160010185558215620004f6579182015b82811115620004f6578251825591602001919060010190620004d9565b506200050492915062000508565b5090565b5b8082111562000504576000815560010162000509565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156200056057620005606200051f565b604052919050565b60006001600160401b038211156200058457620005846200051f565b5060051b60200190565b600082601f830112620005a057600080fd5b81516020620005b9620005b38362000568565b62000535565b82815260059290921b84018101918181019086841115620005d957600080fd5b8286015b848110156200060d5780516001600160a01b0381168114620005ff5760008081fd5b8352918301918301620005dd565b509695505050505050565b600082601f8301126200062a57600080fd5b815160206200063d620005b38362000568565b82815260059290921b840181019181810190868411156200065d57600080fd5b8286015b848110156200060d578051835291830191830162000661565b6000806000606084860312156200069057600080fd5b83516001600160401b0380821115620006a857600080fd5b818601915086601f830112620006bd57600080fd5b815181811115620006d257620006d26200051f565b6020620006e8601f8301601f1916820162000535565b8281528982848701011115620006fd57600080fd5b60005b838110156200071d57858101830151828201840152820162000700565b838111156200072f5760008385840101525b5090880151909650925050808211156200074857600080fd5b62000756878388016200058e565b935060408601519150808211156200076d57600080fd5b506200077c8682870162000618565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415620007c957620007c96200079c565b5060010190565b60008219821115620007e657620007e66200079c565b500190565b600181811c908216806200080057607f821691505b602082108114156200082257634e487b7160e01b600052602260045260246000fd5b50919050565b6123fa80620008386000396000f3fe60806040526004361061021d5760003560e01c806370a08231116101235780639852595c116100ab578063c87b56dd1161006f578063c87b56dd14610638578063ce7c2ac214610658578063e33b7de31461068e578063e985e9c5146106a3578063f2fde38b146106ec57600080fd5b80639852595c14610599578063a22cb465146105cf578063a67d9c5e146105ef578063b88d4fde14610605578063ba41b0c61461062557600080fd5b80638b83209b116100f25780638b83209b146105115780638d859f3e146105315780638da5cb5b1461054757806395364a841461056557806395d89b411461058457600080fd5b806370a08231146104b2578063715018a6146104d25780637ba5e621146104e75780637ee5eef2146104fc57600080fd5b806323b872dd116101a657806350dc46561161017557806350dc46561461041057806355f804b31461043057806360d3721f146104505780636352211e1461047d5780636c0360eb1461049d57600080fd5b806323b872dd146103a557806332cb6b0c146103c55780633a98ef39146103db57806342842e0e146103f057600080fd5b8063081812fc116101ed578063081812fc146102f3578063095ea7b31461032b57806318160ddd1461034b578063191655871461036f5780631aee3f911461038f57600080fd5b8062acf3481461026b57806301ffc9a71461028257806302fb0c5e146102b757806306fdde03146102d157600080fd5b36610266577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77033604080516001600160a01b0390921682523460208301520160405180910390a1005b600080fd5b34801561027757600080fd5b5061028061070c565b005b34801561028e57600080fd5b506102a261029d366004611db2565b61075c565b60405190151581526020015b60405180910390f35b3480156102c357600080fd5b50600c546102a29060ff1681565b3480156102dd57600080fd5b506102e66107ae565b6040516102ae9190611e27565b3480156102ff57600080fd5b5061031361030e366004611e3a565b610840565b6040516001600160a01b0390911681526020016102ae565b34801561033757600080fd5b50610280610346366004611e68565b6108d5565b34801561035757600080fd5b5061036160115481565b6040519081526020016102ae565b34801561037b57600080fd5b5061028061038a366004611e94565b6109eb565b34801561039b57600080fd5b50610361600e5481565b3480156103b157600080fd5b506102806103c0366004611eb1565b610b9c565b3480156103d157600080fd5b506103616109c481565b3480156103e757600080fd5b50600754610361565b3480156103fc57600080fd5b5061028061040b366004611eb1565b610bcd565b34801561041c57600080fd5b5061028061042b366004611e3a565b610be8565b34801561043c57600080fd5b5061028061044b366004611ef2565b610c17565b34801561045c57600080fd5b5061036161046b366004611e94565b60136020526000908152604090205481565b34801561048957600080fd5b50610313610498366004611e3a565b610c4d565b3480156104a957600080fd5b506102e6610cc4565b3480156104be57600080fd5b506103616104cd366004611e94565b610d52565b3480156104de57600080fd5b50610280610dd9565b3480156104f357600080fd5b50610280610e0f565b34801561050857600080fd5b50610280610e4d565b34801561051d57600080fd5b5061031361052c366004611e3a565b610e90565b34801561053d57600080fd5b50610361600d5481565b34801561055357600080fd5b506000546001600160a01b0316610313565b34801561057157600080fd5b50600c546102a290610100900460ff1681565b34801561059057600080fd5b506102e6610ec0565b3480156105a557600080fd5b506103616105b4366004611e94565b6001600160a01b03166000908152600a602052604090205490565b3480156105db57600080fd5b506102806105ea366004611f64565b610ecf565b3480156105fb57600080fd5b50610361600f5481565b34801561061157600080fd5b50610280610620366004611fb8565b610f94565b610280610633366004612098565b610fcc565b34801561064457600080fd5b506102e6610653366004611e3a565b6112d2565b34801561066457600080fd5b50610361610673366004611e94565b6001600160a01b031660009081526009602052604090205490565b34801561069a57600080fd5b50600854610361565b3480156106af57600080fd5b506102a26106be366004612117565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b3480156106f857600080fd5b50610280610707366004611e94565b61139f565b6000546001600160a01b0316331461073f5760405162461bcd60e51b815260040161073690612145565b60405180910390fd5b600c805461ff001981166101009182900460ff1615909102179055565b60006001600160e01b031982166380ac58cd60e01b148061078d57506001600160e01b03198216635b5e139f60e01b145b806107a857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600180546107bd9061217a565b80601f01602080910402602001604051908101604052809291908181526020018280546107e99061217a565b80156108365780601f1061080b57610100808354040283529160200191610836565b820191906000526020600020905b81548152906001019060200180831161081957829003601f168201915b5050505050905090565b6000818152600360205260408120546001600160a01b03166108b95760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610736565b506000908152600560205260409020546001600160a01b031690565b60006108e082610c4d565b9050806001600160a01b0316836001600160a01b0316141561094e5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610736565b336001600160a01b038216148061096a575061096a81336106be565b6109dc5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610736565b6109e6838361143a565b505050565b6001600160a01b038116600090815260096020526040902054610a5f5760405162461bcd60e51b815260206004820152602660248201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060448201526573686172657360d01b6064820152608401610736565b6000610a6a60085490565b610a7490476121cb565b90506000610aa18383610a9c866001600160a01b03166000908152600a602052604090205490565b6114a8565b905080610b045760405162461bcd60e51b815260206004820152602b60248201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060448201526a191d59481c185e5b595b9d60aa1b6064820152608401610736565b6001600160a01b0383166000908152600a602052604081208054839290610b2c9084906121cb565b925050819055508060086000828254610b4591906121cb565b90915550610b55905083826114ee565b604080516001600160a01b0385168152602081018390527fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b056910160405180910390a1505050565b610ba63382611607565b610bc25760405162461bcd60e51b8152600401610736906121e3565b6109e68383836116fa565b6109e683838360405180602001604052806000815250610f94565b6000546001600160a01b03163314610c125760405162461bcd60e51b815260040161073690612145565b601255565b6000546001600160a01b03163314610c415760405162461bcd60e51b815260040161073690612145565b6109e660108383611d03565b6000818152600360205260408120546001600160a01b0316806107a85760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610736565b60108054610cd19061217a565b80601f0160208091040260200160405190810160405280929190818152602001828054610cfd9061217a565b8015610d4a5780601f10610d1f57610100808354040283529160200191610d4a565b820191906000526020600020905b815481529060010190602001808311610d2d57829003601f168201915b505050505081565b60006001600160a01b038216610dbd5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610736565b506001600160a01b031660009081526004602052604090205490565b6000546001600160a01b03163314610e035760405162461bcd60e51b815260040161073690612145565b610e0d600061189a565b565b6000546001600160a01b03163314610e395760405162461bcd60e51b815260040161073690612145565b600c805460ff19811660ff90911615179055565b6000546001600160a01b03163314610e775760405162461bcd60e51b815260040161073690612145565b6701aa535d3d0c0000600d55600c805461ff0019169055565b6000600b8281548110610ea557610ea5612234565b6000918252602090912001546001600160a01b031692915050565b6060600280546107bd9061217a565b6001600160a01b038216331415610f285760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610736565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610f9e3383611607565b610fba5760405162461bcd60e51b8152600401610736906121e3565b610fc6848484846118ea565b50505050565b600c5460ff166110115760405162461bcd60e51b815260206004820152601060248201526f14d05311481393d50814d5105495115160821b6044820152606401610736565b6109c48360115461102291906121cb565b11156110685760405162461bcd60e51b81526020600482015260156024820152744d494e544544204d4158494d554d20535550504c5960581b6044820152606401610736565b82600d54611076919061224a565b3410156110bc5760405162461bcd60e51b815260206004820152601460248201527315d493d391c81155120815905315514814d1539560621b6044820152606401610736565b600c54610100900460ff161561122357604080513360601b6bffffffffffffffffffffffff191660208083019190915282516014818403018152603490920190925280519101206111409083838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061191d92505050565b6111975760405162461bcd60e51b815260206004820152602260248201527f41444452455353204e4f54204f4e2050524553414c4520414343455353204c4960448201526114d560f21b6064820152608401610736565b600e54336000908152601360205260409020546111b59085906121cb565b11156111f95760405162461bcd60e51b8152602060048201526013602482015272594f552043414e2754204d494e54204d4f524560681b6044820152606401610736565b33600090815260136020526040812080548592906112189084906121cb565b909155506112819050565b600f548311156112815760405162461bcd60e51b815260206004820152602360248201527f594f552043414e2754204d494e54204d4f524520504552205452414e5341435460448201526224a7a760e91b6064820152608401610736565b60005b838110156112b5576112a3338260115461129e91906121cb565b61192c565b806112ad81612269565b915050611284565b5082601160008282546112c891906121cb565b9091555050505050565b6000818152600360205260409020546060906001600160a01b03166113435760405162461bcd60e51b815260206004820152602160248201527f4552433732314d657461646174613a204e6f6e6578697374656e7420746f6b656044820152603760f91b6064820152608401610736565b600061134d611a6e565b9050600081511161136d5760405180602001604052806000815250611398565b8061137784611a7d565b604051602001611388929190612284565b6040516020818303038152906040525b9392505050565b6000546001600160a01b031633146113c95760405162461bcd60e51b815260040161073690612145565b6001600160a01b03811661142e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610736565b6114378161189a565b50565b600081815260056020526040902080546001600160a01b0319166001600160a01b038416908117909155819061146f82610c4d565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6007546001600160a01b038416600090815260096020526040812054909183916114d2908661224a565b6114dc91906122d9565b6114e691906122ed565b949350505050565b8047101561153e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610736565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461158b576040519150601f19603f3d011682016040523d82523d6000602084013e611590565b606091505b50509050806109e65760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610736565b6000818152600360205260408120546001600160a01b03166116805760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610736565b600061168b83610c4d565b9050806001600160a01b0316846001600160a01b031614806116c65750836001600160a01b03166116bb84610840565b6001600160a01b0316145b806114e657506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff166114e6565b826001600160a01b031661170d82610c4d565b6001600160a01b0316146117755760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610736565b6001600160a01b0382166117d75760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610736565b6117e260008261143a565b6001600160a01b038316600090815260046020526040812080546001929061180b9084906122ed565b90915550506001600160a01b03821660009081526004602052604081208054600192906118399084906121cb565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6118f58484846116fa565b61190184848484611b7b565b610fc65760405162461bcd60e51b815260040161073690612304565b60006113988260125485611c79565b6001600160a01b0382166119825760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610736565b6000818152600360205260409020546001600160a01b0316156119e75760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610736565b6001600160a01b0382166000908152600460205260408120805460019290611a109084906121cb565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6060601080546107bd9061217a565b606081611aa15750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611acb5780611ab581612269565b9150611ac49050600a836122d9565b9150611aa5565b60008167ffffffffffffffff811115611ae657611ae6611fa2565b6040519080825280601f01601f191660200182016040528015611b10576020820181803683370190505b5090505b84156114e657611b256001836122ed565b9150611b32600a86612356565b611b3d9060306121cb565b60f81b818381518110611b5257611b52612234565b60200101906001600160f81b031916908160001a905350611b74600a866122d9565b9450611b14565b60006001600160a01b0384163b15611c6e57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611bbf90339089908890889060040161236a565b6020604051808303816000875af1925050508015611bfa575060408051601f3d908101601f19168201909252611bf7918101906123a7565b60015b611c54573d808015611c28576040519150601f19603f3d011682016040523d82523d6000602084013e611c2d565b606091505b508051611c4c5760405162461bcd60e51b815260040161073690612304565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506114e6565b506001949350505050565b600082611c868584611c8f565b14949350505050565b600081815b8451811015611cfb576000858281518110611cb157611cb1612234565b60200260200101519050808311611cd75760008381526020829052604090209250611ce8565b600081815260208490526040902092505b5080611cf381612269565b915050611c94565b509392505050565b828054611d0f9061217a565b90600052602060002090601f016020900481019282611d315760008555611d77565b82601f10611d4a5782800160ff19823516178555611d77565b82800160010185558215611d77579182015b82811115611d77578235825591602001919060010190611d5c565b50611d83929150611d87565b5090565b5b80821115611d835760008155600101611d88565b6001600160e01b03198116811461143757600080fd5b600060208284031215611dc457600080fd5b813561139881611d9c565b60005b83811015611dea578181015183820152602001611dd2565b83811115610fc65750506000910152565b60008151808452611e13816020860160208601611dcf565b601f01601f19169290920160200192915050565b6020815260006113986020830184611dfb565b600060208284031215611e4c57600080fd5b5035919050565b6001600160a01b038116811461143757600080fd5b60008060408385031215611e7b57600080fd5b8235611e8681611e53565b946020939093013593505050565b600060208284031215611ea657600080fd5b813561139881611e53565b600080600060608486031215611ec657600080fd5b8335611ed181611e53565b92506020840135611ee181611e53565b929592945050506040919091013590565b60008060208385031215611f0557600080fd5b823567ffffffffffffffff80821115611f1d57600080fd5b818501915085601f830112611f3157600080fd5b813581811115611f4057600080fd5b866020828501011115611f5257600080fd5b60209290920196919550909350505050565b60008060408385031215611f7757600080fd5b8235611f8281611e53565b915060208301358015158114611f9757600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215611fce57600080fd5b8435611fd981611e53565b93506020850135611fe981611e53565b925060408501359150606085013567ffffffffffffffff8082111561200d57600080fd5b818701915087601f83011261202157600080fd5b81358181111561203357612033611fa2565b604051601f8201601f19908116603f0116810190838211818310171561205b5761205b611fa2565b816040528281528a602084870101111561207457600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806000604084860312156120ad57600080fd5b83359250602084013567ffffffffffffffff808211156120cc57600080fd5b818601915086601f8301126120e057600080fd5b8135818111156120ef57600080fd5b8760208260051b850101111561210457600080fd5b6020830194508093505050509250925092565b6000806040838503121561212a57600080fd5b823561213581611e53565b91506020830135611f9781611e53565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061218e57607f821691505b602082108114156121af57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156121de576121de6121b5565b500190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000816000190483118215151615612264576122646121b5565b500290565b600060001982141561227d5761227d6121b5565b5060010190565b60008351612296818460208801611dcf565b8351908301906122aa818360208801611dcf565b64173539b7b760d91b9101908152600501949350505050565b634e487b7160e01b600052601260045260246000fd5b6000826122e8576122e86122c3565b500490565b6000828210156122ff576122ff6121b5565b500390565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600082612365576123656122c3565b500690565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061239d90830184611dfb565b9695505050505050565b6000602082840312156123b957600080fd5b815161139881611d9c56fea264697066735822122074218018f71f9ef5befceb7c5bc87488bc56897592ed4d19eac98d08977991ce64736f6c634300080a0033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000003668747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f646164647976696c6c652f706c616365686f6c6465722f0000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000005aeb72013c9d21954c6c8cf5989d56a9c63efe660000000000000000000000005a735f08e56d4f7e86d4f3780df5d21572b9da370000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000005a000000000000000000000000000000000000000000000000000000000000000a
Deployed Bytecode
0x60806040526004361061021d5760003560e01c806370a08231116101235780639852595c116100ab578063c87b56dd1161006f578063c87b56dd14610638578063ce7c2ac214610658578063e33b7de31461068e578063e985e9c5146106a3578063f2fde38b146106ec57600080fd5b80639852595c14610599578063a22cb465146105cf578063a67d9c5e146105ef578063b88d4fde14610605578063ba41b0c61461062557600080fd5b80638b83209b116100f25780638b83209b146105115780638d859f3e146105315780638da5cb5b1461054757806395364a841461056557806395d89b411461058457600080fd5b806370a08231146104b2578063715018a6146104d25780637ba5e621146104e75780637ee5eef2146104fc57600080fd5b806323b872dd116101a657806350dc46561161017557806350dc46561461041057806355f804b31461043057806360d3721f146104505780636352211e1461047d5780636c0360eb1461049d57600080fd5b806323b872dd146103a557806332cb6b0c146103c55780633a98ef39146103db57806342842e0e146103f057600080fd5b8063081812fc116101ed578063081812fc146102f3578063095ea7b31461032b57806318160ddd1461034b578063191655871461036f5780631aee3f911461038f57600080fd5b8062acf3481461026b57806301ffc9a71461028257806302fb0c5e146102b757806306fdde03146102d157600080fd5b36610266577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77033604080516001600160a01b0390921682523460208301520160405180910390a1005b600080fd5b34801561027757600080fd5b5061028061070c565b005b34801561028e57600080fd5b506102a261029d366004611db2565b61075c565b60405190151581526020015b60405180910390f35b3480156102c357600080fd5b50600c546102a29060ff1681565b3480156102dd57600080fd5b506102e66107ae565b6040516102ae9190611e27565b3480156102ff57600080fd5b5061031361030e366004611e3a565b610840565b6040516001600160a01b0390911681526020016102ae565b34801561033757600080fd5b50610280610346366004611e68565b6108d5565b34801561035757600080fd5b5061036160115481565b6040519081526020016102ae565b34801561037b57600080fd5b5061028061038a366004611e94565b6109eb565b34801561039b57600080fd5b50610361600e5481565b3480156103b157600080fd5b506102806103c0366004611eb1565b610b9c565b3480156103d157600080fd5b506103616109c481565b3480156103e757600080fd5b50600754610361565b3480156103fc57600080fd5b5061028061040b366004611eb1565b610bcd565b34801561041c57600080fd5b5061028061042b366004611e3a565b610be8565b34801561043c57600080fd5b5061028061044b366004611ef2565b610c17565b34801561045c57600080fd5b5061036161046b366004611e94565b60136020526000908152604090205481565b34801561048957600080fd5b50610313610498366004611e3a565b610c4d565b3480156104a957600080fd5b506102e6610cc4565b3480156104be57600080fd5b506103616104cd366004611e94565b610d52565b3480156104de57600080fd5b50610280610dd9565b3480156104f357600080fd5b50610280610e0f565b34801561050857600080fd5b50610280610e4d565b34801561051d57600080fd5b5061031361052c366004611e3a565b610e90565b34801561053d57600080fd5b50610361600d5481565b34801561055357600080fd5b506000546001600160a01b0316610313565b34801561057157600080fd5b50600c546102a290610100900460ff1681565b34801561059057600080fd5b506102e6610ec0565b3480156105a557600080fd5b506103616105b4366004611e94565b6001600160a01b03166000908152600a602052604090205490565b3480156105db57600080fd5b506102806105ea366004611f64565b610ecf565b3480156105fb57600080fd5b50610361600f5481565b34801561061157600080fd5b50610280610620366004611fb8565b610f94565b610280610633366004612098565b610fcc565b34801561064457600080fd5b506102e6610653366004611e3a565b6112d2565b34801561066457600080fd5b50610361610673366004611e94565b6001600160a01b031660009081526009602052604090205490565b34801561069a57600080fd5b50600854610361565b3480156106af57600080fd5b506102a26106be366004612117565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b3480156106f857600080fd5b50610280610707366004611e94565b61139f565b6000546001600160a01b0316331461073f5760405162461bcd60e51b815260040161073690612145565b60405180910390fd5b600c805461ff001981166101009182900460ff1615909102179055565b60006001600160e01b031982166380ac58cd60e01b148061078d57506001600160e01b03198216635b5e139f60e01b145b806107a857506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600180546107bd9061217a565b80601f01602080910402602001604051908101604052809291908181526020018280546107e99061217a565b80156108365780601f1061080b57610100808354040283529160200191610836565b820191906000526020600020905b81548152906001019060200180831161081957829003601f168201915b5050505050905090565b6000818152600360205260408120546001600160a01b03166108b95760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610736565b506000908152600560205260409020546001600160a01b031690565b60006108e082610c4d565b9050806001600160a01b0316836001600160a01b0316141561094e5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610736565b336001600160a01b038216148061096a575061096a81336106be565b6109dc5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610736565b6109e6838361143a565b505050565b6001600160a01b038116600090815260096020526040902054610a5f5760405162461bcd60e51b815260206004820152602660248201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060448201526573686172657360d01b6064820152608401610736565b6000610a6a60085490565b610a7490476121cb565b90506000610aa18383610a9c866001600160a01b03166000908152600a602052604090205490565b6114a8565b905080610b045760405162461bcd60e51b815260206004820152602b60248201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060448201526a191d59481c185e5b595b9d60aa1b6064820152608401610736565b6001600160a01b0383166000908152600a602052604081208054839290610b2c9084906121cb565b925050819055508060086000828254610b4591906121cb565b90915550610b55905083826114ee565b604080516001600160a01b0385168152602081018390527fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b056910160405180910390a1505050565b610ba63382611607565b610bc25760405162461bcd60e51b8152600401610736906121e3565b6109e68383836116fa565b6109e683838360405180602001604052806000815250610f94565b6000546001600160a01b03163314610c125760405162461bcd60e51b815260040161073690612145565b601255565b6000546001600160a01b03163314610c415760405162461bcd60e51b815260040161073690612145565b6109e660108383611d03565b6000818152600360205260408120546001600160a01b0316806107a85760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610736565b60108054610cd19061217a565b80601f0160208091040260200160405190810160405280929190818152602001828054610cfd9061217a565b8015610d4a5780601f10610d1f57610100808354040283529160200191610d4a565b820191906000526020600020905b815481529060010190602001808311610d2d57829003601f168201915b505050505081565b60006001600160a01b038216610dbd5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610736565b506001600160a01b031660009081526004602052604090205490565b6000546001600160a01b03163314610e035760405162461bcd60e51b815260040161073690612145565b610e0d600061189a565b565b6000546001600160a01b03163314610e395760405162461bcd60e51b815260040161073690612145565b600c805460ff19811660ff90911615179055565b6000546001600160a01b03163314610e775760405162461bcd60e51b815260040161073690612145565b6701aa535d3d0c0000600d55600c805461ff0019169055565b6000600b8281548110610ea557610ea5612234565b6000918252602090912001546001600160a01b031692915050565b6060600280546107bd9061217a565b6001600160a01b038216331415610f285760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610736565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610f9e3383611607565b610fba5760405162461bcd60e51b8152600401610736906121e3565b610fc6848484846118ea565b50505050565b600c5460ff166110115760405162461bcd60e51b815260206004820152601060248201526f14d05311481393d50814d5105495115160821b6044820152606401610736565b6109c48360115461102291906121cb565b11156110685760405162461bcd60e51b81526020600482015260156024820152744d494e544544204d4158494d554d20535550504c5960581b6044820152606401610736565b82600d54611076919061224a565b3410156110bc5760405162461bcd60e51b815260206004820152601460248201527315d493d391c81155120815905315514814d1539560621b6044820152606401610736565b600c54610100900460ff161561122357604080513360601b6bffffffffffffffffffffffff191660208083019190915282516014818403018152603490920190925280519101206111409083838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061191d92505050565b6111975760405162461bcd60e51b815260206004820152602260248201527f41444452455353204e4f54204f4e2050524553414c4520414343455353204c4960448201526114d560f21b6064820152608401610736565b600e54336000908152601360205260409020546111b59085906121cb565b11156111f95760405162461bcd60e51b8152602060048201526013602482015272594f552043414e2754204d494e54204d4f524560681b6044820152606401610736565b33600090815260136020526040812080548592906112189084906121cb565b909155506112819050565b600f548311156112815760405162461bcd60e51b815260206004820152602360248201527f594f552043414e2754204d494e54204d4f524520504552205452414e5341435460448201526224a7a760e91b6064820152608401610736565b60005b838110156112b5576112a3338260115461129e91906121cb565b61192c565b806112ad81612269565b915050611284565b5082601160008282546112c891906121cb565b9091555050505050565b6000818152600360205260409020546060906001600160a01b03166113435760405162461bcd60e51b815260206004820152602160248201527f4552433732314d657461646174613a204e6f6e6578697374656e7420746f6b656044820152603760f91b6064820152608401610736565b600061134d611a6e565b9050600081511161136d5760405180602001604052806000815250611398565b8061137784611a7d565b604051602001611388929190612284565b6040516020818303038152906040525b9392505050565b6000546001600160a01b031633146113c95760405162461bcd60e51b815260040161073690612145565b6001600160a01b03811661142e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610736565b6114378161189a565b50565b600081815260056020526040902080546001600160a01b0319166001600160a01b038416908117909155819061146f82610c4d565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6007546001600160a01b038416600090815260096020526040812054909183916114d2908661224a565b6114dc91906122d9565b6114e691906122ed565b949350505050565b8047101561153e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610736565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461158b576040519150601f19603f3d011682016040523d82523d6000602084013e611590565b606091505b50509050806109e65760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610736565b6000818152600360205260408120546001600160a01b03166116805760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610736565b600061168b83610c4d565b9050806001600160a01b0316846001600160a01b031614806116c65750836001600160a01b03166116bb84610840565b6001600160a01b0316145b806114e657506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff166114e6565b826001600160a01b031661170d82610c4d565b6001600160a01b0316146117755760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610736565b6001600160a01b0382166117d75760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610736565b6117e260008261143a565b6001600160a01b038316600090815260046020526040812080546001929061180b9084906122ed565b90915550506001600160a01b03821660009081526004602052604081208054600192906118399084906121cb565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6118f58484846116fa565b61190184848484611b7b565b610fc65760405162461bcd60e51b815260040161073690612304565b60006113988260125485611c79565b6001600160a01b0382166119825760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610736565b6000818152600360205260409020546001600160a01b0316156119e75760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610736565b6001600160a01b0382166000908152600460205260408120805460019290611a109084906121cb565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6060601080546107bd9061217a565b606081611aa15750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611acb5780611ab581612269565b9150611ac49050600a836122d9565b9150611aa5565b60008167ffffffffffffffff811115611ae657611ae6611fa2565b6040519080825280601f01601f191660200182016040528015611b10576020820181803683370190505b5090505b84156114e657611b256001836122ed565b9150611b32600a86612356565b611b3d9060306121cb565b60f81b818381518110611b5257611b52612234565b60200101906001600160f81b031916908160001a905350611b74600a866122d9565b9450611b14565b60006001600160a01b0384163b15611c6e57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611bbf90339089908890889060040161236a565b6020604051808303816000875af1925050508015611bfa575060408051601f3d908101601f19168201909252611bf7918101906123a7565b60015b611c54573d808015611c28576040519150601f19603f3d011682016040523d82523d6000602084013e611c2d565b606091505b508051611c4c5760405162461bcd60e51b815260040161073690612304565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506114e6565b506001949350505050565b600082611c868584611c8f565b14949350505050565b600081815b8451811015611cfb576000858281518110611cb157611cb1612234565b60200260200101519050808311611cd75760008381526020829052604090209250611ce8565b600081815260208490526040902092505b5080611cf381612269565b915050611c94565b509392505050565b828054611d0f9061217a565b90600052602060002090601f016020900481019282611d315760008555611d77565b82601f10611d4a5782800160ff19823516178555611d77565b82800160010185558215611d77579182015b82811115611d77578235825591602001919060010190611d5c565b50611d83929150611d87565b5090565b5b80821115611d835760008155600101611d88565b6001600160e01b03198116811461143757600080fd5b600060208284031215611dc457600080fd5b813561139881611d9c565b60005b83811015611dea578181015183820152602001611dd2565b83811115610fc65750506000910152565b60008151808452611e13816020860160208601611dcf565b601f01601f19169290920160200192915050565b6020815260006113986020830184611dfb565b600060208284031215611e4c57600080fd5b5035919050565b6001600160a01b038116811461143757600080fd5b60008060408385031215611e7b57600080fd5b8235611e8681611e53565b946020939093013593505050565b600060208284031215611ea657600080fd5b813561139881611e53565b600080600060608486031215611ec657600080fd5b8335611ed181611e53565b92506020840135611ee181611e53565b929592945050506040919091013590565b60008060208385031215611f0557600080fd5b823567ffffffffffffffff80821115611f1d57600080fd5b818501915085601f830112611f3157600080fd5b813581811115611f4057600080fd5b866020828501011115611f5257600080fd5b60209290920196919550909350505050565b60008060408385031215611f7757600080fd5b8235611f8281611e53565b915060208301358015158114611f9757600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215611fce57600080fd5b8435611fd981611e53565b93506020850135611fe981611e53565b925060408501359150606085013567ffffffffffffffff8082111561200d57600080fd5b818701915087601f83011261202157600080fd5b81358181111561203357612033611fa2565b604051601f8201601f19908116603f0116810190838211818310171561205b5761205b611fa2565b816040528281528a602084870101111561207457600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806000604084860312156120ad57600080fd5b83359250602084013567ffffffffffffffff808211156120cc57600080fd5b818601915086601f8301126120e057600080fd5b8135818111156120ef57600080fd5b8760208260051b850101111561210457600080fd5b6020830194508093505050509250925092565b6000806040838503121561212a57600080fd5b823561213581611e53565b91506020830135611f9781611e53565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061218e57607f821691505b602082108114156121af57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156121de576121de6121b5565b500190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000816000190483118215151615612264576122646121b5565b500290565b600060001982141561227d5761227d6121b5565b5060010190565b60008351612296818460208801611dcf565b8351908301906122aa818360208801611dcf565b64173539b7b760d91b9101908152600501949350505050565b634e487b7160e01b600052601260045260246000fd5b6000826122e8576122e86122c3565b500490565b6000828210156122ff576122ff6121b5565b500390565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b600082612365576123656122c3565b500690565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061239d90830184611dfb565b9695505050505050565b6000602082840312156123b957600080fd5b815161139881611d9c56fea264697066735822122074218018f71f9ef5befceb7c5bc87488bc56897592ed4d19eac98d08977991ce64736f6c634300080a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000003668747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f646164647976696c6c652f706c616365686f6c6465722f0000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000005aeb72013c9d21954c6c8cf5989d56a9c63efe660000000000000000000000005a735f08e56d4f7e86d4f3780df5d21572b9da370000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000005a000000000000000000000000000000000000000000000000000000000000000a
-----Decoded View---------------
Arg [0] : tokenBaseURI (string): https://storage.googleapis.com/daddyville/placeholder/
Arg [1] : payees (address[]): 0x5AEb72013c9d21954c6c8CF5989d56A9c63EfE66,0x5a735F08E56D4f7E86d4F3780dF5d21572b9Da37
Arg [2] : shares (uint256[]): 90,10
-----Encoded View---------------
12 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000120
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000036
Arg [4] : 68747470733a2f2f73746f726167652e676f6f676c65617069732e636f6d2f64
Arg [5] : 6164647976696c6c652f706c616365686f6c6465722f00000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [7] : 0000000000000000000000005aeb72013c9d21954c6c8cf5989d56a9c63efe66
Arg [8] : 0000000000000000000000005a735f08e56d4f7e86d4f3780df5d21572b9da37
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [10] : 000000000000000000000000000000000000000000000000000000000000005a
Arg [11] : 000000000000000000000000000000000000000000000000000000000000000a
Deployed Bytecode Sourcemap
42889:2794:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37755:40;1168:10;37755:40;;;-1:-1:-1;;;;;206:32:1;;;188:51;;37785:9:0;270:2:1;255:18;;248:34;161:18;37755:40:0;;;;;;;42889:2794;;;;;43676:83;;;;;;;;;;;;;:::i;:::-;;20543:293;;;;;;;;;;-1:-1:-1;20543:293:0;;;;;:::i;:::-;;:::i;:::-;;;844:14:1;;837:22;819:41;;807:2;792:18;20543:293:0;;;;;;;;42988:18;;;;;;;;;;-1:-1:-1;42988:18:0;;;;;;;;21476:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;23035:221::-;;;;;;;;;;-1:-1:-1;23035:221:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1971:32:1;;;1953:51;;1941:2;1926:18;23035:221:0;1807:203:1;22558:411:0;;;;;;;;;;-1:-1:-1;22558:411:0;;;;;:::i;:::-;;:::i;43243:26::-;;;;;;;;;;;;;;;;;;;2617:25:1;;;2605:2;2590:18;43243:26:0;2471:177:1;38961:566:0;;;;;;;;;;-1:-1:-1;38961:566:0;;;;;:::i;:::-;;:::i;43135:32::-;;;;;;;;;;;;;;;;23925:339;;;;;;;;;;-1:-1:-1;23925:339:0;;;;;:::i;:::-;;:::i;43048:41::-;;;;;;;;;;;;43085:4;43048:41;;37886:91;;;;;;;;;;-1:-1:-1;37957:12:0;;37886:91;;24335:185;;;;;;;;;;-1:-1:-1;24335:185:0;;;;;:::i;:::-;;:::i;45249:122::-;;;;;;;;;;-1:-1:-1;45249:122:0;;;;;:::i;:::-;;:::i;44668:90::-;;;;;;;;;;-1:-1:-1;44668:90:0;;;;;:::i;:::-;;:::i;43307:42::-;;;;;;;;;;-1:-1:-1;43307:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;21170:239;;;;;;;;;;-1:-1:-1;21170:239:0;;;;;:::i;:::-;;:::i;43215:21::-;;;;;;;;;;;;;:::i;20900:208::-;;;;;;;;;;-1:-1:-1;20900:208:0;;;;;:::i;:::-;;:::i;34242:94::-;;;;;;;;;;;;;:::i;43594:74::-;;;;;;;;;;;;;:::i;43767:114::-;;;;;;;;;;;;;:::i;38661:100::-;;;;;;;;;;-1:-1:-1;38661:100:0;;;;;:::i;:::-;;:::i;43096:32::-;;;;;;;;;;;;;;;;33591:87;;;;;;;;;;-1:-1:-1;33637:7:0;33664:6;-1:-1:-1;;;;;33664:6:0;33591:87;;43013:28;;;;;;;;;;-1:-1:-1;43013:28:0;;;;;;;;;;;21645:104;;;;;;;;;;;;;:::i;38461:109::-;;;;;;;;;;-1:-1:-1;38461:109:0;;;;;:::i;:::-;-1:-1:-1;;;;;38544:18:0;38517:7;38544:18;;;:9;:18;;;;;;;38461:109;23328:295;;;;;;;;;;-1:-1:-1;23328:295:0;;;;;:::i;:::-;;:::i;43174:32::-;;;;;;;;;;;;;;;;24591:328;;;;;;;;;;-1:-1:-1;24591:328:0;;;;;:::i;:::-;;:::i;43889:771::-;;;;;;:::i;:::-;;:::i;44882:359::-;;;;;;;;;;-1:-1:-1;44882:359:0;;;;;:::i;:::-;;:::i;38257:105::-;;;;;;;;;;-1:-1:-1;38257:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;38338:16:0;38311:7;38338:16;;;:7;:16;;;;;;;38257:105;38071:95;;;;;;;;;;-1:-1:-1;38144:14:0;;38071:95;;23694:164;;;;;;;;;;-1:-1:-1;23694:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;23815:25:0;;;23791:4;23815:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;23694:164;34491:192;;;;;;;;;;-1:-1:-1;34491:192:0;;;;;:::i;:::-;;:::i;43676:83::-;33637:7;33664:6;-1:-1:-1;;;;;33664:6:0;1168:10;33811:23;33803:68;;;;-1:-1:-1;;;33803:68:0;;;;;;;:::i;:::-;;;;;;;;;43742:9:::1;::::0;;-1:-1:-1;;43729:22:0;::::1;43742:9;::::0;;;::::1;;;43741:10;43729:22:::0;;::::1;;::::0;;43676:83::o;20543:293::-;20645:4;-1:-1:-1;;;;;;20678:40:0;;-1:-1:-1;;;20678:40:0;;:101;;-1:-1:-1;;;;;;;20731:48:0;;-1:-1:-1;;;20731:48:0;20678:101;:150;;;-1:-1:-1;;;;;;;;;;17222:40:0;;;20792:36;20662:166;20543:293;-1:-1:-1;;20543:293:0:o;21476:100::-;21530:13;21563:5;21556:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21476:100;:::o;23035:221::-;23111:7;26518:16;;;:7;:16;;;;;;-1:-1:-1;;;;;26518:16:0;23131:73;;;;-1:-1:-1;;;23131:73:0;;8261:2:1;23131:73:0;;;8243:21:1;8300:2;8280:18;;;8273:30;8339:34;8319:18;;;8312:62;-1:-1:-1;;;8390:18:1;;;8383:42;8442:19;;23131:73:0;8059:408:1;23131:73:0;-1:-1:-1;23224:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;23224:24:0;;23035:221::o;22558:411::-;22639:13;22655:23;22670:7;22655:14;:23::i;:::-;22639:39;;22703:5;-1:-1:-1;;;;;22697:11:0;:2;-1:-1:-1;;;;;22697:11:0;;;22689:57;;;;-1:-1:-1;;;22689:57:0;;8674:2:1;22689:57:0;;;8656:21:1;8713:2;8693:18;;;8686:30;8752:34;8732:18;;;8725:62;-1:-1:-1;;;8803:18:1;;;8796:31;8844:19;;22689:57:0;8472:397:1;22689:57:0;1168:10;-1:-1:-1;;;;;22781:21:0;;;;:62;;-1:-1:-1;22806:37:0;22823:5;1168:10;23694:164;:::i;22806:37::-;22759:168;;;;-1:-1:-1;;;22759:168:0;;9076:2:1;22759:168:0;;;9058:21:1;9115:2;9095:18;;;9088:30;9154:34;9134:18;;;9127:62;9225:26;9205:18;;;9198:54;9269:19;;22759:168:0;8874:420:1;22759:168:0;22940:21;22949:2;22953:7;22940:8;:21::i;:::-;22628:341;22558:411;;:::o;38961:566::-;-1:-1:-1;;;;;39037:16:0;;39056:1;39037:16;;;:7;:16;;;;;;39029:71;;;;-1:-1:-1;;;39029:71:0;;9501:2:1;39029:71:0;;;9483:21:1;9540:2;9520:18;;;9513:30;9579:34;9559:18;;;9552:62;-1:-1:-1;;;9630:18:1;;;9623:36;9676:19;;39029:71:0;9299:402:1;39029:71:0;39113:21;39161:15;38144:14;;;38071:95;39161:15;39137:39;;:21;:39;:::i;:::-;39113:63;;39187:15;39205:58;39221:7;39230:13;39245:17;39254:7;-1:-1:-1;;;;;38544:18:0;38517:7;38544:18;;;:9;:18;;;;;;;38461:109;39245:17;39205:15;:58::i;:::-;39187:76;-1:-1:-1;39284:12:0;39276:68;;;;-1:-1:-1;;;39276:68:0;;10173:2:1;39276:68:0;;;10155:21:1;10212:2;10192:18;;;10185:30;10251:34;10231:18;;;10224:62;-1:-1:-1;;;10302:18:1;;;10295:41;10353:19;;39276:68:0;9971:407:1;39276:68:0;-1:-1:-1;;;;;39357:18:0;;;;;;:9;:18;;;;;:29;;39379:7;;39357:18;:29;;39379:7;;39357:29;:::i;:::-;;;;;;;;39415:7;39397:14;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;39435:35:0;;-1:-1:-1;39453:7:0;39462;39435:17;:35::i;:::-;39486:33;;;-1:-1:-1;;;;;206:32:1;;188:51;;270:2;255:18;;248:34;;;39486:33:0;;161:18:1;39486:33:0;;;;;;;39018:509;;38961:566;:::o;23925:339::-;24120:41;1168:10;24153:7;24120:18;:41::i;:::-;24112:103;;;;-1:-1:-1;;;24112:103:0;;;;;;;:::i;:::-;24228:28;24238:4;24244:2;24248:7;24228:9;:28::i;24335:185::-;24473:39;24490:4;24496:2;24500:7;24473:39;;;;;;;;;;;;:16;:39::i;45249:122::-;33637:7;33664:6;-1:-1:-1;;;;;33664:6:0;1168:10;33811:23;33803:68;;;;-1:-1:-1;;;33803:68:0;;;;;;;:::i;:::-;45331:14:::1;:32:::0;45249:122::o;44668:90::-;33637:7;33664:6;-1:-1:-1;;;;;33664:6:0;1168:10;33811:23;33803:68;;;;-1:-1:-1;;;33803:68:0;;;;;;;:::i;:::-;44737:13:::1;:7;44747:3:::0;;44737:13:::1;:::i;21170:239::-:0;21242:7;21278:16;;;:7;:16;;;;;;-1:-1:-1;;;;;21278:16:0;21313:19;21305:73;;;;-1:-1:-1;;;21305:73:0;;11290:2:1;21305:73:0;;;11272:21:1;11329:2;11309:18;;;11302:30;11368:34;11348:18;;;11341:62;-1:-1:-1;;;11419:18:1;;;11412:39;11468:19;;21305:73:0;11088:405:1;43215:21:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20900:208::-;20972:7;-1:-1:-1;;;;;21000:19:0;;20992:74;;;;-1:-1:-1;;;20992:74:0;;11700:2:1;20992:74:0;;;11682:21:1;11739:2;11719:18;;;11712:30;11778:34;11758:18;;;11751:62;-1:-1:-1;;;11829:18:1;;;11822:40;11879:19;;20992:74:0;11498:406:1;20992:74:0;-1:-1:-1;;;;;;21084:16:0;;;;;:9;:16;;;;;;;20900:208::o;34242:94::-;33637:7;33664:6;-1:-1:-1;;;;;33664:6:0;1168:10;33811:23;33803:68;;;;-1:-1:-1;;;33803:68:0;;;;;;;:::i;:::-;34307:21:::1;34325:1;34307:9;:21::i;:::-;34242:94::o:0;43594:74::-;33637:7;33664:6;-1:-1:-1;;;;;33664:6:0;1168:10;33811:23;33803:68;;;;-1:-1:-1;;;33803:68:0;;;;;;;:::i;:::-;43654:6:::1;::::0;;-1:-1:-1;;43644:16:0;::::1;43654:6;::::0;;::::1;43653:7;43644:16;::::0;;43594:74::o;43767:114::-;33637:7;33664:6;-1:-1:-1;;;;;33664:6:0;1168:10;33811:23;33803:68;;;;-1:-1:-1;;;33803:68:0;;;;;;;:::i;:::-;43835:10:::1;43827:5;:18:::0;43856:9:::1;:17:::0;;-1:-1:-1;;43856:17:0::1;::::0;;43767:114::o;38661:100::-;38712:7;38739;38747:5;38739:14;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;38739:14:0;;38661:100;-1:-1:-1;;38661:100:0:o;21645:104::-;21701:13;21734:7;21727:14;;;;;:::i;23328:295::-;-1:-1:-1;;;;;23431:24:0;;1168:10;23431:24;;23423:62;;;;-1:-1:-1;;;23423:62:0;;12243:2:1;23423:62:0;;;12225:21:1;12282:2;12262:18;;;12255:30;12321:27;12301:18;;;12294:55;12366:18;;23423:62:0;12041:349:1;23423:62:0;1168:10;23498:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;23498:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;23498:53:0;;;;;;;;;;23567:48;;819:41:1;;;23498:42:0;;1168:10;23567:48;;792:18:1;23567:48:0;;;;;;;23328:295;;:::o;24591:328::-;24766:41;1168:10;24799:7;24766:18;:41::i;:::-;24758:103;;;;-1:-1:-1;;;24758:103:0;;;;;;;:::i;:::-;24872:39;24886:4;24892:2;24896:7;24905:5;24872:13;:39::i;:::-;24591:328;;;;:::o;43889:771::-;43978:6;;;;43970:35;;;;-1:-1:-1;;;43970:35:0;;12597:2:1;43970:35:0;;;12579:21:1;12636:2;12616:18;;;12609:30;-1:-1:-1;;;12655:18:1;;;12648:46;12711:18;;43970:35:0;12395:340:1;43970:35:0;43085:4;44038:3;44024:11;;:17;;;;:::i;:::-;:31;;44016:65;;;;-1:-1:-1;;;44016:65:0;;12942:2:1;44016:65:0;;;12924:21:1;12981:2;12961:18;;;12954:30;-1:-1:-1;;;13000:18:1;;;12993:51;13061:18;;44016:65:0;12740:345:1;44016:65:0;44121:3;44113:5;;:11;;;;:::i;:::-;44100:9;:24;;44092:57;;;;-1:-1:-1;;;44092:57:0;;13465:2:1;44092:57:0;;;13447:21:1;13504:2;13484:18;;;13477:30;-1:-1:-1;;;13523:18:1;;;13516:50;13583:18;;44092:57:0;13263:344:1;44092:57:0;44165:9;;;;;;;44162:351;;;45471:25;;;44213:10;19536:2:1;19532:15;-1:-1:-1;;19528:53:1;45471:25:0;;;;19516:66:1;;;;45471:25:0;;;;;;;;;19598:12:1;;;;45471:25:0;;;45461:36;;;;;44199:33;;44226:5;;44199:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;44199:7:0;;-1:-1:-1;;;44199:33:0:i;:::-;44191:80;;;;-1:-1:-1;;;44191:80:0;;13814:2:1;44191:80:0;;;13796:21:1;13853:2;13833:18;;;13826:30;13892:34;13872:18;;;13865:62;-1:-1:-1;;;13943:18:1;;;13936:32;13985:19;;44191:80:0;13612:398:1;44191:80:0;44323:13;;44302:10;44294:19;;;;:7;:19;;;;;;:25;;44316:3;;44294:25;:::i;:::-;:42;;44286:74;;;;-1:-1:-1;;;44286:74:0;;14217:2:1;44286:74:0;;;14199:21:1;14256:2;14236:18;;;14229:30;-1:-1:-1;;;14275:18:1;;;14268:49;14334:18;;44286:74:0;14015:343:1;44286:74:0;44383:10;44375:19;;;;:7;:19;;;;;:26;;44398:3;;44375:19;:26;;44398:3;;44375:26;:::i;:::-;;;;-1:-1:-1;44162:351:0;;-1:-1:-1;44162:351:0;;44449:12;;44442:3;:19;;44434:67;;;;-1:-1:-1;;;44434:67:0;;14565:2:1;44434:67:0;;;14547:21:1;14604:2;14584:18;;;14577:30;14643:34;14623:18;;;14616:62;-1:-1:-1;;;14694:18:1;;;14687:33;14737:19;;44434:67:0;14363:399:1;44434:67:0;44532:9;44527:95;44551:3;44547:1;:7;44527:95;;;44576:34;44582:10;44608:1;44594:11;;:15;;;;:::i;:::-;44576:5;:34::i;:::-;44556:3;;;;:::i;:::-;;;;44527:95;;;;44649:3;44634:11;;:18;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;43889:771:0:o;44882:359::-;26494:4;26518:16;;;:7;:16;;;;;;44964:13;;-1:-1:-1;;;;;26518:16:0;44990:63;;;;-1:-1:-1;;;44990:63:0;;15109:2:1;44990:63:0;;;15091:21:1;15148:2;15128:18;;;15121:30;15187:34;15167:18;;;15160:62;-1:-1:-1;;;15238:18:1;;;15231:31;15279:19;;44990:63:0;14907:397:1;44990:63:0;45064:28;45095:10;:8;:10::i;:::-;45064:41;;45154:1;45129:14;45123:28;:32;:110;;;;;;;;;;;;;;;;;45182:14;45198:19;:8;:17;:19::i;:::-;45165:62;;;;;;;;;:::i;:::-;;;;;;;;;;;;;45123:110;45116:117;44882:359;-1:-1:-1;;;44882:359:0:o;34491:192::-;33637:7;33664:6;-1:-1:-1;;;;;33664:6:0;1168:10;33811:23;33803:68;;;;-1:-1:-1;;;33803:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34580:22:0;::::1;34572:73;;;::::0;-1:-1:-1;;;34572:73:0;;16153:2:1;34572:73:0::1;::::0;::::1;16135:21:1::0;16192:2;16172:18;;;16165:30;16231:34;16211:18;;;16204:62;-1:-1:-1;;;16282:18:1;;;16275:36;16328:19;;34572:73:0::1;15951:402:1::0;34572:73:0::1;34656:19;34666:8;34656:9;:19::i;:::-;34491:192:::0;:::o;30411:174::-;30486:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;30486:29:0;-1:-1:-1;;;;;30486:29:0;;;;;;;;:24;;30540:23;30486:24;30540:14;:23::i;:::-;-1:-1:-1;;;;;30531:46:0;;;;;;;;;;;30411:174;;:::o;39705:248::-;39915:12;;-1:-1:-1;;;;;39895:16:0;;39851:7;39895:16;;;:7;:16;;;;;;39851:7;;39930:15;;39879:32;;:13;:32;:::i;:::-;39878:49;;;;:::i;:::-;:67;;;;:::i;:::-;39871:74;39705:248;-1:-1:-1;;;;39705:248:0:o;3332:317::-;3447:6;3422:21;:31;;3414:73;;;;-1:-1:-1;;;3414:73:0;;16947:2:1;3414:73:0;;;16929:21:1;16986:2;16966:18;;;16959:30;17025:31;17005:18;;;16998:59;17074:18;;3414:73:0;16745:353:1;3414:73:0;3501:12;3519:9;-1:-1:-1;;;;;3519:14:0;3541:6;3519:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3500:52;;;3571:7;3563:78;;;;-1:-1:-1;;;3563:78:0;;17515:2:1;3563:78:0;;;17497:21:1;17554:2;17534:18;;;17527:30;17593:34;17573:18;;;17566:62;17664:28;17644:18;;;17637:56;17710:19;;3563:78:0;17313:422:1;26723:348:0;26816:4;26518:16;;;:7;:16;;;;;;-1:-1:-1;;;;;26518:16:0;26833:73;;;;-1:-1:-1;;;26833:73:0;;17942:2:1;26833:73:0;;;17924:21:1;17981:2;17961:18;;;17954:30;18020:34;18000:18;;;17993:62;-1:-1:-1;;;18071:18:1;;;18064:42;18123:19;;26833:73:0;17740:408:1;26833:73:0;26917:13;26933:23;26948:7;26933:14;:23::i;:::-;26917:39;;26986:5;-1:-1:-1;;;;;26975:16:0;:7;-1:-1:-1;;;;;26975:16:0;;:51;;;;27019:7;-1:-1:-1;;;;;26995:31:0;:20;27007:7;26995:11;:20::i;:::-;-1:-1:-1;;;;;26995:31:0;;26975:51;:87;;;-1:-1:-1;;;;;;23815:25:0;;;23791:4;23815:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;27030:32;23694:164;29715:578;29874:4;-1:-1:-1;;;;;29847:31:0;:23;29862:7;29847:14;:23::i;:::-;-1:-1:-1;;;;;29847:31:0;;29839:85;;;;-1:-1:-1;;;29839:85:0;;18355:2:1;29839:85:0;;;18337:21:1;18394:2;18374:18;;;18367:30;18433:34;18413:18;;;18406:62;-1:-1:-1;;;18484:18:1;;;18477:39;18533:19;;29839:85:0;18153:405:1;29839:85:0;-1:-1:-1;;;;;29943:16:0;;29935:65;;;;-1:-1:-1;;;29935:65:0;;18765:2:1;29935:65:0;;;18747:21:1;18804:2;18784:18;;;18777:30;18843:34;18823:18;;;18816:62;-1:-1:-1;;;18894:18:1;;;18887:34;18938:19;;29935:65:0;18563:400:1;29935:65:0;30117:29;30134:1;30138:7;30117:8;:29::i;:::-;-1:-1:-1;;;;;30159:15:0;;;;;;:9;:15;;;;;:20;;30178:1;;30159:15;:20;;30178:1;;30159:20;:::i;:::-;;;;-1:-1:-1;;;;;;;30190:13:0;;;;;;:9;:13;;;;;:18;;30207:1;;30190:13;:18;;30207:1;;30190:18;:::i;:::-;;;;-1:-1:-1;;30219:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;30219:21:0;-1:-1:-1;;;;;30219:21:0;;;;;;;;;30258:27;;30219:16;;30258:27;;;;;;;29715:578;;;:::o;34691:173::-;34747:16;34766:6;;-1:-1:-1;;;;;34783:17:0;;;-1:-1:-1;;;;;;34783:17:0;;;;;;34816:40;;34766:6;;;;;;;34816:40;;34747:16;34816:40;34736:128;34691:173;:::o;25801:315::-;25958:28;25968:4;25974:2;25978:7;25958:9;:28::i;:::-;26005:48;26028:4;26034:2;26038:7;26047:5;26005:22;:48::i;:::-;25997:111;;;;-1:-1:-1;;;25997:111:0;;;;;;;:::i;45513:167::-;45596:4;45620:52;45639:5;45646:14;;45662:9;45620:18;:52::i;28407:382::-;-1:-1:-1;;;;;28487:16:0;;28479:61;;;;-1:-1:-1;;;28479:61:0;;19823:2:1;28479:61:0;;;19805:21:1;;;19842:18;;;19835:30;19901:34;19881:18;;;19874:62;19953:18;;28479:61:0;19621:356:1;28479:61:0;26494:4;26518:16;;;:7;:16;;;;;;-1:-1:-1;;;;;26518:16:0;:30;28551:58;;;;-1:-1:-1;;;28551:58:0;;20184:2:1;28551:58:0;;;20166:21:1;20223:2;20203:18;;;20196:30;20262;20242:18;;;20235:58;20310:18;;28551:58:0;19982:352:1;28551:58:0;-1:-1:-1;;;;;28680:13:0;;;;;;:9;:13;;;;;:18;;28697:1;;28680:13;:18;;28697:1;;28680:18;:::i;:::-;;;;-1:-1:-1;;28709:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;28709:21:0;-1:-1:-1;;;;;28709:21:0;;;;;;;;28748:33;;28709:16;;;28748:33;;28709:16;;28748:33;28407:382;;:::o;44766:108::-;44826:13;44859:7;44852:14;;;;;:::i;17530:723::-;17586:13;17807:10;17803:53;;-1:-1:-1;;17834:10:0;;;;;;;;;;;;-1:-1:-1;;;17834:10:0;;;;;17530:723::o;17803:53::-;17881:5;17866:12;17922:78;17929:9;;17922:78;;17955:8;;;;:::i;:::-;;-1:-1:-1;17978:10:0;;-1:-1:-1;17986:2:0;17978:10;;:::i;:::-;;;17922:78;;;18010:19;18042:6;18032:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18032:17:0;;18010:39;;18060:154;18067:10;;18060:154;;18094:11;18104:1;18094:11;;:::i;:::-;;-1:-1:-1;18163:10:0;18171:2;18163:5;:10;:::i;:::-;18150:24;;:2;:24;:::i;:::-;18137:39;;18120:6;18127;18120:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;18120:56:0;;;;;;;;-1:-1:-1;18191:11:0;18200:2;18191:11;;:::i;:::-;;;18060:154;;31150:799;31305:4;-1:-1:-1;;;;;31326:13:0;;2333:20;2381:8;31322:620;;31362:72;;-1:-1:-1;;;31362:72:0;;-1:-1:-1;;;;;31362:36:0;;;;;:72;;1168:10;;31413:4;;31419:7;;31428:5;;31362:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31362:72:0;;;;;;;;-1:-1:-1;;31362:72:0;;;;;;;;;;;;:::i;:::-;;;31358:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31604:13:0;;31600:272;;31647:60;;-1:-1:-1;;;31647:60:0;;;;;;;:::i;31600:272::-;31822:6;31816:13;31807:6;31803:2;31799:15;31792:38;31358:529;-1:-1:-1;;;;;;31485:51:0;-1:-1:-1;;;31485:51:0;;-1:-1:-1;31478:58:0;;31322:620;-1:-1:-1;31926:4:0;31150:799;;;;;;:::o;41387:190::-;41512:4;41565;41536:25;41549:5;41556:4;41536:12;:25::i;:::-;:33;;41387:190;-1:-1:-1;;;;41387:190:0:o;41939:675::-;42022:7;42065:4;42022:7;42080:497;42104:5;:12;42100:1;:16;42080:497;;;42138:20;42161:5;42167:1;42161:8;;;;;;;;:::i;:::-;;;;;;;42138:31;;42204:12;42188;:28;42184:382;;42690:13;42740:15;;;42776:4;42769:15;;;42823:4;42807:21;;42316:57;;42184:382;;;42690:13;42740:15;;;42776:4;42769:15;;;42823:4;42807:21;;42493:57;;42184:382;-1:-1:-1;42118:3:0;;;;:::i;:::-;;;;42080:497;;;-1:-1:-1;42594:12:0;41939:675;-1:-1:-1;;;41939:675:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;293:131:1;-1:-1:-1;;;;;;367:32:1;;357:43;;347:71;;414:1;411;404:12;429:245;487:6;540:2;528:9;519:7;515:23;511:32;508:52;;;556:1;553;546:12;508:52;595:9;582:23;614:30;638:5;614:30;:::i;871:258::-;943:1;953:113;967:6;964:1;961:13;953:113;;;1043:11;;;1037:18;1024:11;;;1017:39;989:2;982:10;953:113;;;1084:6;1081:1;1078:13;1075:48;;;-1:-1:-1;;1119:1:1;1101:16;;1094:27;871:258::o;1134:::-;1176:3;1214:5;1208:12;1241:6;1236:3;1229:19;1257:63;1313:6;1306:4;1301:3;1297:14;1290:4;1283:5;1279:16;1257:63;:::i;:::-;1374:2;1353:15;-1:-1:-1;;1349:29:1;1340:39;;;;1381:4;1336:50;;1134:258;-1:-1:-1;;1134:258:1:o;1397:220::-;1546:2;1535:9;1528:21;1509:4;1566:45;1607:2;1596:9;1592:18;1584:6;1566:45;:::i;1622:180::-;1681:6;1734:2;1722:9;1713:7;1709:23;1705:32;1702:52;;;1750:1;1747;1740:12;1702:52;-1:-1:-1;1773:23:1;;1622:180;-1:-1:-1;1622:180:1:o;2015:131::-;-1:-1:-1;;;;;2090:31:1;;2080:42;;2070:70;;2136:1;2133;2126:12;2151:315;2219:6;2227;2280:2;2268:9;2259:7;2255:23;2251:32;2248:52;;;2296:1;2293;2286:12;2248:52;2335:9;2322:23;2354:31;2379:5;2354:31;:::i;:::-;2404:5;2456:2;2441:18;;;;2428:32;;-1:-1:-1;;;2151:315:1:o;2653:255::-;2720:6;2773:2;2761:9;2752:7;2748:23;2744:32;2741:52;;;2789:1;2786;2779:12;2741:52;2828:9;2815:23;2847:31;2872:5;2847:31;:::i;2913:456::-;2990:6;2998;3006;3059:2;3047:9;3038:7;3034:23;3030:32;3027:52;;;3075:1;3072;3065:12;3027:52;3114:9;3101:23;3133:31;3158:5;3133:31;:::i;:::-;3183:5;-1:-1:-1;3240:2:1;3225:18;;3212:32;3253:33;3212:32;3253:33;:::i;:::-;2913:456;;3305:7;;-1:-1:-1;;;3359:2:1;3344:18;;;;3331:32;;2913:456::o;3559:592::-;3630:6;3638;3691:2;3679:9;3670:7;3666:23;3662:32;3659:52;;;3707:1;3704;3697:12;3659:52;3747:9;3734:23;3776:18;3817:2;3809:6;3806:14;3803:34;;;3833:1;3830;3823:12;3803:34;3871:6;3860:9;3856:22;3846:32;;3916:7;3909:4;3905:2;3901:13;3897:27;3887:55;;3938:1;3935;3928:12;3887:55;3978:2;3965:16;4004:2;3996:6;3993:14;3990:34;;;4020:1;4017;4010:12;3990:34;4065:7;4060:2;4051:6;4047:2;4043:15;4039:24;4036:37;4033:57;;;4086:1;4083;4076:12;4033:57;4117:2;4109:11;;;;;4139:6;;-1:-1:-1;3559:592:1;;-1:-1:-1;;;;3559:592:1:o;4408:416::-;4473:6;4481;4534:2;4522:9;4513:7;4509:23;4505:32;4502:52;;;4550:1;4547;4540:12;4502:52;4589:9;4576:23;4608:31;4633:5;4608:31;:::i;:::-;4658:5;-1:-1:-1;4715:2:1;4700:18;;4687:32;4757:15;;4750:23;4738:36;;4728:64;;4788:1;4785;4778:12;4728:64;4811:7;4801:17;;;4408:416;;;;;:::o;4829:127::-;4890:10;4885:3;4881:20;4878:1;4871:31;4921:4;4918:1;4911:15;4945:4;4942:1;4935:15;4961:1266;5056:6;5064;5072;5080;5133:3;5121:9;5112:7;5108:23;5104:33;5101:53;;;5150:1;5147;5140:12;5101:53;5189:9;5176:23;5208:31;5233:5;5208:31;:::i;:::-;5258:5;-1:-1:-1;5315:2:1;5300:18;;5287:32;5328:33;5287:32;5328:33;:::i;:::-;5380:7;-1:-1:-1;5434:2:1;5419:18;;5406:32;;-1:-1:-1;5489:2:1;5474:18;;5461:32;5512:18;5542:14;;;5539:34;;;5569:1;5566;5559:12;5539:34;5607:6;5596:9;5592:22;5582:32;;5652:7;5645:4;5641:2;5637:13;5633:27;5623:55;;5674:1;5671;5664:12;5623:55;5710:2;5697:16;5732:2;5728;5725:10;5722:36;;;5738:18;;:::i;:::-;5813:2;5807:9;5781:2;5867:13;;-1:-1:-1;;5863:22:1;;;5887:2;5859:31;5855:40;5843:53;;;5911:18;;;5931:22;;;5908:46;5905:72;;;5957:18;;:::i;:::-;5997:10;5993:2;5986:22;6032:2;6024:6;6017:18;6072:7;6067:2;6062;6058;6054:11;6050:20;6047:33;6044:53;;;6093:1;6090;6083:12;6044:53;6149:2;6144;6140;6136:11;6131:2;6123:6;6119:15;6106:46;6194:1;6189:2;6184;6176:6;6172:15;6168:24;6161:35;6215:6;6205:16;;;;;;;4961:1266;;;;;;;:::o;6232:683::-;6327:6;6335;6343;6396:2;6384:9;6375:7;6371:23;6367:32;6364:52;;;6412:1;6409;6402:12;6364:52;6448:9;6435:23;6425:33;;6509:2;6498:9;6494:18;6481:32;6532:18;6573:2;6565:6;6562:14;6559:34;;;6589:1;6586;6579:12;6559:34;6627:6;6616:9;6612:22;6602:32;;6672:7;6665:4;6661:2;6657:13;6653:27;6643:55;;6694:1;6691;6684:12;6643:55;6734:2;6721:16;6760:2;6752:6;6749:14;6746:34;;;6776:1;6773;6766:12;6746:34;6829:7;6824:2;6814:6;6811:1;6807:14;6803:2;6799:23;6795:32;6792:45;6789:65;;;6850:1;6847;6840:12;6789:65;6881:2;6877;6873:11;6863:21;;6903:6;6893:16;;;;;6232:683;;;;;:::o;6920:388::-;6988:6;6996;7049:2;7037:9;7028:7;7024:23;7020:32;7017:52;;;7065:1;7062;7055:12;7017:52;7104:9;7091:23;7123:31;7148:5;7123:31;:::i;:::-;7173:5;-1:-1:-1;7230:2:1;7215:18;;7202:32;7243:33;7202:32;7243:33;:::i;7313:356::-;7515:2;7497:21;;;7534:18;;;7527:30;7593:34;7588:2;7573:18;;7566:62;7660:2;7645:18;;7313:356::o;7674:380::-;7753:1;7749:12;;;;7796;;;7817:61;;7871:4;7863:6;7859:17;7849:27;;7817:61;7924:2;7916:6;7913:14;7893:18;7890:38;7887:161;;;7970:10;7965:3;7961:20;7958:1;7951:31;8005:4;8002:1;7995:15;8033:4;8030:1;8023:15;7887:161;;7674:380;;;:::o;9706:127::-;9767:10;9762:3;9758:20;9755:1;9748:31;9798:4;9795:1;9788:15;9822:4;9819:1;9812:15;9838:128;9878:3;9909:1;9905:6;9902:1;9899:13;9896:39;;;9915:18;;:::i;:::-;-1:-1:-1;9951:9:1;;9838:128::o;10670:413::-;10872:2;10854:21;;;10911:2;10891:18;;;10884:30;10950:34;10945:2;10930:18;;10923:62;-1:-1:-1;;;11016:2:1;11001:18;;10994:47;11073:3;11058:19;;10670:413::o;11909:127::-;11970:10;11965:3;11961:20;11958:1;11951:31;12001:4;11998:1;11991:15;12025:4;12022:1;12015:15;13090:168;13130:7;13196:1;13192;13188:6;13184:14;13181:1;13178:21;13173:1;13166:9;13159:17;13155:45;13152:71;;;13203:18;;:::i;:::-;-1:-1:-1;13243:9:1;;13090:168::o;14767:135::-;14806:3;-1:-1:-1;;14827:17:1;;14824:43;;;14847:18;;:::i;:::-;-1:-1:-1;14894:1:1;14883:13;;14767:135::o;15309:637::-;15589:3;15627:6;15621:13;15643:53;15689:6;15684:3;15677:4;15669:6;15665:17;15643:53;:::i;:::-;15759:13;;15718:16;;;;15781:57;15759:13;15718:16;15815:4;15803:17;;15781:57;:::i;:::-;-1:-1:-1;;;15860:20:1;;15889:22;;;15938:1;15927:13;;15309:637;-1:-1:-1;;;;15309:637:1:o;16358:127::-;16419:10;16414:3;16410:20;16407:1;16400:31;16450:4;16447:1;16440:15;16474:4;16471:1;16464:15;16490:120;16530:1;16556;16546:35;;16561:18;;:::i;:::-;-1:-1:-1;16595:9:1;;16490:120::o;16615:125::-;16655:4;16683:1;16680;16677:8;16674:34;;;16688:18;;:::i;:::-;-1:-1:-1;16725:9:1;;16615:125::o;18968:414::-;19170:2;19152:21;;;19209:2;19189:18;;;19182:30;19248:34;19243:2;19228:18;;19221:62;-1:-1:-1;;;19314:2:1;19299:18;;19292:48;19372:3;19357:19;;18968:414::o;20339:112::-;20371:1;20397;20387:35;;20402:18;;:::i;:::-;-1:-1:-1;20436:9:1;;20339:112::o;20456:489::-;-1:-1:-1;;;;;20725:15:1;;;20707:34;;20777:15;;20772:2;20757:18;;20750:43;20824:2;20809:18;;20802:34;;;20872:3;20867:2;20852:18;;20845:31;;;20650:4;;20893:46;;20919:19;;20911:6;20893:46;:::i;:::-;20885:54;20456:489;-1:-1:-1;;;;;;20456:489:1:o;20950:249::-;21019:6;21072:2;21060:9;21051:7;21047:23;21043:32;21040:52;;;21088:1;21085;21078:12;21040:52;21120:9;21114:16;21139:30;21163:5;21139:30;:::i
Swarm Source
ipfs://74218018f71f9ef5befceb7c5bc87488bc56897592ed4d19eac98d08977991ce
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.