diff --git a/src/assets/contracts/MeetdAppEvent.json b/src/assets/deployments/mumbai/MeetdAppEvent.json similarity index 100% rename from src/assets/contracts/MeetdAppEvent.json rename to src/assets/deployments/mumbai/MeetdAppEvent.json diff --git a/src/assets/deployments/mumbai/MeetdAppFactory.json b/src/assets/deployments/mumbai/MeetdAppFactory.json new file mode 100644 index 0000000..0577aeb --- /dev/null +++ b/src/assets/deployments/mumbai/MeetdAppFactory.json @@ -0,0 +1,259 @@ +{ + "address": "0x2882D99866CAa05368d2376685eb912697F3b721", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "eventId", + "type": "string" + } + ], + "name": "createdEvent", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "string[]", + "name": "_varStr", + "type": "string[]" + }, + { + "internalType": "uint256[]", + "name": "_varInt", + "type": "uint256[]" + } + ], + "name": "CreateEvent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapEventNum", + "outputs": [ + { + "internalType": "bool", + "name": "active", + "type": "bool" + }, + { + "internalType": "string", + "name": "eventId", + "type": "string" + }, + { + "internalType": "contract MeetdAppEvent", + "name": "eventAddr", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "mapIdEvent", + "outputs": [ + { + "internalType": "contract MeetdAppEvent", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "numEvents", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "transactionHash": "0xf0220a4cdb3bf1b1ac55c96b02c21451d0ba81aed3044d22462c7a3dba57608d", + "receipt": { + "to": null, + "from": "0xd7A4467a26d26d00cB6044CE09eBD69EDAC0564C", + "contractAddress": "0xB243C8019c93f294c9f93330BF6eCC4F2218c49C", + "transactionIndex": 33, + "gasUsed": "4149888", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000008000000000000000800000000000000000000000000000000000000000800000000000000000000100000000000000000000000000000000000000000000000000000000000080000000000000000000000000200000000000000000000000000000000000000000000000000000200000000000800000000000000000000000000000000000000000000000004000000000000000000001800000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000100002", + "blockHash": "0xbe806e68bb226a45f959fadac2c4127b3d9d914802f22a4e0df6e0c433b7cad1", + "transactionHash": "0xf0220a4cdb3bf1b1ac55c96b02c21451d0ba81aed3044d22462c7a3dba57608d", + "logs": [ + { + "transactionIndex": 33, + "blockNumber": 47985608, + "transactionHash": "0xf0220a4cdb3bf1b1ac55c96b02c21451d0ba81aed3044d22462c7a3dba57608d", + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000d7a4467a26d26d00cb6044ce09ebd69edac0564c", + "0x00000000000000000000000046a3a41bd932244dd08186e4c19f1a7e48cbcdf4" + ], + "data": "0x000000000000000000000000000000000000000000000000002306b9780f7e800000000000000000000000000000000000000000000000001b4f90857744b6420000000000000000000000000000000000000000000046188e9db3cdb92a57e70000000000000000000000000000000000000000000000001b2c89cbff3537c20000000000000000000000000000000000000000000046188ec0ba873139d667", + "logIndex": 2111, + "blockHash": "0xbe806e68bb226a45f959fadac2c4127b3d9d914802f22a4e0df6e0c433b7cad1" + } + ], + "blockNumber": 47985608, + "cumulativeGasUsed": "14920703", + "status": 1, + "byzantium": true + }, + "args": [], + "numDeployments": 1, + "solcInputHash": "d8f3fc6fde02397356c6cbe018ff4757", + "metadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"eventId\",\"type\":\"string\"}],\"name\":\"createdEvent\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"_varStr\",\"type\":\"string[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_varInt\",\"type\":\"uint256[]\"}],\"name\":\"CreateEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"mapEventNum\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"active\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"eventId\",\"type\":\"string\"},{\"internalType\":\"contract MeetdAppEvent\",\"name\":\"eventAddr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"mapIdEvent\",\"outputs\":[{\"internalType\":\"contract MeetdAppEvent\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numEvents\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"LE0xUL\",\"details\":\"This contract is the standard way to create a new event\",\"kind\":\"dev\",\"methods\":{},\"title\":\"MeetdApp Factory\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"mapEventNum(uint256)\":{\"notice\":\"Mapping to store all the created houses numEvent -> dataEvent\"},\"mapIdEvent(bytes32)\":{\"notice\":\"Relation between eventId (hash nanoId) and eventAddr\"},\"numEvents()\":{\"notice\":\"Store the number of created events\"}},\"notice\":\"Create and config New Events\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/factory/MeetdAppFactory.sol\":\"MeetdAppFactory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../utils/Context.sol\\\";\\n\\n/**\\n * @dev Contract module which provides a basic access control mechanism, where\\n * there is an account (an owner) that can be granted exclusive access to\\n * specific functions.\\n *\\n * By default, the owner account will be the one that deploys the contract. This\\n * can later be changed with {transferOwnership}.\\n *\\n * This module is used through inheritance. It will make available the modifier\\n * `onlyOwner`, which can be applied to your functions to restrict their use to\\n * the owner.\\n */\\nabstract contract Ownable is Context {\\n address private _owner;\\n\\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\\n\\n /**\\n * @dev Initializes the contract setting the deployer as the initial owner.\\n */\\n constructor() {\\n _transferOwnership(_msgSender());\\n }\\n\\n /**\\n * @dev Throws if called by any account other than the owner.\\n */\\n modifier onlyOwner() {\\n _checkOwner();\\n _;\\n }\\n\\n /**\\n * @dev Returns the address of the current owner.\\n */\\n function owner() public view virtual returns (address) {\\n return _owner;\\n }\\n\\n /**\\n * @dev Throws if the sender is not the owner.\\n */\\n function _checkOwner() internal view virtual {\\n require(owner() == _msgSender(), \\\"Ownable: caller is not the owner\\\");\\n }\\n\\n /**\\n * @dev Leaves the contract without owner. It will not be possible to call\\n * `onlyOwner` functions. Can only be called by the current owner.\\n *\\n * NOTE: Renouncing ownership will leave the contract without an owner,\\n * thereby disabling any functionality that is only available to the owner.\\n */\\n function renounceOwnership() public virtual onlyOwner {\\n _transferOwnership(address(0));\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Can only be called by the current owner.\\n */\\n function transferOwnership(address newOwner) public virtual onlyOwner {\\n require(newOwner != address(0), \\\"Ownable: new owner is the zero address\\\");\\n _transferOwnership(newOwner);\\n }\\n\\n /**\\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\\n * Internal function without access restriction.\\n */\\n function _transferOwnership(address newOwner) internal virtual {\\n address oldOwner = _owner;\\n _owner = newOwner;\\n emit OwnershipTransferred(oldOwner, newOwner);\\n }\\n}\\n\",\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/ERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC721.sol\\\";\\nimport \\\"./IERC721Receiver.sol\\\";\\nimport \\\"./extensions/IERC721Metadata.sol\\\";\\nimport \\\"../../utils/Address.sol\\\";\\nimport \\\"../../utils/Context.sol\\\";\\nimport \\\"../../utils/Strings.sol\\\";\\nimport \\\"../../utils/introspection/ERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\\n * {ERC721Enumerable}.\\n */\\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\\n using Address for address;\\n using Strings for uint256;\\n\\n // Token name\\n string private _name;\\n\\n // Token symbol\\n string private _symbol;\\n\\n // Mapping from token ID to owner address\\n mapping(uint256 => address) private _owners;\\n\\n // Mapping owner address to token count\\n mapping(address => uint256) private _balances;\\n\\n // Mapping from token ID to approved address\\n mapping(uint256 => address) private _tokenApprovals;\\n\\n // Mapping from owner to operator approvals\\n mapping(address => mapping(address => bool)) private _operatorApprovals;\\n\\n /**\\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\\n */\\n constructor(string memory name_, string memory symbol_) {\\n _name = name_;\\n _symbol = symbol_;\\n }\\n\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\\n return\\n interfaceId == type(IERC721).interfaceId ||\\n interfaceId == type(IERC721Metadata).interfaceId ||\\n super.supportsInterface(interfaceId);\\n }\\n\\n /**\\n * @dev See {IERC721-balanceOf}.\\n */\\n function balanceOf(address owner) public view virtual override returns (uint256) {\\n require(owner != address(0), \\\"ERC721: address zero is not a valid owner\\\");\\n return _balances[owner];\\n }\\n\\n /**\\n * @dev See {IERC721-ownerOf}.\\n */\\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\\n address owner = _ownerOf(tokenId);\\n require(owner != address(0), \\\"ERC721: invalid token ID\\\");\\n return owner;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-name}.\\n */\\n function name() public view virtual override returns (string memory) {\\n return _name;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-symbol}.\\n */\\n function symbol() public view virtual override returns (string memory) {\\n return _symbol;\\n }\\n\\n /**\\n * @dev See {IERC721Metadata-tokenURI}.\\n */\\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\\n _requireMinted(tokenId);\\n\\n string memory baseURI = _baseURI();\\n return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \\\"\\\";\\n }\\n\\n /**\\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\\n * by default, can be overridden in child contracts.\\n */\\n function _baseURI() internal view virtual returns (string memory) {\\n return \\\"\\\";\\n }\\n\\n /**\\n * @dev See {IERC721-approve}.\\n */\\n function approve(address to, uint256 tokenId) public virtual override {\\n address owner = ERC721.ownerOf(tokenId);\\n require(to != owner, \\\"ERC721: approval to current owner\\\");\\n\\n require(\\n _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\\n \\\"ERC721: approve caller is not token owner or approved for all\\\"\\n );\\n\\n _approve(to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-getApproved}.\\n */\\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\\n _requireMinted(tokenId);\\n\\n return _tokenApprovals[tokenId];\\n }\\n\\n /**\\n * @dev See {IERC721-setApprovalForAll}.\\n */\\n function setApprovalForAll(address operator, bool approved) public virtual override {\\n _setApprovalForAll(_msgSender(), operator, approved);\\n }\\n\\n /**\\n * @dev See {IERC721-isApprovedForAll}.\\n */\\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\\n return _operatorApprovals[owner][operator];\\n }\\n\\n /**\\n * @dev See {IERC721-transferFrom}.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) public virtual override {\\n //solhint-disable-next-line max-line-length\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n\\n _transfer(from, to, tokenId);\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {\\n safeTransferFrom(from, to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev See {IERC721-safeTransferFrom}.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual override {\\n require(_isApprovedOrOwner(_msgSender(), tokenId), \\\"ERC721: caller is not token owner or approved\\\");\\n _safeTransfer(from, to, tokenId, data);\\n }\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\\n *\\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\\n * implement alternative mechanisms to perform token transfer, such as signature-based.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual {\\n _transfer(from, to, tokenId);\\n require(_checkOnERC721Received(from, to, tokenId, data), \\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n }\\n\\n /**\\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\\n */\\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\\n return _owners[tokenId];\\n }\\n\\n /**\\n * @dev Returns whether `tokenId` exists.\\n *\\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\\n *\\n * Tokens start existing when they are minted (`_mint`),\\n * and stop existing when they are burned (`_burn`).\\n */\\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\\n return _ownerOf(tokenId) != address(0);\\n }\\n\\n /**\\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\\n address owner = ERC721.ownerOf(tokenId);\\n return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\\n }\\n\\n /**\\n * @dev Safely mints `tokenId` and transfers it to `to`.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _safeMint(address to, uint256 tokenId) internal virtual {\\n _safeMint(to, tokenId, \\\"\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\\n */\\n function _safeMint(address to, uint256 tokenId, bytes memory data) internal virtual {\\n _mint(to, tokenId);\\n require(\\n _checkOnERC721Received(address(0), to, tokenId, data),\\n \\\"ERC721: transfer to non ERC721Receiver implementer\\\"\\n );\\n }\\n\\n /**\\n * @dev Mints `tokenId` and transfers it to `to`.\\n *\\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\\n *\\n * Requirements:\\n *\\n * - `tokenId` must not exist.\\n * - `to` cannot be the zero address.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _mint(address to, uint256 tokenId) internal virtual {\\n require(to != address(0), \\\"ERC721: mint to the zero address\\\");\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n _beforeTokenTransfer(address(0), to, tokenId, 1);\\n\\n // Check that tokenId was not minted by `_beforeTokenTransfer` hook\\n require(!_exists(tokenId), \\\"ERC721: token already minted\\\");\\n\\n unchecked {\\n // Will not overflow unless all 2**256 token ids are minted to the same owner.\\n // Given that tokens are minted one by one, it is impossible in practice that\\n // this ever happens. Might change if we allow batch minting.\\n // The ERC fails to describe this case.\\n _balances[to] += 1;\\n }\\n\\n _owners[tokenId] = to;\\n\\n emit Transfer(address(0), to, tokenId);\\n\\n _afterTokenTransfer(address(0), to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Destroys `tokenId`.\\n * The approval is cleared when the token is burned.\\n * This is an internal function that does not check if the sender is authorized to operate on the token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _burn(uint256 tokenId) internal virtual {\\n address owner = ERC721.ownerOf(tokenId);\\n\\n _beforeTokenTransfer(owner, address(0), tokenId, 1);\\n\\n // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook\\n owner = ERC721.ownerOf(tokenId);\\n\\n // Clear approvals\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // Cannot overflow, as that would require more tokens to be burned/transferred\\n // out than the owner initially received through minting and transferring in.\\n _balances[owner] -= 1;\\n }\\n delete _owners[tokenId];\\n\\n emit Transfer(owner, address(0), tokenId);\\n\\n _afterTokenTransfer(owner, address(0), tokenId, 1);\\n }\\n\\n /**\\n * @dev Transfers `tokenId` from `from` to `to`.\\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\\n *\\n * Requirements:\\n *\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n *\\n * Emits a {Transfer} event.\\n */\\n function _transfer(address from, address to, uint256 tokenId) internal virtual {\\n require(ERC721.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n require(to != address(0), \\\"ERC721: transfer to the zero address\\\");\\n\\n _beforeTokenTransfer(from, to, tokenId, 1);\\n\\n // Check that tokenId was not transferred by `_beforeTokenTransfer` hook\\n require(ERC721.ownerOf(tokenId) == from, \\\"ERC721: transfer from incorrect owner\\\");\\n\\n // Clear approvals from the previous owner\\n delete _tokenApprovals[tokenId];\\n\\n unchecked {\\n // `_balances[from]` cannot overflow for the same reason as described in `_burn`:\\n // `from`'s balance is the number of token held, which is at least one before the current\\n // transfer.\\n // `_balances[to]` could overflow in the conditions described in `_mint`. That would require\\n // all 2**256 token ids to be minted, which in practice is impossible.\\n _balances[from] -= 1;\\n _balances[to] += 1;\\n }\\n _owners[tokenId] = to;\\n\\n emit Transfer(from, to, tokenId);\\n\\n _afterTokenTransfer(from, to, tokenId, 1);\\n }\\n\\n /**\\n * @dev Approve `to` to operate on `tokenId`\\n *\\n * Emits an {Approval} event.\\n */\\n function _approve(address to, uint256 tokenId) internal virtual {\\n _tokenApprovals[tokenId] = to;\\n emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\\n }\\n\\n /**\\n * @dev Approve `operator` to operate on all of `owner` tokens\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\\n require(owner != operator, \\\"ERC721: approve to caller\\\");\\n _operatorApprovals[owner][operator] = approved;\\n emit ApprovalForAll(owner, operator, approved);\\n }\\n\\n /**\\n * @dev Reverts if the `tokenId` has not been minted yet.\\n */\\n function _requireMinted(uint256 tokenId) internal view virtual {\\n require(_exists(tokenId), \\\"ERC721: invalid token ID\\\");\\n }\\n\\n /**\\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\\n * The call is not executed if the target address is not a contract.\\n *\\n * @param from address representing the previous owner of the given token ID\\n * @param to target address that will receive the tokens\\n * @param tokenId uint256 ID of the token to be transferred\\n * @param data bytes optional data to send along with the call\\n * @return bool whether the call correctly returned the expected magic value\\n */\\n function _checkOnERC721Received(\\n address from,\\n address to,\\n uint256 tokenId,\\n bytes memory data\\n ) private returns (bool) {\\n if (to.isContract()) {\\n try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\\n return retval == IERC721Receiver.onERC721Received.selector;\\n } catch (bytes memory reason) {\\n if (reason.length == 0) {\\n revert(\\\"ERC721: transfer to non ERC721Receiver implementer\\\");\\n } else {\\n /// @solidity memory-safe-assembly\\n assembly {\\n revert(add(32, reason), mload(reason))\\n }\\n }\\n }\\n } else {\\n return true;\\n }\\n }\\n\\n /**\\n * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\\n * - When `from` is zero, the tokens will be minted for `to`.\\n * - When `to` is zero, ``from``'s tokens will be burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _beforeTokenTransfer(address from, address to, uint256 firstTokenId, uint256 batchSize) internal virtual {}\\n\\n /**\\n * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\\n * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\\n *\\n * Calling conditions:\\n *\\n * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\\n * - When `from` is zero, the tokens were minted for `to`.\\n * - When `to` is zero, ``from``'s tokens were burned.\\n * - `from` and `to` are never both zero.\\n * - `batchSize` is non-zero.\\n *\\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\\n */\\n function _afterTokenTransfer(address from, address to, uint256 firstTokenId, uint256 batchSize) internal virtual {}\\n\\n /**\\n * @dev Unsafe write access to the balances, used by extensions that \\\"mint\\\" tokens using an {ownerOf} override.\\n *\\n * WARNING: Anyone calling this MUST ensure that the balances remain consistent with the ownership. The invariant\\n * being that for any address `a` the value returned by `balanceOf(a)` must be equal to the number of tokens such\\n * that `ownerOf(tokenId)` is `a`.\\n */\\n // solhint-disable-next-line func-name-mixedcase\\n function __unsafe_increaseBalance(address account, uint256 amount) internal {\\n _balances[account] += amount;\\n }\\n}\\n\",\"keccak256\":\"0x2c309e7df9e05e6ce15bedfe74f3c61b467fc37e0fae9eab496acf5ea0bbd7ff\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../../utils/introspection/IERC165.sol\\\";\\n\\n/**\\n * @dev Required interface of an ERC721 compliant contract.\\n */\\ninterface IERC721 is IERC165 {\\n /**\\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\\n */\\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\\n */\\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\\n\\n /**\\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\\n */\\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\\n\\n /**\\n * @dev Returns the number of tokens in ``owner``'s account.\\n */\\n function balanceOf(address owner) external view returns (uint256 balance);\\n\\n /**\\n * @dev Returns the owner of the `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function ownerOf(uint256 tokenId) external view returns (address owner);\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\\n\\n /**\\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must exist and be owned by `from`.\\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\\n *\\n * Emits a {Transfer} event.\\n */\\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Transfers `tokenId` token from `from` to `to`.\\n *\\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\\n *\\n * Requirements:\\n *\\n * - `from` cannot be the zero address.\\n * - `to` cannot be the zero address.\\n * - `tokenId` token must be owned by `from`.\\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\\n *\\n * Emits a {Transfer} event.\\n */\\n function transferFrom(address from, address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\\n * The approval is cleared when the token is transferred.\\n *\\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\\n *\\n * Requirements:\\n *\\n * - The caller must own the token or be an approved operator.\\n * - `tokenId` must exist.\\n *\\n * Emits an {Approval} event.\\n */\\n function approve(address to, uint256 tokenId) external;\\n\\n /**\\n * @dev Approve or remove `operator` as an operator for the caller.\\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\\n *\\n * Requirements:\\n *\\n * - The `operator` cannot be the caller.\\n *\\n * Emits an {ApprovalForAll} event.\\n */\\n function setApprovalForAll(address operator, bool approved) external;\\n\\n /**\\n * @dev Returns the account approved for `tokenId` token.\\n *\\n * Requirements:\\n *\\n * - `tokenId` must exist.\\n */\\n function getApproved(uint256 tokenId) external view returns (address operator);\\n\\n /**\\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\\n *\\n * See {setApprovalForAll}\\n */\\n function isApprovedForAll(address owner, address operator) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title ERC721 token receiver interface\\n * @dev Interface for any contract that wants to support safeTransfers\\n * from ERC721 asset contracts.\\n */\\ninterface IERC721Receiver {\\n /**\\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\\n * by `operator` from `from`, this function is called.\\n *\\n * It must return its Solidity selector to confirm the token transfer.\\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\\n *\\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\\n */\\n function onERC721Received(\\n address operator,\\n address from,\\n uint256 tokenId,\\n bytes calldata data\\n ) external returns (bytes4);\\n}\\n\",\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\"},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"../IERC721.sol\\\";\\n\\n/**\\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\\n * @dev See https://eips.ethereum.org/EIPS/eip-721\\n */\\ninterface IERC721Metadata is IERC721 {\\n /**\\n * @dev Returns the token collection name.\\n */\\n function name() external view returns (string memory);\\n\\n /**\\n * @dev Returns the token collection symbol.\\n */\\n function symbol() external view returns (string memory);\\n\\n /**\\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\\n */\\n function tokenURI(uint256 tokenId) external view returns (string memory);\\n}\\n\",\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Address.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\\n\\npragma solidity ^0.8.1;\\n\\n/**\\n * @dev Collection of functions related to the address type\\n */\\nlibrary Address {\\n /**\\n * @dev Returns true if `account` is a contract.\\n *\\n * [IMPORTANT]\\n * ====\\n * It is unsafe to assume that an address for which this function returns\\n * false is an externally-owned account (EOA) and not a contract.\\n *\\n * Among others, `isContract` will return false for the following\\n * types of addresses:\\n *\\n * - an externally-owned account\\n * - a contract in construction\\n * - an address where a contract will be created\\n * - an address where a contract lived, but was destroyed\\n *\\n * Furthermore, `isContract` will also return true if the target contract within\\n * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\\n * which only has an effect at the end of a transaction.\\n * ====\\n *\\n * [IMPORTANT]\\n * ====\\n * You shouldn't rely on `isContract` to protect against flash loan attacks!\\n *\\n * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\\n * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\\n * constructor.\\n * ====\\n */\\n function isContract(address account) internal view returns (bool) {\\n // This method relies on extcodesize/address.code.length, which returns 0\\n // for contracts in construction, since the code is only stored at the end\\n // of the constructor execution.\\n\\n return account.code.length > 0;\\n }\\n\\n /**\\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\\n * `recipient`, forwarding all available gas and reverting on errors.\\n *\\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\\n * imposed by `transfer`, making them unable to receive funds via\\n * `transfer`. {sendValue} removes this limitation.\\n *\\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\\n *\\n * IMPORTANT: because control is transferred to `recipient`, care must be\\n * taken to not create reentrancy vulnerabilities. Consider using\\n * {ReentrancyGuard} or the\\n * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\\n */\\n function sendValue(address payable recipient, uint256 amount) internal {\\n require(address(this).balance >= amount, \\\"Address: insufficient balance\\\");\\n\\n (bool success, ) = recipient.call{value: amount}(\\\"\\\");\\n require(success, \\\"Address: unable to send value, recipient may have reverted\\\");\\n }\\n\\n /**\\n * @dev Performs a Solidity function call using a low level `call`. A\\n * plain `call` is an unsafe replacement for a function call: use this\\n * function instead.\\n *\\n * If `target` reverts with a revert reason, it is bubbled up by this\\n * function (like regular Solidity function calls).\\n *\\n * Returns the raw returned data. To convert to the expected return value,\\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\\n *\\n * Requirements:\\n *\\n * - `target` must be a contract.\\n * - calling `target` with `data` must not revert.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, \\\"Address: low-level call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\\n * `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, 0, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but also transferring `value` wei to `target`.\\n *\\n * Requirements:\\n *\\n * - the calling contract must have an ETH balance of at least `value`.\\n * - the called Solidity function must be `payable`.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\\n return functionCallWithValue(target, data, value, \\\"Address: low-level call with value failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\\n * with `errorMessage` as a fallback revert reason when `target` reverts.\\n *\\n * _Available since v3.1._\\n */\\n function functionCallWithValue(\\n address target,\\n bytes memory data,\\n uint256 value,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n require(address(this).balance >= value, \\\"Address: insufficient balance for call\\\");\\n (bool success, bytes memory returndata) = target.call{value: value}(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\\n return functionStaticCall(target, data, \\\"Address: low-level static call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a static call.\\n *\\n * _Available since v3.3._\\n */\\n function functionStaticCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.staticcall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\\n return functionDelegateCall(target, data, \\\"Address: low-level delegate call failed\\\");\\n }\\n\\n /**\\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\\n * but performing a delegate call.\\n *\\n * _Available since v3.4._\\n */\\n function functionDelegateCall(\\n address target,\\n bytes memory data,\\n string memory errorMessage\\n ) internal returns (bytes memory) {\\n (bool success, bytes memory returndata) = target.delegatecall(data);\\n return verifyCallResultFromTarget(target, success, returndata, errorMessage);\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\\n * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\\n *\\n * _Available since v4.8._\\n */\\n function verifyCallResultFromTarget(\\n address target,\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal view returns (bytes memory) {\\n if (success) {\\n if (returndata.length == 0) {\\n // only check isContract if the call was successful and the return data is empty\\n // otherwise we already know that it was a contract\\n require(isContract(target), \\\"Address: call to non-contract\\\");\\n }\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n /**\\n * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\\n * revert reason or using the provided one.\\n *\\n * _Available since v4.3._\\n */\\n function verifyCallResult(\\n bool success,\\n bytes memory returndata,\\n string memory errorMessage\\n ) internal pure returns (bytes memory) {\\n if (success) {\\n return returndata;\\n } else {\\n _revert(returndata, errorMessage);\\n }\\n }\\n\\n function _revert(bytes memory returndata, string memory errorMessage) private pure {\\n // Look for revert reason and bubble it up if present\\n if (returndata.length > 0) {\\n // The easiest way to bubble the revert reason is using memory via assembly\\n /// @solidity memory-safe-assembly\\n assembly {\\n let returndata_size := mload(returndata)\\n revert(add(32, returndata), returndata_size)\\n }\\n } else {\\n revert(errorMessage);\\n }\\n }\\n}\\n\",\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Context.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Provides information about the current execution context, including the\\n * sender of the transaction and its data. While these are generally available\\n * via msg.sender and msg.data, they should not be accessed in such a direct\\n * manner, since when dealing with meta-transactions the account sending and\\n * paying for execution may not be the actual sender (as far as an application\\n * is concerned).\\n *\\n * This contract is only required for intermediate, library-like contracts.\\n */\\nabstract contract Context {\\n function _msgSender() internal view virtual returns (address) {\\n return msg.sender;\\n }\\n\\n function _msgData() internal view virtual returns (bytes calldata) {\\n return msg.data;\\n }\\n}\\n\",\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/Counters.sol\":{\"content\":\"// OpenZeppelin Contracts v4.4.1 (utils/Counters.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @title Counters\\n * @author Matt Condon (@shrugs)\\n * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number\\n * of elements in a mapping, issuing ERC721 ids, or counting request ids.\\n *\\n * Include with `using Counters for Counters.Counter;`\\n */\\nlibrary Counters {\\n struct Counter {\\n // This variable should never be directly accessed by users of the library: interactions must be restricted to\\n // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add\\n // this feature: see https://github.com/ethereum/solidity/issues/4637\\n uint256 _value; // default: 0\\n }\\n\\n function current(Counter storage counter) internal view returns (uint256) {\\n return counter._value;\\n }\\n\\n function increment(Counter storage counter) internal {\\n unchecked {\\n counter._value += 1;\\n }\\n }\\n\\n function decrement(Counter storage counter) internal {\\n uint256 value = counter._value;\\n require(value > 0, \\\"Counter: decrement overflow\\\");\\n unchecked {\\n counter._value = value - 1;\\n }\\n }\\n\\n function reset(Counter storage counter) internal {\\n counter._value = 0;\\n }\\n}\\n\",\"keccak256\":\"0x2ea0918130c41b28b3623199dc106b280e5977790978c8cabbec43cad41f4584\"},\"@openzeppelin/contracts/utils/Strings.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Strings.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./math/Math.sol\\\";\\nimport \\\"./math/SignedMath.sol\\\";\\n\\n/**\\n * @dev String operations.\\n */\\nlibrary Strings {\\n bytes16 private constant _SYMBOLS = \\\"0123456789abcdef\\\";\\n uint8 private constant _ADDRESS_LENGTH = 20;\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\\n */\\n function toString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n uint256 length = Math.log10(value) + 1;\\n string memory buffer = new string(length);\\n uint256 ptr;\\n /// @solidity memory-safe-assembly\\n assembly {\\n ptr := add(buffer, add(32, length))\\n }\\n while (true) {\\n ptr--;\\n /// @solidity memory-safe-assembly\\n assembly {\\n mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\\n }\\n value /= 10;\\n if (value == 0) break;\\n }\\n return buffer;\\n }\\n }\\n\\n /**\\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\\n */\\n function toString(int256 value) internal pure returns (string memory) {\\n return string(abi.encodePacked(value < 0 ? \\\"-\\\" : \\\"\\\", toString(SignedMath.abs(value))));\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\\n */\\n function toHexString(uint256 value) internal pure returns (string memory) {\\n unchecked {\\n return toHexString(value, Math.log256(value) + 1);\\n }\\n }\\n\\n /**\\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\\n */\\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\\n bytes memory buffer = new bytes(2 * length + 2);\\n buffer[0] = \\\"0\\\";\\n buffer[1] = \\\"x\\\";\\n for (uint256 i = 2 * length + 1; i > 1; --i) {\\n buffer[i] = _SYMBOLS[value & 0xf];\\n value >>= 4;\\n }\\n require(value == 0, \\\"Strings: hex length insufficient\\\");\\n return string(buffer);\\n }\\n\\n /**\\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\\n */\\n function toHexString(address addr) internal pure returns (string memory) {\\n return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\\n }\\n\\n /**\\n * @dev Returns true if the two strings are equal.\\n */\\n function equal(string memory a, string memory b) internal pure returns (bool) {\\n return keccak256(bytes(a)) == keccak256(bytes(b));\\n }\\n}\\n\",\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\nimport \\\"./IERC165.sol\\\";\\n\\n/**\\n * @dev Implementation of the {IERC165} interface.\\n *\\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\\n * for the additional interface id that will be supported. For example:\\n *\\n * ```solidity\\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\\n * }\\n * ```\\n *\\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\\n */\\nabstract contract ERC165 is IERC165 {\\n /**\\n * @dev See {IERC165-supportsInterface}.\\n */\\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\\n return interfaceId == type(IERC165).interfaceId;\\n }\\n}\\n\",\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Interface of the ERC165 standard, as defined in the\\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\\n *\\n * Implementers can declare support of contract interfaces, which can then be\\n * queried by others ({ERC165Checker}).\\n *\\n * For an implementation, see {ERC165}.\\n */\\ninterface IERC165 {\\n /**\\n * @dev Returns true if this contract implements the interface defined by\\n * `interfaceId`. See the corresponding\\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\\n * to learn more about how these ids are created.\\n *\\n * This function call must use less than 30 000 gas.\\n */\\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\\n}\\n\",\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/Math.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard math utilities missing in the Solidity language.\\n */\\nlibrary Math {\\n enum Rounding {\\n Down, // Toward negative infinity\\n Up, // Toward infinity\\n Zero // Toward zero\\n }\\n\\n /**\\n * @dev Returns the largest of two numbers.\\n */\\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two numbers.\\n */\\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two numbers. The result is rounded towards\\n * zero.\\n */\\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b) / 2 can overflow.\\n return (a & b) + (a ^ b) / 2;\\n }\\n\\n /**\\n * @dev Returns the ceiling of the division of two numbers.\\n *\\n * This differs from standard division with `/` in that it rounds up instead\\n * of rounding down.\\n */\\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\\n // (a + b - 1) / b can overflow on addition, so we distribute.\\n return a == 0 ? 0 : (a - 1) / b + 1;\\n }\\n\\n /**\\n * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\\n * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\\n * with further edits by Uniswap Labs also under MIT license.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\\n unchecked {\\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\\n // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\\n // variables such that product = prod1 * 2^256 + prod0.\\n uint256 prod0; // Least significant 256 bits of the product\\n uint256 prod1; // Most significant 256 bits of the product\\n assembly {\\n let mm := mulmod(x, y, not(0))\\n prod0 := mul(x, y)\\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\\n }\\n\\n // Handle non-overflow cases, 256 by 256 division.\\n if (prod1 == 0) {\\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\\n // The surrounding unchecked block does not change this fact.\\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\\n return prod0 / denominator;\\n }\\n\\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\\n require(denominator > prod1, \\\"Math: mulDiv overflow\\\");\\n\\n ///////////////////////////////////////////////\\n // 512 by 256 division.\\n ///////////////////////////////////////////////\\n\\n // Make division exact by subtracting the remainder from [prod1 prod0].\\n uint256 remainder;\\n assembly {\\n // Compute remainder using mulmod.\\n remainder := mulmod(x, y, denominator)\\n\\n // Subtract 256 bit number from 512 bit number.\\n prod1 := sub(prod1, gt(remainder, prod0))\\n prod0 := sub(prod0, remainder)\\n }\\n\\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\\n // See https://cs.stackexchange.com/q/138556/92363.\\n\\n // Does not overflow because the denominator cannot be zero at this stage in the function.\\n uint256 twos = denominator & (~denominator + 1);\\n assembly {\\n // Divide denominator by twos.\\n denominator := div(denominator, twos)\\n\\n // Divide [prod1 prod0] by twos.\\n prod0 := div(prod0, twos)\\n\\n // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\\n twos := add(div(sub(0, twos), twos), 1)\\n }\\n\\n // Shift in bits from prod1 into prod0.\\n prod0 |= prod1 * twos;\\n\\n // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\\n // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\\n // four bits. That is, denominator * inv = 1 mod 2^4.\\n uint256 inverse = (3 * denominator) ^ 2;\\n\\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\\n // in modular arithmetic, doubling the correct bits in each step.\\n inverse *= 2 - denominator * inverse; // inverse mod 2^8\\n inverse *= 2 - denominator * inverse; // inverse mod 2^16\\n inverse *= 2 - denominator * inverse; // inverse mod 2^32\\n inverse *= 2 - denominator * inverse; // inverse mod 2^64\\n inverse *= 2 - denominator * inverse; // inverse mod 2^128\\n inverse *= 2 - denominator * inverse; // inverse mod 2^256\\n\\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\\n // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\\n // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\\n // is no longer required.\\n result = prod0 * inverse;\\n return result;\\n }\\n }\\n\\n /**\\n * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\\n */\\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\\n uint256 result = mulDiv(x, y, denominator);\\n if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\\n result += 1;\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\\n *\\n * Inspired by Henry S. Warren, Jr.'s \\\"Hacker's Delight\\\" (Chapter 11).\\n */\\n function sqrt(uint256 a) internal pure returns (uint256) {\\n if (a == 0) {\\n return 0;\\n }\\n\\n // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\\n //\\n // We know that the \\\"msb\\\" (most significant bit) of our target number `a` is a power of 2 such that we have\\n // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\\n //\\n // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\\n // \\u2192 `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\\n // \\u2192 `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\\n //\\n // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\\n uint256 result = 1 << (log2(a) >> 1);\\n\\n // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\\n // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\\n // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\\n // into the expected uint128 result.\\n unchecked {\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n result = (result + a / result) >> 1;\\n return min(result, a / result);\\n }\\n }\\n\\n /**\\n * @notice Calculates sqrt(a), following the selected rounding direction.\\n */\\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = sqrt(a);\\n return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 2, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 128;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 64;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 32;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 16;\\n }\\n if (value >> 8 > 0) {\\n value >>= 8;\\n result += 8;\\n }\\n if (value >> 4 > 0) {\\n value >>= 4;\\n result += 4;\\n }\\n if (value >> 2 > 0) {\\n value >>= 2;\\n result += 2;\\n }\\n if (value >> 1 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log2(value);\\n return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 10, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >= 10 ** 64) {\\n value /= 10 ** 64;\\n result += 64;\\n }\\n if (value >= 10 ** 32) {\\n value /= 10 ** 32;\\n result += 32;\\n }\\n if (value >= 10 ** 16) {\\n value /= 10 ** 16;\\n result += 16;\\n }\\n if (value >= 10 ** 8) {\\n value /= 10 ** 8;\\n result += 8;\\n }\\n if (value >= 10 ** 4) {\\n value /= 10 ** 4;\\n result += 4;\\n }\\n if (value >= 10 ** 2) {\\n value /= 10 ** 2;\\n result += 2;\\n }\\n if (value >= 10 ** 1) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log10(value);\\n return result + (rounding == Rounding.Up && 10 ** result < value ? 1 : 0);\\n }\\n }\\n\\n /**\\n * @dev Return the log in base 256, rounded down, of a positive value.\\n * Returns 0 if given 0.\\n *\\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\\n */\\n function log256(uint256 value) internal pure returns (uint256) {\\n uint256 result = 0;\\n unchecked {\\n if (value >> 128 > 0) {\\n value >>= 128;\\n result += 16;\\n }\\n if (value >> 64 > 0) {\\n value >>= 64;\\n result += 8;\\n }\\n if (value >> 32 > 0) {\\n value >>= 32;\\n result += 4;\\n }\\n if (value >> 16 > 0) {\\n value >>= 16;\\n result += 2;\\n }\\n if (value >> 8 > 0) {\\n result += 1;\\n }\\n }\\n return result;\\n }\\n\\n /**\\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\\n * Returns 0 if given 0.\\n */\\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\\n unchecked {\\n uint256 result = log256(value);\\n return result + (rounding == Rounding.Up && 1 << (result << 3) < value ? 1 : 0);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\"},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/SignedMath.sol)\\n\\npragma solidity ^0.8.0;\\n\\n/**\\n * @dev Standard signed math utilities missing in the Solidity language.\\n */\\nlibrary SignedMath {\\n /**\\n * @dev Returns the largest of two signed numbers.\\n */\\n function max(int256 a, int256 b) internal pure returns (int256) {\\n return a > b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the smallest of two signed numbers.\\n */\\n function min(int256 a, int256 b) internal pure returns (int256) {\\n return a < b ? a : b;\\n }\\n\\n /**\\n * @dev Returns the average of two signed numbers without overflow.\\n * The result is rounded towards zero.\\n */\\n function average(int256 a, int256 b) internal pure returns (int256) {\\n // Formula from the book \\\"Hacker's Delight\\\"\\n int256 x = (a & b) + ((a ^ b) >> 1);\\n return x + (int256(uint256(x) >> 255) & (a ^ b));\\n }\\n\\n /**\\n * @dev Returns the absolute unsigned value of a signed value.\\n */\\n function abs(int256 n) internal pure returns (uint256) {\\n unchecked {\\n // must be unchecked in order to support `n = type(int256).min`\\n return uint256(n >= 0 ? n : -n);\\n }\\n }\\n}\\n\",\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\"},\"contracts/NFT/MeetdAppNFT.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.9;\\n\\nimport '@openzeppelin/contracts/token/ERC721/ERC721.sol';\\nimport '@openzeppelin/contracts/access/Ownable.sol';\\nimport '@openzeppelin/contracts/utils/Counters.sol';\\n\\ncontract MeetdAppNFT is ERC721, Ownable {\\n\\tusing Counters for Counters.Counter;\\n\\n\\tCounters.Counter private _tokenIdCounter;\\n\\tstring public baseURI;\\n\\n\\tconstructor(\\n\\t\\tstring memory _name,\\n\\t\\tstring memory _symbol,\\n\\t\\tstring memory _URI\\n\\t) ERC721(_name, _symbol) {\\n\\t\\tbaseURI = _URI;\\n\\t}\\n\\n\\tfunction tokenURI(\\n\\t\\tuint256 tokenId\\n\\t) public view override returns (string memory) {\\n\\t\\t_requireMinted(tokenId);\\n\\n\\t\\treturn baseURI;\\n\\t}\\n\\n\\tfunction safeMint(address to) external onlyOwner {\\n\\t\\tuint256 tokenId = _tokenIdCounter.current();\\n\\t\\t_tokenIdCounter.increment();\\n\\t\\t_safeMint(to, tokenId);\\n\\t}\\n\\n\\tfunction changeBaseURI(string memory _URI) external onlyOwner {\\n\\t\\tbaseURI = _URI;\\n\\t}\\n\\n\\tfunction approve(address, uint256) public pure override {\\n\\t\\trevert(\\\"Approve isn't allowed\\\");\\n\\t}\\n\\n\\tfunction setApprovalForAll(address, bool) public pure override {\\n\\t\\trevert(\\\"setApprovalForAll isn't allowed\\\");\\n\\t}\\n\\n\\tfunction transferFrom(address, address, uint256) public pure override {\\n\\t\\trevert(\\\"transferFrom isn't allowed\\\");\\n\\t}\\n\\n\\tfunction safeTransferFrom(\\n\\t\\taddress,\\n\\t\\taddress,\\n\\t\\tuint256,\\n\\t\\tbytes memory\\n\\t) public pure override {\\n\\t\\trevert(\\\"safeTransferFrom isn't allowed\\\");\\n\\t}\\n}\\n\",\"keccak256\":\"0x73caedec0501dc0c71e0de8e909ac8a8e3075b6a1688d63e80cb6d5283cfbc3a\",\"license\":\"MIT\"},\"contracts/event/MeetdAppEvent.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport '@openzeppelin/contracts/access/Ownable.sol';\\nimport './MeetdAppEventVariables.sol';\\nimport '../utils/constans.sol';\\nimport '../interfaces/IMeetdAppNFT.sol';\\n\\ncontract MeetdAppEvent is MeetdAppEventVariables, Ownable {\\n\\tconstructor(\\n\\t\\taddress[] memory _varAdr,\\n\\t\\tstring[] memory _varStr,\\n\\t\\tuint256[] memory _varInt\\n\\t) {\\n\\t\\teventOwner = _varAdr[uint256(consVarAdr.owner)];\\n\\t\\teventNfts = _varAdr[uint256(consVarAdr.nfts)];\\n\\n\\t\\teventId = _varStr[uint256(consVarStr.eventId)];\\n\\t\\teventName = _varStr[uint256(consVarStr.eventName)];\\n\\t\\teventDescription = _varStr[uint256(consVarStr.eventDescription)];\\n\\t\\teventLocation = _varStr[uint256(consVarStr.eventLocation)];\\n\\n\\t\\teventStartTime = _varInt[uint256(consVarInt.startDate)];\\n\\t\\teventEndTime = _varInt[uint256(consVarInt.endDate)];\\n\\t\\teventTotalTickets = eventRemainingTickets = _varInt[\\n\\t\\t\\tuint256(consVarInt.capacity)\\n\\t\\t];\\n\\t}\\n\\n\\t// ************************ //\\n\\t// * Write functions * //\\n\\t// ************************ //\\n\\n\\tfunction reedemNft(string calldata _eventSecretWord) public {\\n\\t\\trequire(eventAttendees[msg.sender] == true, 'You do not have a ticket');\\n\\t\\trequire(\\n\\t\\t\\tblock.timestamp <= eventReedemableTime,\\n\\t\\t\\t'You cannot reedem your NFT yet'\\n\\t\\t);\\n\\t\\trequire(\\n\\t\\t\\tkeccak256(abi.encodePacked(_eventSecretWord)) == eventSecretWordHash,\\n\\t\\t\\t'Secret word is incorrect'\\n\\t\\t);\\n\\t\\trequire(\\n\\t\\t\\tIMeetdAppNFT(eventNfts).balanceOf(msg.sender) == 0,\\n\\t\\t\\t'You already have a NFT'\\n\\t\\t);\\n\\n\\t\\tIMeetdAppNFT(eventNfts).safeMint(msg.sender);\\n\\t}\\n\\n\\tfunction changeMetadata(string memory _newMetadata) public onlyOwner () {\\n\\t\\trequire(block.timestamp < eventStartTime, 'Event has already started');\\n\\n\\t\\tIMeetdAppNFT(eventNfts).changeBaseURI(_newMetadata);\\n\\t}\\n\\n\\tfunction buyTicket() public {\\n\\t\\trequire(block.timestamp < eventStartTime, 'Event has already started');\\n\\t\\trequire(eventAttendees[msg.sender] == false, 'You already have a ticket');\\n\\n\\t\\teventAttendees[msg.sender] = true;\\n\\t\\tattendeesList.push(msg.sender);\\n\\t\\teventRemainingTickets -= 1;\\n\\n\\t\\temit BoughtTicket(msg.sender);\\n\\t}\\n\\n\\tfunction transferTicket(address _newOwner) public {\\n\\t\\trequire(block.timestamp < eventEndTime, 'Event has already ended');\\n\\t\\trequire(eventAttendees[msg.sender] == true, 'You do not have a ticket');\\n\\n\\t\\teventAttendees[msg.sender] = false;\\n\\t\\teventAttendees[_newOwner] = true;\\n\\n\\t\\tfor (uint i = 0; i < attendeesList.length; i++) {\\n\\t\\t\\tif (attendeesList[i] == msg.sender) {\\n\\t\\t\\t\\tattendeesList[i] = _newOwner;\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\temit TransferredTicket(msg.sender, _newOwner);\\n\\t}\\n\\n\\tfunction refundTicket() public {\\n\\t\\trequire(block.timestamp < eventStartTime, 'Event has already started');\\n\\t\\trequire(eventAttendees[msg.sender] == true, 'You do not have a ticket');\\n\\n\\t\\teventAttendees[msg.sender] = false;\\n\\t\\teventRemainingTickets += 1;\\n\\n\\t\\tfor (uint i = 0; i < attendeesList.length; i++) {\\n\\t\\t\\tif (attendeesList[i] == msg.sender) {\\n\\t\\t\\t\\tattendeesList[i] = attendeesList[attendeesList.length - 1];\\n\\t\\t\\t\\tattendeesList.pop();\\n\\t\\t\\t\\tbreak;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\temit RefundedTicket(msg.sender);\\n\\t}\\n\\n\\tfunction updateEventName(string memory _eventName) public onlyOwner {\\n\\t\\teventName = _eventName;\\n\\n\\t\\temit UpdatedEventName(eventName);\\n\\t\\t(_eventName);\\n\\t}\\n\\n\\tfunction updateEventDescription(\\n\\t\\tstring memory _eventDescription\\n\\t) public onlyOwner {\\n\\t\\teventDescription = _eventDescription;\\n\\n\\t\\temit UpdatedEventDescription(eventDescription);\\n\\t}\\n\\n\\tfunction updateEventLocation(string memory _eventLocation) public onlyOwner {\\n\\t\\teventLocation = _eventLocation;\\n\\n\\t\\temit UpdatedEventLocation(eventLocation);\\n\\t}\\n\\n\\tfunction updateEventTotalTickets(uint _eventTotalTickets) public onlyOwner {\\n\\t\\trequire(\\n\\t\\t\\t_eventTotalTickets >= eventRemainingTickets,\\n\\t\\t\\t'Total tickets must be greater than or equal to remaining tickets'\\n\\t\\t);\\n\\n\\t\\teventTotalTickets = _eventTotalTickets;\\n\\n\\t\\temit UpdatedEventTotalTickets(eventTotalTickets);\\n\\t}\\n\\n\\tfunction updateEventStartTime(uint256 _eventStartTime) public onlyOwner {\\n\\t\\trequire(\\n\\t\\t\\t_eventStartTime > eventStartTime,\\n\\t\\t\\t'Start time must be greater than start time'\\n\\t\\t);\\n\\n\\t\\teventStartTime = _eventStartTime;\\n\\n\\t\\temit UpdatedEventStartTime(eventStartTime);\\n\\t}\\n\\n\\tfunction updateEventEndTime(uint256 _eventEndTime) public onlyOwner {\\n\\t\\trequire(\\n\\t\\t\\t_eventEndTime > eventStartTime,\\n\\t\\t\\t'End time must be greater than start time'\\n\\t\\t);\\n\\n\\t\\teventEndTime = _eventEndTime;\\n\\n\\t\\temit UpdatedEventEndTime(eventEndTime);\\n\\t}\\n\\n\\tfunction updateEventReedemableTimeAndEventSecretWord(\\n\\t\\tuint256 _eventReedemableTime,\\n\\t\\tbytes32 _eventSecretWordHash\\n\\t) public onlyOwner {\\n\\t\\trequire(block.timestamp < eventEndTime, 'Event has already ended');\\n\\t\\trequire(\\n\\t\\t\\t_eventReedemableTime >= eventStartTime,\\n\\t\\t\\t'Reedemable time must be greater than start time'\\n\\t\\t);\\n\\n\\t\\teventReedemableTime = _eventReedemableTime;\\n\\t\\teventSecretWordHash = _eventSecretWordHash;\\n\\n\\t\\temit UpdatedReedemableTimeAndSecretWordHash(\\n\\t\\t\\teventReedemableTime,\\n\\t\\t\\teventSecretWordHash\\n\\t\\t);\\n\\t}\\n\\n\\tfunction updateEventOwner(address _eventOwner) public onlyOwner {\\n\\t\\teventOwner = _eventOwner;\\n\\n\\t\\temit UpdatedEventOwner(eventOwner);\\n\\t}\\n\\n\\t// ************************ //\\n\\t// * Read functions * //\\n\\t// ************************ //\\n\\n\\tfunction getAllAttendees() public view returns (address[] memory) {\\n\\t\\treturn attendeesList;\\n\\t}\\n}\\n\",\"keccak256\":\"0xa7e8e6320f6a42c7f745cbb0bc526b5fc367bcca04d7ae531c3d37a1fd79c3cb\",\"license\":\"MIT\"},\"contracts/event/MeetdAppEventVariables.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\ncontract MeetdAppEventVariables {\\n\\t/* Variables */\\n\\n\\tstring public eventId;\\n\\tstring public eventName;\\n\\tstring public eventDescription;\\n\\tstring public eventLocation;\\n\\tuint public eventTotalTickets;\\n\\tuint public eventRemainingTickets;\\n\\tuint256 public eventStartTime;\\n\\tuint256 public eventEndTime;\\n\\tuint256 public eventReedemableTime;\\n\\tbytes32 public eventSecretWordHash;\\n\\taddress public eventFactory;\\n\\taddress public eventOwner;\\n\\taddress public eventNfts;\\n\\n\\t/* Storage */\\n\\n\\taddress[] public attendeesList;\\n\\n\\tmapping(address => bool) public eventAttendees;\\n\\n\\t/* Events */\\n\\n\\tevent UpdatedEventName(string eventName);\\n\\n\\tevent UpdatedEventDescription(string eventDescription);\\n\\n\\tevent UpdatedEventLocation(string eventLocation);\\n\\n\\tevent UpdatedEventTotalTickets(uint eventTotalTickets);\\n\\n\\tevent UpdatedEventStartTime(uint256 eventStartTime);\\n\\n\\tevent UpdatedEventEndTime(uint256 eventEndTime);\\n\\n\\tevent UpdatedReedemableTimeAndSecretWordHash(\\n\\t\\tuint256 eventReedemableTime,\\n\\t\\tbytes32 eventSecretWordHash\\n\\t);\\n\\n\\tevent UpdatedEventOwner(address eventOwner);\\n\\n\\tevent BoughtTicket(address buyer);\\n\\n\\tevent RefundedTicket(address buyer);\\n\\n\\tevent TransferredTicket(address buyer, address newOwner);\\n}\\n\",\"keccak256\":\"0x1c720c1856dfaff58bc28a933b8c9d3c6582924c15c2a6ab1b0b385f5295badc\",\"license\":\"MIT\"},\"contracts/factory/MeetdAppFactory.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport '../event/MeetdAppEvent.sol';\\nimport '../utils/constans.sol';\\nimport '../NFT/MeetdAppNFT.sol';\\n\\n/// @title MeetdApp Factory\\n/// @notice Create and config New Events\\n/// @dev This contract is the standard way to create a new event\\n/// @author LE0xUL\\ncontract MeetdAppFactory {\\n\\t/// @notice Store the number of created events\\n\\tuint256 public numEvents;\\n\\n\\t/// @notice Relation between eventId (hash nanoId) and eventAddr\\n\\tmapping(bytes32 => MeetdAppEvent) public mapIdEvent;\\n\\n\\t/// @notice Mapping to store all the created houses numEvent -> dataEvent\\n\\tmapping(uint256 => dataEvent) public mapEventNum;\\n\\n\\tevent createdEvent(string eventId);\\n\\n\\t// ************************ //\\n\\t// * Write functions * //\\n\\t// ************************ //\\n\\n\\tfunction CreateEvent(\\n\\t\\tstring[] memory _varStr,\\n\\t\\tuint256[] memory _varInt\\n\\t) external {\\n\\t\\trequire(\\n\\t\\t\\t_varInt[uint256(consVarInt.startDate)] >= block.timestamp,\\n\\t\\t\\t'Invalid start Date'\\n\\t\\t);\\n\\t\\trequire(\\n\\t\\t\\t_varInt[uint256(consVarInt.endDate)] >\\n\\t\\t\\t\\t_varInt[uint256(consVarInt.startDate)],\\n\\t\\t\\t'Invalid end Date'\\n\\t\\t);\\n\\t\\trequire(_varInt[uint256(consVarInt.capacity)] > 0, 'Invalid capacity');\\n\\n\\t\\tMeetdAppNFT eventNFT = new MeetdAppNFT(\\n\\t\\t\\t_varStr[uint256(consVarStr.nftName)],\\n\\t\\t\\t_varStr[uint256(consVarStr.nftSymbol)],\\n\\t\\t\\t_varStr[uint256(consVarStr.nftUri)]\\n\\t\\t);\\n\\n\\t\\taddress[] memory varAdr = new address[](2);\\n\\t\\tvarAdr[uint256(consVarAdr.owner)] = msg.sender;\\n\\t\\tvarAdr[uint256(consVarAdr.nfts)] = address(eventNFT);\\n\\n\\t\\tMeetdAppEvent eventNew = new MeetdAppEvent(varAdr, _varStr, _varInt);\\n\\n\\t\\teventNFT.transferOwnership(address(eventNew));\\n\\t\\teventNew.transferOwnership(msg.sender);\\n\\n\\t\\tnumEvents++;\\n\\n\\t\\tmapEventNum[numEvents] = dataEvent({\\n\\t\\t\\tactive: true,\\n\\t\\t\\teventId: _varStr[uint256(consVarStr.eventId)],\\n\\t\\t\\teventAddr: eventNew\\n\\t\\t});\\n\\n\\t\\tbytes32 hashEventId = keccak256(\\n\\t\\t\\tabi.encodePacked(_varStr[uint256(consVarStr.eventId)])\\n\\t\\t);\\n\\n\\t\\tmapIdEvent[hashEventId] = MeetdAppEvent(address(eventNew));\\n\\n\\t\\temit createdEvent(_varStr[uint256(consVarStr.eventId)]);\\n\\t}\\n\\n\\t// ************************ //\\n\\t// * Read functions * //\\n\\t// ************************ //\\n}\\n\",\"keccak256\":\"0x9efdd60acad78bb0b1a44ee1fb6ae16886067c3524c5be2cf2c529d1319434fc\",\"license\":\"MIT\"},\"contracts/interfaces/IMeetdAppNFT.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\n\\nimport '@openzeppelin/contracts/token/ERC721/IERC721.sol';\\nimport '@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol';\\n\\ninterface IMeetdAppNFT is IERC721, IERC721Metadata {\\n\\tfunction safeMint(address to) external;\\n\\n\\tfunction changeBaseURI(string memory _URI) external;\\n}\\n\",\"keccak256\":\"0xd23059cdd8170abb282684c7abceb90e0011f63a91bec04730b0e5b4852009cf\",\"license\":\"MIT\"},\"contracts/utils/constans.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.19;\\nimport '../event/MeetdAppEvent.sol';\\n\\nenum consVarInt {\\n\\tstartDate,\\n\\tendDate,\\n\\tcapacity\\n}\\n\\nenum consVarStr {\\n\\teventId,\\n\\teventName,\\n\\teventDescription,\\n\\teventLocation,\\n\\tnftName,\\n\\tnftSymbol,\\n\\tnftUri\\n}\\n\\nenum consVarAdr {\\n\\towner,\\n\\tnfts\\n}\\n\\nstruct dataEvent {\\n\\tbool active;\\n\\tstring eventId;\\n\\tMeetdAppEvent eventAddr;\\n}\\n\",\"keccak256\":\"0xea5580e8871c593377099126440f9b15a4aa4826515270092beae9e4162250a7\",\"license\":\"MIT\"}},\"version\":1}", + "bytecode": "0x608060405234801561001057600080fd5b50614a3f806100206000396000f3fe60806040523480156200001157600080fd5b5060043610620000525760003560e01c806334cf562b14620000575780635bad5c21146200007957806364493ac314620000b4578063e702c15314620000dc575b600080fd5b6200006160005481565b604051620000709190620006aa565b60405180910390f35b620000a56200008a366004620006c8565b6001602052600090815260409020546001600160a01b031681565b6040516200007091906200073f565b620000cb620000c5366004620006c8565b620000f5565b6040516200007093929190620007b3565b620000f3620000ed36600462000a4c565b620001b5565b005b6002602052600090815260409020805460018201805460ff90921692916200011d9062000ade565b80601f01602080910402602001604051908101604052809291908181526020018280546200014b9062000ade565b80156200019c5780601f1062000170576101008083540402835291602001916200019c565b820191906000526020600020905b8154815290600101906020018083116200017e57829003601f168201915b505050600290930154919250506001600160a01b031683565b4281600081518110620001cc57620001cc62000b24565b60200260200101511015620001fe5760405162461bcd60e51b8152600401620001f59062000b66565b60405180910390fd5b8060008151811062000214576200021462000b24565b6020026020010151816001600281111562000233576200023362000b0e565b8151811062000246576200024662000b24565b6020026020010151116200026e5760405162461bcd60e51b8152600401620001f59062000ba0565b60008160028151811062000286576200028662000b24565b602002602001015111620002ae5760405162461bcd60e51b8152600401620001f59062000bda565b600082600481518110620002c657620002c662000b24565b60200260200101518360056006811115620002e557620002e562000b0e565b81518110620002f857620002f862000b24565b60200260200101518460068081111562000316576200031662000b0e565b8151811062000329576200032962000b24565b60200260200101516040516200033f9062000686565b6200034d9392919062000bec565b604051809103906000f0801580156200036a573d6000803e3d6000fd5b5060408051600280825260608201835292935060009290916020830190803683370190505090503381600081518110620003a857620003a862000b24565b6001600160a01b03909216602092830291909101909101528181600181518110620003d757620003d762000b24565b60200260200101906001600160a01b031690816001600160a01b03168152505060008185856040516200040a9062000694565b620004189392919062000d87565b604051809103906000f08015801562000435573d6000803e3d6000fd5b5060405163f2fde38b60e01b81529091506001600160a01b0384169063f2fde38b906200046790849060040162000dc6565b600060405180830381600087803b1580156200048257600080fd5b505af115801562000497573d6000803e3d6000fd5b505060405163f2fde38b60e01b81526001600160a01b038416925063f2fde38b9150620004c990339060040162000dc6565b600060405180830381600087803b158015620004e457600080fd5b505af1158015620004f9573d6000803e3d6000fd5b50506000805492509050806200050f8362000dec565b909155505060408051606081019091526001815260208101866000815181106200053d576200053d62000b24565b60209081029190910181015182526001600160a01b0384169181019190915260008054815260028252604090208251815460ff19169015151781559082015160018201906200058d908262000eb8565b5060409190910151600290910180546001600160a01b0319166001600160a01b039092169190911790556000858181518110620005ce57620005ce62000b24565b6020026020010151604051602001620005e8919062000fae565b60408051808303601f1901815291815281516020928301206000818152600190935290822080546001600160a01b0319166001600160a01b03861617905591507f792061a44a6be3c666f6763945c46e98e3fcfa677607d5e36b08fb56be451fdd908790815181106200065f576200065f62000b24565b602002602001015160405162000676919062000fbc565b60405180910390a1505050505050565b6117c48062000fd083390190565b612276806200279483390190565b805b82525050565b60208101620006ba8284620006a2565b92915050565b8035620006ba565b600060208284031215620006df57620006df600080fd5b6000620006ed8484620006c0565b949350505050565b6000620006ba6001600160a01b0383166200070e565b90565b6001600160a01b031690565b6000620006ba82620006f5565b6000620006ba826200071a565b620006a48162000727565b60208101620006ba828462000734565b801515620006a4565b60005b83811015620007755781810151838201526020016200075b565b50506000910152565b600062000789825190565b808452602084019350620007a281856020860162000758565b601f01601f19169290920192915050565b60608101620007c382866200074f565b8181036020830152620007d781856200077e565b9050620006ed604083018462000734565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715620008275762000827620007e8565b6040525050565b60006200083a60405190565b9050620008488282620007fe565b919050565b600067ffffffffffffffff8211156200086a576200086a620007e8565b5060209081020190565b600067ffffffffffffffff821115620008915762000891620007e8565b601f19601f83011660200192915050565b82818337506000910152565b6000620008c5620008bf8462000874565b6200082e565b905082815260208101848484011115620008e257620008e2600080fd5b620008ef848285620008a2565b509392505050565b600082601f8301126200090d576200090d600080fd5b8135620006ed848260208601620008ae565b600062000930620008bf846200084d565b83815290506020808201908402830185811115620009515762000951600080fd5b835b818110156200099857803567ffffffffffffffff811115620009785762000978600080fd5b808601620009878982620008f7565b855250506020928301920162000953565b5050509392505050565b600082601f830112620009b857620009b8600080fd5b8135620006ed8482602086016200091f565b6000620009db620008bf846200084d565b83815290506020808201908402830185811115620009fc57620009fc600080fd5b835b8181101562000998578062000a148882620006c0565b84525060209283019201620009fe565b600082601f83011262000a3a5762000a3a600080fd5b8135620006ed848260208601620009ca565b6000806040838503121562000a645762000a64600080fd5b823567ffffffffffffffff81111562000a805762000a80600080fd5b62000a8e85828601620009a2565b925050602083013567ffffffffffffffff81111562000ab05762000ab0600080fd5b62000abe8582860162000a24565b9150509250929050565b634e487b7160e01b600052602260045260246000fd5b60028104600182168062000af357607f821691505b60208210810362000b085762000b0862000ac8565b50919050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6012815260006020820171496e76616c6964207374617274204461746560701b815291505b5060200190565b60208082528101620006ba8162000b3a565b601081526000602082016f496e76616c696420656e64204461746560801b8152915062000b5f565b60208082528101620006ba8162000b78565b601081526000602082016f496e76616c696420636170616369747960801b8152915062000b5f565b60208082528101620006ba8162000bb2565b6060808252810162000bff81866200077e565b9050818103602083015262000c1581856200077e565b9050818103604083015262000c2b81846200077e565b95945050505050565b60006001600160a01b038216620006ba565b620006a48162000c34565b600062000c5f838362000c46565b505060200190565b600062000c72825190565b80845260209384019383018060005b8381101562000caa57815162000c98888262000c51565b97506020830192505060010162000c81565b509495945050505050565b600062000cc383836200077e565b9392505050565b600062000cd5825190565b8084526020840193508360208202850162000cf08560200190565b8060005b8581101562000d29578484038952815162000d10858262000cb5565b94506020830160209a909a019992505060010162000cf4565b5091979650505050505050565b600062000c5f8383620006a2565b600062000d4f825190565b80845260209384019383018060005b8381101562000caa57815162000d75888262000d36565b97506020830192505060010162000d5e565b6060808252810162000d9a818662000c67565b9050818103602083015262000db0818562000cca565b9050818103604083015262000c2b818462000d44565b60208101620006ba828462000c46565b634e487b7160e01b600052601160045260246000fd5b6000600019820362000e025762000e0262000dd6565b5060010190565b6000620006ba6200070b8381565b62000e228362000e09565b815460001960089490940293841b1916921b91909117905550565b600062000e4c81848462000e17565b505050565b8181101562000e705762000e6760008262000e3d565b60010162000e51565b5050565b601f82111562000e4c576000818152602090206020601f8501048101602085101562000e9d5750805b62000eb16020601f86010483018262000e51565b5050505050565b815167ffffffffffffffff81111562000ed55762000ed5620007e8565b62000ee1825462000ade565b62000eee82828562000e74565b6020601f83116001811462000f25576000841562000f0c5750858201515b600019600886021c198116600286021786555062000f81565b600085815260208120601f198616915b8281101562000f57578885015182556020948501946001909201910162000f35565b8683101562000f745784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b600062000f94825190565b62000fa481856020860162000758565b9290920192915050565b600062000cc3828462000f89565b6020808252810162000cc381846200077e56fe60806040523480156200001157600080fd5b50604051620017c4380380620017c483398101604081905262000034916200020e565b82826000620000448382620003b7565b506001620000538282620003b7565b505050620000706200006a6200008860201b60201c565b6200008c565b60086200007e8282620003b7565b5050505062000487565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b03821117156200011c576200011c620000de565b6040525050565b60006200012f60405190565b90506200013d8282620000f4565b919050565b60006001600160401b038211156200015e576200015e620000de565b601f19601f83011660200192915050565b60005b838110156200018c57818101518382015260200162000172565b50506000910152565b6000620001ac620001a68462000142565b62000123565b905082815260208101848484011115620001c957620001c9600080fd5b620001d68482856200016f565b509392505050565b600082601f830112620001f457620001f4600080fd5b81516200020684826020860162000195565b949350505050565b600080600060608486031215620002285762000228600080fd5b83516001600160401b03811115620002435762000243600080fd5b6200025186828701620001de565b93505060208401516001600160401b03811115620002725762000272600080fd5b6200028086828701620001de565b92505060408401516001600160401b03811115620002a157620002a1600080fd5b620002af86828701620001de565b9150509250925092565b634e487b7160e01b600052602260045260246000fd5b600281046001821680620002e457607f821691505b602082108103620002f957620002f9620002b9565b50919050565b6000620003106200030d8381565b90565b92915050565b6200032183620002ff565b815460001960089490940293841b1916921b91909117905550565b60006200034b81848462000316565b505050565b818110156200036f57620003666000826200033c565b60010162000350565b5050565b601f8211156200034b576000818152602090206020601f850104810160208510156200039c5750805b620003b06020601f86010483018262000350565b5050505050565b81516001600160401b03811115620003d357620003d3620000de565b620003df8254620002cf565b620003ec82828562000373565b6020601f8311600181146200042357600084156200040a5750858201515b600019600886021c19811660028602178655506200047f565b600085815260208120601f198616915b8281101562000455578885015182556020948501946001909201910162000433565b86831015620004725784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b61132d80620004976000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80636c0360eb116100ad578063a22cb46511610071578063a22cb46514610241578063b88d4fde14610254578063c87b56dd14610267578063e985e9c51461027a578063f2fde38b146102b657600080fd5b80636c0360eb146101f857806370a0823114610200578063715018a6146102205780638da5cb5b1461022857806395d89b411461023957600080fd5b806323b872dd116100f457806323b872dd1461019957806339a0c6f9146101ac57806340d097c3146101bf57806342842e0e146101d25780636352211e146101e557600080fd5b806301ffc9a71461012657806306fdde031461014f578063081812fc14610164578063095ea7b314610184575b600080fd5b6101396101343660046109bf565b6102c9565b60405161014691906109ea565b60405180910390f35b61015761031b565b6040516101469190610a4e565b610177610172366004610a77565b6103ad565b6040516101469190610ab2565b610197610192366004610ad4565b6103d4565b005b6101976101a7366004610b11565b6103f5565b6101976101ba366004610c5c565b61040d565b6101976101cd366004610c97565b610425565b6101976101e0366004610b11565b610452565b6101776101f3366004610a77565b610472565b6101576104a7565b61021361020e366004610c97565b610535565b6040516101469190610cbe565b610197610579565b6006546001600160a01b0316610177565b61015761058d565b61019761024f366004610cdf565b61059c565b610197610262366004610d12565b6105b4565b610157610275366004610a77565b6105cc565b610139610288366004610d91565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6101976102c4366004610c97565b610669565b60006001600160e01b031982166380ac58cd60e01b14806102fa57506001600160e01b03198216635b5e139f60e01b145b8061031557506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461032a90610dda565b80601f016020809104026020016040519081016040528092919081815260200182805461035690610dda565b80156103a35780601f10610378576101008083540402835291602001916103a3565b820191906000526020600020905b81548152906001019060200180831161038657829003601f168201915b5050505050905090565b60006103b8826106a3565b506000908152600460205260409020546001600160a01b031690565b60405162461bcd60e51b81526004016103ec90610e35565b60405180910390fd5b60405162461bcd60e51b81526004016103ec90610e79565b6104156106d7565b60086104218282610f24565b5050565b61042d6106d7565b600061043860075490565b9050610448600780546001019055565b6104218282610701565b61046d838383604051806020016040528060008152506105b4565b505050565b6000818152600260205260408120546001600160a01b0316806103155760405162461bcd60e51b81526004016103ec9061101c565b600880546104b490610dda565b80601f01602080910402602001604051908101604052809291908181526020018280546104e090610dda565b801561052d5780601f106105025761010080835404028352916020019161052d565b820191906000526020600020905b81548152906001019060200180831161051057829003601f168201915b505050505081565b60006001600160a01b03821661055d5760405162461bcd60e51b81526004016103ec90611075565b506001600160a01b031660009081526003602052604090205490565b6105816106d7565b61058b600061071b565b565b60606001805461032a90610dda565b60405162461bcd60e51b81526004016103ec906110b9565b60405162461bcd60e51b81526004016103ec906110fd565b60606105d7826106a3565b600880546105e490610dda565b80601f016020809104026020016040519081016040528092919081815260200182805461061090610dda565b801561065d5780601f106106325761010080835404028352916020019161065d565b820191906000526020600020905b81548152906001019060200180831161064057829003601f168201915b50505050509050919050565b6106716106d7565b6001600160a01b0381166106975760405162461bcd60e51b81526004016103ec90611150565b6106a08161071b565b50565b6000818152600260205260409020546001600160a01b03166106a05760405162461bcd60e51b81526004016103ec9061101c565b6006546001600160a01b0316331461058b5760405162461bcd60e51b81526004016103ec90611192565b61042182826040518060200160405280600081525061076d565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61077783836107a0565b610784600084848461089b565b61046d5760405162461bcd60e51b81526004016103ec906111f1565b6001600160a01b0382166107c65760405162461bcd60e51b81526004016103ec90611233565b6000818152600260205260409020546001600160a01b0316156107fb5760405162461bcd60e51b81526004016103ec90611277565b6000818152600260205260409020546001600160a01b0316156108305760405162461bcd60e51b81526004016103ec90611277565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b1561099157604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906108df903390899088908890600401611287565b6020604051808303816000875af192505050801561091a575060408051601f3d908101601f19168201909252610917918101906112d6565b60015b610977573d808015610948576040519150601f19603f3d011682016040523d82523d6000602084013e61094d565b606091505b50805160000361096f5760405162461bcd60e51b81526004016103ec906111f1565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610995565b5060015b949350505050565b6001600160e01b031981165b81146106a057600080fd5b80356103158161099d565b6000602082840312156109d4576109d4600080fd5b600061099584846109b4565b8015155b82525050565b6020810161031582846109e0565b60005b83811015610a135781810151838201526020016109fb565b50506000910152565b6000610a26825190565b808452602084019350610a3d8185602086016109f8565b601f01601f19169290920192915050565b60208082528101610a5f8184610a1c565b9392505050565b806109a9565b803561031581610a66565b600060208284031215610a8c57610a8c600080fd5b60006109958484610a6c565b60006001600160a01b038216610315565b6109e481610a98565b602081016103158284610aa9565b6109a981610a98565b803561031581610ac0565b60008060408385031215610aea57610aea600080fd5b6000610af68585610ac9565b9250506020610b0785828601610a6c565b9150509250929050565b600080600060608486031215610b2957610b29600080fd5b6000610b358686610ac9565b9350506020610b4686828701610ac9565b9250506040610b5786828701610a6c565b9150509250925092565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715610b9d57610b9d610b61565b6040525050565b6000610baf60405190565b9050610bbb8282610b77565b919050565b600067ffffffffffffffff821115610bda57610bda610b61565b601f19601f83011660200192915050565b82818337506000910152565b6000610c0a610c0584610bc0565b610ba4565b905082815260208101848484011115610c2557610c25600080fd5b610c30848285610beb565b509392505050565b600082601f830112610c4c57610c4c600080fd5b8135610995848260208601610bf7565b600060208284031215610c7157610c71600080fd5b813567ffffffffffffffff811115610c8b57610c8b600080fd5b61099584828501610c38565b600060208284031215610cac57610cac600080fd5b60006109958484610ac9565b806109e4565b602081016103158284610cb8565b8015156109a9565b803561031581610ccc565b60008060408385031215610cf557610cf5600080fd5b6000610d018585610ac9565b9250506020610b0785828601610cd4565b60008060008060808587031215610d2b57610d2b600080fd5b6000610d378787610ac9565b9450506020610d4887828801610ac9565b9350506040610d5987828801610a6c565b925050606085013567ffffffffffffffff811115610d7957610d79600080fd5b610d8587828801610c38565b91505092959194509250565b60008060408385031215610da757610da7600080fd5b6000610db38585610ac9565b9250506020610b0785828601610ac9565b634e487b7160e01b600052602260045260246000fd5b600281046001821680610dee57607f821691505b602082108103610e0057610e00610dc4565b50919050565b6015815260006020820174105c1c1c9bdd99481a5cdb89dd08185b1b1bddd959605a1b815291505b5060200190565b6020808252810161031581610e06565b601a81526000602082017f7472616e7366657246726f6d2069736e277420616c6c6f77656400000000000081529150610e2e565b6020808252810161031581610e45565b6000610315610e958381565b90565b610ea183610e89565b815460001960089490940293841b1916921b91909117905550565b600061046d818484610e98565b8181101561042157610edc600082610ebc565b600101610ec9565b601f82111561046d576000818152602090206020601f85010481016020851015610f0b5750805b610f1d6020601f860104830182610ec9565b5050505050565b815167ffffffffffffffff811115610f3e57610f3e610b61565b610f488254610dda565b610f53828285610ee4565b6020601f831160018114610f875760008415610f6f5750858201515b600019600886021c1981166002860217865550610fe0565b600085815260208120601f198616915b82811015610fb75788850151825560209485019460019092019101610f97565b86831015610fd35784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b601881526000602082017f4552433732313a20696e76616c696420746f6b656e204944000000000000000081529150610e2e565b6020808252810161031581610fe8565b602981526000602082017f4552433732313a2061646472657373207a65726f206973206e6f7420612076618152683634b21037bbb732b960b91b602082015291505b5060400190565b602080825281016103158161102c565b601f81526000602082017f736574417070726f76616c466f72416c6c2069736e277420616c6c6f7765640081529150610e2e565b6020808252810161031581611085565b601e81526000602082017f736166655472616e7366657246726f6d2069736e277420616c6c6f776564000081529150610e2e565b60208082528101610315816110c9565b602681526000602082017f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b6020820152915061106e565b602080825281016103158161110d565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000610e2e565b6020808252810161031581611160565b603281526000602082017f4552433732313a207472616e7366657220746f206e6f6e20455243373231526581527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6020820152915061106e565b60208082528101610315816111a2565b60208082527f4552433732313a206d696e7420746f20746865207a65726f206164647265737391019081526000610e2e565b6020808252810161031581611201565b601c81526000602082017f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081529150610e2e565b6020808252810161031581611243565b608081016112958287610aa9565b6112a26020830186610aa9565b6112af6040830185610cb8565b81810360608301526112c18184610a1c565b9695505050505050565b80516103158161099d565b6000602082840312156112eb576112eb600080fd5b600061099584846112cb56fea26469706673582212200ddc5e6c148d091a133a3a3968d0c48e090f5a57a9ed47dbbea0d5e683b9a7bb64736f6c6343000813003360806040523480156200001157600080fd5b506040516200227638038062002276833981016040819052620000349162000599565b6200003f33620001f5565b8260008151811062000055576200005562000644565b6020908102919091010151600b80546001600160a01b0319166001600160a01b039092169190911790558260018151811062000095576200009562000644565b6020908102919091010151600c80546001600160a01b0319166001600160a01b0390921691909117905581600081518110620000d557620000d562000644565b602002602001015160009081620000ed919062000752565b508160018151811062000104576200010462000644565b6020026020010151600190816200011c919062000752565b508160028151811062000133576200013362000644565b6020026020010151600290816200014b919062000752565b508160038151811062000162576200016262000644565b6020026020010151600390816200017a919062000752565b508060008151811062000191576200019162000644565b602090810291909101015160065580600181518110620001b557620001b562000644565b602090810291909101015160075580600281518110620001d957620001d962000644565b6020026020010151600581905560048190555050505062000822565b600f80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b038211171562000285576200028562000247565b6040525050565b60006200029860405190565b9050620002a682826200025d565b919050565b60006001600160401b03821115620002c757620002c762000247565b5060209081020190565b60006001600160a01b0382165b92915050565b620002ef81620002d1565b8114620002fb57600080fd5b50565b8051620002de81620002e4565b6000620003226200031c84620002ab565b6200028c565b83815290506020808201908402830185811115620003435762000343600080fd5b835b818110156200036b57806200035b8882620002fe565b8452506020928301920162000345565b5050509392505050565b600082601f8301126200038b576200038b600080fd5b81516200039d8482602086016200030b565b949350505050565b60006001600160401b03821115620003c157620003c162000247565b601f19601f83011660200192915050565b60005b83811015620003ef578181015183820152602001620003d5565b50506000910152565b6000620004096200031c84620003a5565b905082815260208101848484011115620004265762000426600080fd5b62000433848285620003d2565b509392505050565b600082601f830112620004515762000451600080fd5b81516200039d848260208601620003f8565b6000620004746200031c84620002ab565b83815290506020808201908402830185811115620004955762000495600080fd5b835b818110156200036b5780516001600160401b03811115620004bb57620004bb600080fd5b808601620004ca89826200043b565b855250506020928301920162000497565b600082601f830112620004f157620004f1600080fd5b81516200039d84826020860162000463565b80620002ef565b8051620002de8162000503565b6000620005286200031c84620002ab565b83815290506020808201908402830185811115620005495762000549600080fd5b835b818110156200036b57806200056188826200050a565b845250602092830192016200054b565b600082601f830112620005875762000587600080fd5b81516200039d84826020860162000517565b600080600060608486031215620005b357620005b3600080fd5b83516001600160401b03811115620005ce57620005ce600080fd5b620005dc8682870162000375565b93505060208401516001600160401b03811115620005fd57620005fd600080fd5b6200060b86828701620004db565b92505060408401516001600160401b038111156200062c576200062c600080fd5b6200063a8682870162000571565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602260045260246000fd5b6002810460018216806200068557607f821691505b6020821081036200069a576200069a6200065a565b50919050565b6000620002de620006ae8381565b90565b620006bc83620006a0565b815460001960089490940293841b1916921b91909117905550565b6000620006e6818484620006b1565b505050565b818110156200070a5762000701600082620006d7565b600101620006eb565b5050565b601f821115620006e6576000818152602090206020601f85010481016020851015620007375750805b6200074b6020601f860104830182620006eb565b5050505050565b81516001600160401b038111156200076e576200076e62000247565b6200077a825462000670565b620007878282856200070e565b6020601f831160018114620007be5760008415620007a55750858201515b600019600886021c19811660028602178655506200081a565b600085815260208120601f198616915b82811015620007f05788850151825560209485019460019092019101620007ce565b868310156200080d5784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b611a4480620008326000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c8063749956891161010f578063bfebbda8116100a2578063e33696f711610071578063e33696f7146103d8578063e38096f0146103ed578063edca914c14610400578063f2fde38b1461040857600080fd5b8063bfebbda814610396578063c0af2346146103a9578063d6bd5db1146103bc578063d9b6225e146103c557600080fd5b80638043c9c0116100de5780638043c9c0146103625780638a89c14c1461036a5780638da5cb5b1461037d5780639434571b1461038e57600080fd5b806374995689146103165780637721fe5c1461032957806377d1efb41461033c5780637b1ac2511461034f57600080fd5b806355b6ec1d116101875780636fdbd3f6116101565780636fdbd3f6146102ea578063713a3c93146102fd578063715018a614610305578063740ea9a61461030d57600080fd5b806355b6ec1d146102a857806361cec060146102bb57806364471452146102ce5780636afadefb146102d757600080fd5b806320214134116101c3578063202141341461026e578063270821b61461028e578063297449af146102975780632a6ca755146102a057600080fd5b806305ccfd33146101f5578063089cdd0c1461020a57806309e52c12146102285780631f4894b11461023e575b600080fd5b610208610203366004611041565b61041b565b005b61021261046b565b60405161021f91906110d2565b60405180910390f35b61023160085481565b60405161021f91906110f2565b61026161024c366004611136565b600e6020526000908152604090205460ff1681565b60405161021f919061115f565b600b54610281906001600160a01b031681565b60405161021f9190611176565b61023160095481565b61023160055481565b6102126104f9565b6102086102b6366004611195565b610506565b600c54610281906001600160a01b031681565b61023160045481565b6102086102e5366004611136565b6105a2565b600a54610281906001600160a01b031681565b6102086106f8565b6102086108bf565b61023160065481565b6102086103243660046111d2565b6108d3565b6102086103373660046111d2565b610932565b61020861034a366004611041565b610990565b61020861035d366004611245565b6109d5565b610212610b68565b6102816103783660046111d2565b610b75565b600f546001600160a01b0316610281565b610212610b9f565b6102086103a43660046111d2565b610bac565b6102086103b7366004611041565b610c0a565b61023160075481565b6102086103d3366004611041565b610c4f565b6103e0610cdd565b60405161021f91906112ea565b6102086103fb366004611136565b610d3f565b610208610d93565b610208610416366004611136565b610e88565b610423610ec2565b600161042f82826113da565b507f43abd8587b7e2fd4918308a13f0cf9759cdbba18adb47403d2779a67dac06ef860016040516104609190611517565b60405180910390a150565b6000805461047890611311565b80601f01602080910402602001604051908101604052809291908181526020018280546104a490611311565b80156104f15780601f106104c6576101008083540402835291602001916104f1565b820191906000526020600020905b8154815290600101906020018083116104d457829003601f168201915b505050505081565b6003805461047890611311565b61050e610ec2565b60075442106105385760405162461bcd60e51b815260040161052f9061155f565b60405180910390fd5b60065482101561055a5760405162461bcd60e51b815260040161052f906115be565b600882905560098190556040517ff2ccaa626cc9d4a494f70edcc2e8e06f1f533d1494b4000e6b61d523bd537bf39061059690849084906115ce565b60405180910390a15050565b60075442106105c35760405162461bcd60e51b815260040161052f9061155f565b336000908152600e602052604090205460ff1615156001146105f75760405162461bcd60e51b815260040161052f9061161d565b336000908152600e6020526040808220805460ff199081169091556001600160a01b0384168352908220805490911660011790555b600d548110156106c657336001600160a01b0316600d82815481106106535761065361162d565b6000918252602090912001546001600160a01b0316036106b45781600d82815481106106815761068161162d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506106c6565b806106be81611659565b91505061062c565b507f7478cc8eb40d9aeecde2e2f399de4bfeb61e737a737f3412f2a6043a077e44943382604051610460929190611673565b60065442106107195760405162461bcd60e51b815260040161052f906116c2565b336000908152600e602052604090205460ff16151560011461074d5760405162461bcd60e51b815260040161052f9061161d565b336000908152600e60205260408120805460ff1916905560058054600192906107779084906116d2565b90915550600090505b600d5481101561088557336001600160a01b0316600d82815481106107a7576107a761162d565b6000918252602090912001546001600160a01b03160361087357600d80546107d1906001906116e5565b815481106107e1576107e161162d565b600091825260209091200154600d80546001600160a01b03909216918390811061080d5761080d61162d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600d80548061084c5761084c6116f8565b600082815260209020810160001990810180546001600160a01b0319169055019055610885565b8061087d81611659565b915050610780565b507f90cd9e65b809d22b37179b3997ffde6ac5df8905f83e2af169f9dcfbfd824d53336040516108b59190611176565b60405180910390a1565b6108c7610ec2565b6108d16000610eec565b565b6108db610ec2565b6005548110156108fd5760405162461bcd60e51b815260040161052f90611768565b60048190556040517f7912a16bc65fddc53602b6a128feb835b934d3d374e62b1d229f0ea0b0544664906104609083906110f2565b61093a610ec2565b600654811161095b5760405162461bcd60e51b815260040161052f906117bd565b60078190556040517f64fe254a049b2bf9f5756beb1fce549a5971b13c81378906e2152d25972b90bb906104609083906110f2565b610998610ec2565b60036109a482826113da565b507f848e9f060382bf958555423cce59bb0b82d362236369f776dc2bc7b5db192b5d60036040516104609190611517565b336000908152600e602052604090205460ff161515600114610a095760405162461bcd60e51b815260040161052f9061161d565b600854421115610a2b5760405162461bcd60e51b815260040161052f90611801565b6009548282604051602001610a41929190611824565b6040516020818303038152906040528051906020012014610a745760405162461bcd60e51b815260040161052f90611865565b600c546040516370a0823160e01b81526001600160a01b03909116906370a0823190610aa4903390600401611176565b602060405180830381865afa158015610ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae59190611880565b15610b025760405162461bcd60e51b815260040161052f906118ce565b600c546040516340d097c360e01b81526001600160a01b03909116906340d097c390610b32903390600401611176565b600060405180830381600087803b158015610b4c57600080fd5b505af1158015610b60573d6000803e3d6000fd5b505050505050565b6001805461047890611311565b600d8181548110610b8557600080fd5b6000918252602090912001546001600160a01b0316905081565b6002805461047890611311565b610bb4610ec2565b6006548111610bd55760405162461bcd60e51b815260040161052f90611925565b60068190556040517f83f749c39e7f10426bc8d591c61bcbac26fea26bf5ed757ed6cf0a1c753be269906104609083906110f2565b610c12610ec2565b6002610c1e82826113da565b507fd65307e9549d188f5ca686b92113466953e2c86f75071c922cb6c06a3a52d16860026040516104609190611517565b610c57610ec2565b6006544210610c785760405162461bcd60e51b815260040161052f906116c2565b600c546040516339a0c6f960e01b81526001600160a01b03909116906339a0c6f990610ca89084906004016110d2565b600060405180830381600087803b158015610cc257600080fd5b505af1158015610cd6573d6000803e3d6000fd5b5050505050565b6060600d805480602002602001604051908101604052809291908181526020018280548015610d3557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d17575b5050505050905090565b610d47610ec2565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517f28abb6d14a7f6e94196258e3c3acf0afce19ef39ea4ffe24e4231b9b4250f4449161046091611176565b6006544210610db45760405162461bcd60e51b815260040161052f906116c2565b336000908152600e602052604090205460ff1615610de45760405162461bcd60e51b815260040161052f90611969565b336000818152600e60205260408120805460ff19166001908117909155600d805480830182559083527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b03191690931790925560058054909190610e539084906116e5565b90915550506040517f6464f1c0b927235997ea56a096b2a63209270b55e0bce7589dd8996e79806e6f906108b5903390611176565b610e90610ec2565b6001600160a01b038116610eb65760405162461bcd60e51b815260040161052f906119bc565b610ebf81610eec565b50565b600f546001600160a01b031633146108d15760405162461bcd60e51b815260040161052f906119fe565b600f80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715610f7a57610f7a610f3e565b6040525050565b6000610f8c60405190565b9050610f988282610f54565b919050565b600067ffffffffffffffff821115610fb757610fb7610f3e565b601f19601f83011660200192915050565b82818337506000910152565b6000610fe7610fe284610f9d565b610f81565b90508281526020810184848401111561100257611002600080fd5b61100d848285610fc8565b509392505050565b600082601f83011261102957611029600080fd5b8135611039848260208601610fd4565b949350505050565b60006020828403121561105657611056600080fd5b813567ffffffffffffffff81111561107057611070600080fd5b61103984828501611015565b60005b8381101561109757818101518382015260200161107f565b50506000910152565b60006110aa825190565b8084526020840193506110c181856020860161107c565b601f01601f19169290920192915050565b602080825281016110e381846110a0565b9392505050565b805b82525050565b6020810161110082846110ea565b92915050565b60006001600160a01b038216611100565b61112081611106565b8114610ebf57600080fd5b803561110081611117565b60006020828403121561114b5761114b600080fd5b6000611039848461112b565b8015156110ec565b602081016111008284611157565b6110ec81611106565b60208101611100828461116d565b80611120565b803561110081611184565b600080604083850312156111ab576111ab600080fd5b60006111b7858561118a565b92505060206111c88582860161118a565b9150509250929050565b6000602082840312156111e7576111e7600080fd5b6000611039848461118a565b60008083601f84011261120857611208600080fd5b50813567ffffffffffffffff81111561122357611223600080fd5b60208301915083600182028301111561123e5761123e600080fd5b9250929050565b6000806020838503121561125b5761125b600080fd5b823567ffffffffffffffff81111561127557611275600080fd5b611281858286016111f3565b92509250509250929050565b6000611299838361116d565b505060200190565b60006112ab825190565b80845260209384019383018060005b838110156112df5781516112ce888261128d565b9750602083019250506001016112ba565b509495945050505050565b602080825281016110e381846112a1565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061132557607f821691505b602082108103611337576113376112fb565b50919050565b60006111006113498381565b90565b6113558361133d565b815460001960089490940293841b1916921b91909117905550565b600061137d81848461134c565b505050565b8181101561139d57611395600082611370565b600101611382565b5050565b601f82111561137d576000818152602090206020601f850104810160208510156113c85750805b610cd66020601f860104830182611382565b815167ffffffffffffffff8111156113f4576113f4610f3e565b6113fe8254611311565b6114098282856113a1565b6020601f83116001811461143d57600084156114255750858201515b600019600886021c1981166002860217865550610b60565b600085815260208120601f198616915b8281101561146d578885015182556020948501946001909201910161144d565b868310156114895784890151600019601f89166008021c191682555b600160028802018855505050505050505050565b600081546114aa81611311565b8085526020850194506001821680156114ca57600181146114e05761150e565b60ff19831686526020821515028601935061150e565b60008581526020902060005b83811015611508578154888201526001909101906020016114ec565b87019450505b50505092915050565b602080825281016110e3818461149d565b601781526000602082017f4576656e742068617320616c726561647920656e646564000000000000000000815291505b5060200190565b6020808252810161110081611528565b602f81526000602082017f52656564656d61626c652074696d65206d75737420626520677265617465722081526e7468616e2073746172742074696d6560881b602082015291505b5060400190565b602080825281016111008161156f565b604081016115dc82856110ea565b6110e360208301846110ea565b601881526000602082017f596f7520646f206e6f7420686176652061207469636b6574000000000000000081529150611558565b60208082528101611100816115e9565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361166c5761166c611643565b5060010190565b60408101611681828561116d565b6110e3602083018461116d565b601981526000602082017f4576656e742068617320616c726561647920737461727465640000000000000081529150611558565b602080825281016111008161168e565b8082018082111561110057611100611643565b8181038181111561110057611100611643565b634e487b7160e01b600052603160045260246000fd5b604081526000602082017f546f74616c207469636b657473206d757374206265206772656174657220746881527f616e206f7220657175616c20746f2072656d61696e696e67207469636b657473602082015291506115b7565b602080825281016111008161170e565b602881526000602082017f456e642074696d65206d7573742062652067726561746572207468616e2073748152676172742074696d6560c01b602082015291506115b7565b6020808252810161110081611778565b601e81526000602082017f596f752063616e6e6f742072656564656d20796f7572204e465420796574000081529150611558565b60208082528101611100816117cd565b600061181e838584610fc8565b50500190565b6000611039828486611811565b601881526000602082017f53656372657420776f726420697320696e636f7272656374000000000000000081529150611558565b6020808252810161110081611831565b805161110081611184565b60006020828403121561189557611895600080fd5b60006110398484611875565b6016815260006020820175165bdd48185b1c9958591e481a185d9948184813919560521b81529150611558565b60208082528101611100816118a1565b602a81526000602082017f53746172742074696d65206d7573742062652067726561746572207468616e2081526973746172742074696d6560b01b602082015291506115b7565b60208082528101611100816118de565b601981526000602082017f596f7520616c726561647920686176652061207469636b65740000000000000081529150611558565b6020808252810161110081611935565b602681526000602082017f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015291506115b7565b6020808252810161110081611979565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000611558565b60208082528101611100816119cc56fea2646970667358221220339a0ec3f2fd82d661ef94af41bfa493c4b9acfe46b59ecde317501f7cd6d57864736f6c63430008130033a2646970667358221220d06af51a2e7447da06cdc145a73d68ade9fe5ef0bd1ce1908a94612b493231d464736f6c63430008130033", + "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620000525760003560e01c806334cf562b14620000575780635bad5c21146200007957806364493ac314620000b4578063e702c15314620000dc575b600080fd5b6200006160005481565b604051620000709190620006aa565b60405180910390f35b620000a56200008a366004620006c8565b6001602052600090815260409020546001600160a01b031681565b6040516200007091906200073f565b620000cb620000c5366004620006c8565b620000f5565b6040516200007093929190620007b3565b620000f3620000ed36600462000a4c565b620001b5565b005b6002602052600090815260409020805460018201805460ff90921692916200011d9062000ade565b80601f01602080910402602001604051908101604052809291908181526020018280546200014b9062000ade565b80156200019c5780601f1062000170576101008083540402835291602001916200019c565b820191906000526020600020905b8154815290600101906020018083116200017e57829003601f168201915b505050600290930154919250506001600160a01b031683565b4281600081518110620001cc57620001cc62000b24565b60200260200101511015620001fe5760405162461bcd60e51b8152600401620001f59062000b66565b60405180910390fd5b8060008151811062000214576200021462000b24565b6020026020010151816001600281111562000233576200023362000b0e565b8151811062000246576200024662000b24565b6020026020010151116200026e5760405162461bcd60e51b8152600401620001f59062000ba0565b60008160028151811062000286576200028662000b24565b602002602001015111620002ae5760405162461bcd60e51b8152600401620001f59062000bda565b600082600481518110620002c657620002c662000b24565b60200260200101518360056006811115620002e557620002e562000b0e565b81518110620002f857620002f862000b24565b60200260200101518460068081111562000316576200031662000b0e565b8151811062000329576200032962000b24565b60200260200101516040516200033f9062000686565b6200034d9392919062000bec565b604051809103906000f0801580156200036a573d6000803e3d6000fd5b5060408051600280825260608201835292935060009290916020830190803683370190505090503381600081518110620003a857620003a862000b24565b6001600160a01b03909216602092830291909101909101528181600181518110620003d757620003d762000b24565b60200260200101906001600160a01b031690816001600160a01b03168152505060008185856040516200040a9062000694565b620004189392919062000d87565b604051809103906000f08015801562000435573d6000803e3d6000fd5b5060405163f2fde38b60e01b81529091506001600160a01b0384169063f2fde38b906200046790849060040162000dc6565b600060405180830381600087803b1580156200048257600080fd5b505af115801562000497573d6000803e3d6000fd5b505060405163f2fde38b60e01b81526001600160a01b038416925063f2fde38b9150620004c990339060040162000dc6565b600060405180830381600087803b158015620004e457600080fd5b505af1158015620004f9573d6000803e3d6000fd5b50506000805492509050806200050f8362000dec565b909155505060408051606081019091526001815260208101866000815181106200053d576200053d62000b24565b60209081029190910181015182526001600160a01b0384169181019190915260008054815260028252604090208251815460ff19169015151781559082015160018201906200058d908262000eb8565b5060409190910151600290910180546001600160a01b0319166001600160a01b039092169190911790556000858181518110620005ce57620005ce62000b24565b6020026020010151604051602001620005e8919062000fae565b60408051808303601f1901815291815281516020928301206000818152600190935290822080546001600160a01b0319166001600160a01b03861617905591507f792061a44a6be3c666f6763945c46e98e3fcfa677607d5e36b08fb56be451fdd908790815181106200065f576200065f62000b24565b602002602001015160405162000676919062000fbc565b60405180910390a1505050505050565b6117c48062000fd083390190565b612276806200279483390190565b805b82525050565b60208101620006ba8284620006a2565b92915050565b8035620006ba565b600060208284031215620006df57620006df600080fd5b6000620006ed8484620006c0565b949350505050565b6000620006ba6001600160a01b0383166200070e565b90565b6001600160a01b031690565b6000620006ba82620006f5565b6000620006ba826200071a565b620006a48162000727565b60208101620006ba828462000734565b801515620006a4565b60005b83811015620007755781810151838201526020016200075b565b50506000910152565b600062000789825190565b808452602084019350620007a281856020860162000758565b601f01601f19169290920192915050565b60608101620007c382866200074f565b8181036020830152620007d781856200077e565b9050620006ed604083018462000734565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715620008275762000827620007e8565b6040525050565b60006200083a60405190565b9050620008488282620007fe565b919050565b600067ffffffffffffffff8211156200086a576200086a620007e8565b5060209081020190565b600067ffffffffffffffff821115620008915762000891620007e8565b601f19601f83011660200192915050565b82818337506000910152565b6000620008c5620008bf8462000874565b6200082e565b905082815260208101848484011115620008e257620008e2600080fd5b620008ef848285620008a2565b509392505050565b600082601f8301126200090d576200090d600080fd5b8135620006ed848260208601620008ae565b600062000930620008bf846200084d565b83815290506020808201908402830185811115620009515762000951600080fd5b835b818110156200099857803567ffffffffffffffff811115620009785762000978600080fd5b808601620009878982620008f7565b855250506020928301920162000953565b5050509392505050565b600082601f830112620009b857620009b8600080fd5b8135620006ed8482602086016200091f565b6000620009db620008bf846200084d565b83815290506020808201908402830185811115620009fc57620009fc600080fd5b835b8181101562000998578062000a148882620006c0565b84525060209283019201620009fe565b600082601f83011262000a3a5762000a3a600080fd5b8135620006ed848260208601620009ca565b6000806040838503121562000a645762000a64600080fd5b823567ffffffffffffffff81111562000a805762000a80600080fd5b62000a8e85828601620009a2565b925050602083013567ffffffffffffffff81111562000ab05762000ab0600080fd5b62000abe8582860162000a24565b9150509250929050565b634e487b7160e01b600052602260045260246000fd5b60028104600182168062000af357607f821691505b60208210810362000b085762000b0862000ac8565b50919050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6012815260006020820171496e76616c6964207374617274204461746560701b815291505b5060200190565b60208082528101620006ba8162000b3a565b601081526000602082016f496e76616c696420656e64204461746560801b8152915062000b5f565b60208082528101620006ba8162000b78565b601081526000602082016f496e76616c696420636170616369747960801b8152915062000b5f565b60208082528101620006ba8162000bb2565b6060808252810162000bff81866200077e565b9050818103602083015262000c1581856200077e565b9050818103604083015262000c2b81846200077e565b95945050505050565b60006001600160a01b038216620006ba565b620006a48162000c34565b600062000c5f838362000c46565b505060200190565b600062000c72825190565b80845260209384019383018060005b8381101562000caa57815162000c98888262000c51565b97506020830192505060010162000c81565b509495945050505050565b600062000cc383836200077e565b9392505050565b600062000cd5825190565b8084526020840193508360208202850162000cf08560200190565b8060005b8581101562000d29578484038952815162000d10858262000cb5565b94506020830160209a909a019992505060010162000cf4565b5091979650505050505050565b600062000c5f8383620006a2565b600062000d4f825190565b80845260209384019383018060005b8381101562000caa57815162000d75888262000d36565b97506020830192505060010162000d5e565b6060808252810162000d9a818662000c67565b9050818103602083015262000db0818562000cca565b9050818103604083015262000c2b818462000d44565b60208101620006ba828462000c46565b634e487b7160e01b600052601160045260246000fd5b6000600019820362000e025762000e0262000dd6565b5060010190565b6000620006ba6200070b8381565b62000e228362000e09565b815460001960089490940293841b1916921b91909117905550565b600062000e4c81848462000e17565b505050565b8181101562000e705762000e6760008262000e3d565b60010162000e51565b5050565b601f82111562000e4c576000818152602090206020601f8501048101602085101562000e9d5750805b62000eb16020601f86010483018262000e51565b5050505050565b815167ffffffffffffffff81111562000ed55762000ed5620007e8565b62000ee1825462000ade565b62000eee82828562000e74565b6020601f83116001811462000f25576000841562000f0c5750858201515b600019600886021c198116600286021786555062000f81565b600085815260208120601f198616915b8281101562000f57578885015182556020948501946001909201910162000f35565b8683101562000f745784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b600062000f94825190565b62000fa481856020860162000758565b9290920192915050565b600062000cc3828462000f89565b6020808252810162000cc381846200077e56fe60806040523480156200001157600080fd5b50604051620017c4380380620017c483398101604081905262000034916200020e565b82826000620000448382620003b7565b506001620000538282620003b7565b505050620000706200006a6200008860201b60201c565b6200008c565b60086200007e8282620003b7565b5050505062000487565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b03821117156200011c576200011c620000de565b6040525050565b60006200012f60405190565b90506200013d8282620000f4565b919050565b60006001600160401b038211156200015e576200015e620000de565b601f19601f83011660200192915050565b60005b838110156200018c57818101518382015260200162000172565b50506000910152565b6000620001ac620001a68462000142565b62000123565b905082815260208101848484011115620001c957620001c9600080fd5b620001d68482856200016f565b509392505050565b600082601f830112620001f457620001f4600080fd5b81516200020684826020860162000195565b949350505050565b600080600060608486031215620002285762000228600080fd5b83516001600160401b03811115620002435762000243600080fd5b6200025186828701620001de565b93505060208401516001600160401b03811115620002725762000272600080fd5b6200028086828701620001de565b92505060408401516001600160401b03811115620002a157620002a1600080fd5b620002af86828701620001de565b9150509250925092565b634e487b7160e01b600052602260045260246000fd5b600281046001821680620002e457607f821691505b602082108103620002f957620002f9620002b9565b50919050565b6000620003106200030d8381565b90565b92915050565b6200032183620002ff565b815460001960089490940293841b1916921b91909117905550565b60006200034b81848462000316565b505050565b818110156200036f57620003666000826200033c565b60010162000350565b5050565b601f8211156200034b576000818152602090206020601f850104810160208510156200039c5750805b620003b06020601f86010483018262000350565b5050505050565b81516001600160401b03811115620003d357620003d3620000de565b620003df8254620002cf565b620003ec82828562000373565b6020601f8311600181146200042357600084156200040a5750858201515b600019600886021c19811660028602178655506200047f565b600085815260208120601f198616915b8281101562000455578885015182556020948501946001909201910162000433565b86831015620004725784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b61132d80620004976000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80636c0360eb116100ad578063a22cb46511610071578063a22cb46514610241578063b88d4fde14610254578063c87b56dd14610267578063e985e9c51461027a578063f2fde38b146102b657600080fd5b80636c0360eb146101f857806370a0823114610200578063715018a6146102205780638da5cb5b1461022857806395d89b411461023957600080fd5b806323b872dd116100f457806323b872dd1461019957806339a0c6f9146101ac57806340d097c3146101bf57806342842e0e146101d25780636352211e146101e557600080fd5b806301ffc9a71461012657806306fdde031461014f578063081812fc14610164578063095ea7b314610184575b600080fd5b6101396101343660046109bf565b6102c9565b60405161014691906109ea565b60405180910390f35b61015761031b565b6040516101469190610a4e565b610177610172366004610a77565b6103ad565b6040516101469190610ab2565b610197610192366004610ad4565b6103d4565b005b6101976101a7366004610b11565b6103f5565b6101976101ba366004610c5c565b61040d565b6101976101cd366004610c97565b610425565b6101976101e0366004610b11565b610452565b6101776101f3366004610a77565b610472565b6101576104a7565b61021361020e366004610c97565b610535565b6040516101469190610cbe565b610197610579565b6006546001600160a01b0316610177565b61015761058d565b61019761024f366004610cdf565b61059c565b610197610262366004610d12565b6105b4565b610157610275366004610a77565b6105cc565b610139610288366004610d91565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6101976102c4366004610c97565b610669565b60006001600160e01b031982166380ac58cd60e01b14806102fa57506001600160e01b03198216635b5e139f60e01b145b8061031557506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461032a90610dda565b80601f016020809104026020016040519081016040528092919081815260200182805461035690610dda565b80156103a35780601f10610378576101008083540402835291602001916103a3565b820191906000526020600020905b81548152906001019060200180831161038657829003601f168201915b5050505050905090565b60006103b8826106a3565b506000908152600460205260409020546001600160a01b031690565b60405162461bcd60e51b81526004016103ec90610e35565b60405180910390fd5b60405162461bcd60e51b81526004016103ec90610e79565b6104156106d7565b60086104218282610f24565b5050565b61042d6106d7565b600061043860075490565b9050610448600780546001019055565b6104218282610701565b61046d838383604051806020016040528060008152506105b4565b505050565b6000818152600260205260408120546001600160a01b0316806103155760405162461bcd60e51b81526004016103ec9061101c565b600880546104b490610dda565b80601f01602080910402602001604051908101604052809291908181526020018280546104e090610dda565b801561052d5780601f106105025761010080835404028352916020019161052d565b820191906000526020600020905b81548152906001019060200180831161051057829003601f168201915b505050505081565b60006001600160a01b03821661055d5760405162461bcd60e51b81526004016103ec90611075565b506001600160a01b031660009081526003602052604090205490565b6105816106d7565b61058b600061071b565b565b60606001805461032a90610dda565b60405162461bcd60e51b81526004016103ec906110b9565b60405162461bcd60e51b81526004016103ec906110fd565b60606105d7826106a3565b600880546105e490610dda565b80601f016020809104026020016040519081016040528092919081815260200182805461061090610dda565b801561065d5780601f106106325761010080835404028352916020019161065d565b820191906000526020600020905b81548152906001019060200180831161064057829003601f168201915b50505050509050919050565b6106716106d7565b6001600160a01b0381166106975760405162461bcd60e51b81526004016103ec90611150565b6106a08161071b565b50565b6000818152600260205260409020546001600160a01b03166106a05760405162461bcd60e51b81526004016103ec9061101c565b6006546001600160a01b0316331461058b5760405162461bcd60e51b81526004016103ec90611192565b61042182826040518060200160405280600081525061076d565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61077783836107a0565b610784600084848461089b565b61046d5760405162461bcd60e51b81526004016103ec906111f1565b6001600160a01b0382166107c65760405162461bcd60e51b81526004016103ec90611233565b6000818152600260205260409020546001600160a01b0316156107fb5760405162461bcd60e51b81526004016103ec90611277565b6000818152600260205260409020546001600160a01b0316156108305760405162461bcd60e51b81526004016103ec90611277565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b1561099157604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906108df903390899088908890600401611287565b6020604051808303816000875af192505050801561091a575060408051601f3d908101601f19168201909252610917918101906112d6565b60015b610977573d808015610948576040519150601f19603f3d011682016040523d82523d6000602084013e61094d565b606091505b50805160000361096f5760405162461bcd60e51b81526004016103ec906111f1565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610995565b5060015b949350505050565b6001600160e01b031981165b81146106a057600080fd5b80356103158161099d565b6000602082840312156109d4576109d4600080fd5b600061099584846109b4565b8015155b82525050565b6020810161031582846109e0565b60005b83811015610a135781810151838201526020016109fb565b50506000910152565b6000610a26825190565b808452602084019350610a3d8185602086016109f8565b601f01601f19169290920192915050565b60208082528101610a5f8184610a1c565b9392505050565b806109a9565b803561031581610a66565b600060208284031215610a8c57610a8c600080fd5b60006109958484610a6c565b60006001600160a01b038216610315565b6109e481610a98565b602081016103158284610aa9565b6109a981610a98565b803561031581610ac0565b60008060408385031215610aea57610aea600080fd5b6000610af68585610ac9565b9250506020610b0785828601610a6c565b9150509250929050565b600080600060608486031215610b2957610b29600080fd5b6000610b358686610ac9565b9350506020610b4686828701610ac9565b9250506040610b5786828701610a6c565b9150509250925092565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715610b9d57610b9d610b61565b6040525050565b6000610baf60405190565b9050610bbb8282610b77565b919050565b600067ffffffffffffffff821115610bda57610bda610b61565b601f19601f83011660200192915050565b82818337506000910152565b6000610c0a610c0584610bc0565b610ba4565b905082815260208101848484011115610c2557610c25600080fd5b610c30848285610beb565b509392505050565b600082601f830112610c4c57610c4c600080fd5b8135610995848260208601610bf7565b600060208284031215610c7157610c71600080fd5b813567ffffffffffffffff811115610c8b57610c8b600080fd5b61099584828501610c38565b600060208284031215610cac57610cac600080fd5b60006109958484610ac9565b806109e4565b602081016103158284610cb8565b8015156109a9565b803561031581610ccc565b60008060408385031215610cf557610cf5600080fd5b6000610d018585610ac9565b9250506020610b0785828601610cd4565b60008060008060808587031215610d2b57610d2b600080fd5b6000610d378787610ac9565b9450506020610d4887828801610ac9565b9350506040610d5987828801610a6c565b925050606085013567ffffffffffffffff811115610d7957610d79600080fd5b610d8587828801610c38565b91505092959194509250565b60008060408385031215610da757610da7600080fd5b6000610db38585610ac9565b9250506020610b0785828601610ac9565b634e487b7160e01b600052602260045260246000fd5b600281046001821680610dee57607f821691505b602082108103610e0057610e00610dc4565b50919050565b6015815260006020820174105c1c1c9bdd99481a5cdb89dd08185b1b1bddd959605a1b815291505b5060200190565b6020808252810161031581610e06565b601a81526000602082017f7472616e7366657246726f6d2069736e277420616c6c6f77656400000000000081529150610e2e565b6020808252810161031581610e45565b6000610315610e958381565b90565b610ea183610e89565b815460001960089490940293841b1916921b91909117905550565b600061046d818484610e98565b8181101561042157610edc600082610ebc565b600101610ec9565b601f82111561046d576000818152602090206020601f85010481016020851015610f0b5750805b610f1d6020601f860104830182610ec9565b5050505050565b815167ffffffffffffffff811115610f3e57610f3e610b61565b610f488254610dda565b610f53828285610ee4565b6020601f831160018114610f875760008415610f6f5750858201515b600019600886021c1981166002860217865550610fe0565b600085815260208120601f198616915b82811015610fb75788850151825560209485019460019092019101610f97565b86831015610fd35784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b601881526000602082017f4552433732313a20696e76616c696420746f6b656e204944000000000000000081529150610e2e565b6020808252810161031581610fe8565b602981526000602082017f4552433732313a2061646472657373207a65726f206973206e6f7420612076618152683634b21037bbb732b960b91b602082015291505b5060400190565b602080825281016103158161102c565b601f81526000602082017f736574417070726f76616c466f72416c6c2069736e277420616c6c6f7765640081529150610e2e565b6020808252810161031581611085565b601e81526000602082017f736166655472616e7366657246726f6d2069736e277420616c6c6f776564000081529150610e2e565b60208082528101610315816110c9565b602681526000602082017f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b6020820152915061106e565b602080825281016103158161110d565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000610e2e565b6020808252810161031581611160565b603281526000602082017f4552433732313a207472616e7366657220746f206e6f6e20455243373231526581527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6020820152915061106e565b60208082528101610315816111a2565b60208082527f4552433732313a206d696e7420746f20746865207a65726f206164647265737391019081526000610e2e565b6020808252810161031581611201565b601c81526000602082017f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081529150610e2e565b6020808252810161031581611243565b608081016112958287610aa9565b6112a26020830186610aa9565b6112af6040830185610cb8565b81810360608301526112c18184610a1c565b9695505050505050565b80516103158161099d565b6000602082840312156112eb576112eb600080fd5b600061099584846112cb56fea26469706673582212200ddc5e6c148d091a133a3a3968d0c48e090f5a57a9ed47dbbea0d5e683b9a7bb64736f6c6343000813003360806040523480156200001157600080fd5b506040516200227638038062002276833981016040819052620000349162000599565b6200003f33620001f5565b8260008151811062000055576200005562000644565b6020908102919091010151600b80546001600160a01b0319166001600160a01b039092169190911790558260018151811062000095576200009562000644565b6020908102919091010151600c80546001600160a01b0319166001600160a01b0390921691909117905581600081518110620000d557620000d562000644565b602002602001015160009081620000ed919062000752565b508160018151811062000104576200010462000644565b6020026020010151600190816200011c919062000752565b508160028151811062000133576200013362000644565b6020026020010151600290816200014b919062000752565b508160038151811062000162576200016262000644565b6020026020010151600390816200017a919062000752565b508060008151811062000191576200019162000644565b602090810291909101015160065580600181518110620001b557620001b562000644565b602090810291909101015160075580600281518110620001d957620001d962000644565b6020026020010151600581905560048190555050505062000822565b600f80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b038211171562000285576200028562000247565b6040525050565b60006200029860405190565b9050620002a682826200025d565b919050565b60006001600160401b03821115620002c757620002c762000247565b5060209081020190565b60006001600160a01b0382165b92915050565b620002ef81620002d1565b8114620002fb57600080fd5b50565b8051620002de81620002e4565b6000620003226200031c84620002ab565b6200028c565b83815290506020808201908402830185811115620003435762000343600080fd5b835b818110156200036b57806200035b8882620002fe565b8452506020928301920162000345565b5050509392505050565b600082601f8301126200038b576200038b600080fd5b81516200039d8482602086016200030b565b949350505050565b60006001600160401b03821115620003c157620003c162000247565b601f19601f83011660200192915050565b60005b83811015620003ef578181015183820152602001620003d5565b50506000910152565b6000620004096200031c84620003a5565b905082815260208101848484011115620004265762000426600080fd5b62000433848285620003d2565b509392505050565b600082601f830112620004515762000451600080fd5b81516200039d848260208601620003f8565b6000620004746200031c84620002ab565b83815290506020808201908402830185811115620004955762000495600080fd5b835b818110156200036b5780516001600160401b03811115620004bb57620004bb600080fd5b808601620004ca89826200043b565b855250506020928301920162000497565b600082601f830112620004f157620004f1600080fd5b81516200039d84826020860162000463565b80620002ef565b8051620002de8162000503565b6000620005286200031c84620002ab565b83815290506020808201908402830185811115620005495762000549600080fd5b835b818110156200036b57806200056188826200050a565b845250602092830192016200054b565b600082601f830112620005875762000587600080fd5b81516200039d84826020860162000517565b600080600060608486031215620005b357620005b3600080fd5b83516001600160401b03811115620005ce57620005ce600080fd5b620005dc8682870162000375565b93505060208401516001600160401b03811115620005fd57620005fd600080fd5b6200060b86828701620004db565b92505060408401516001600160401b038111156200062c576200062c600080fd5b6200063a8682870162000571565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602260045260246000fd5b6002810460018216806200068557607f821691505b6020821081036200069a576200069a6200065a565b50919050565b6000620002de620006ae8381565b90565b620006bc83620006a0565b815460001960089490940293841b1916921b91909117905550565b6000620006e6818484620006b1565b505050565b818110156200070a5762000701600082620006d7565b600101620006eb565b5050565b601f821115620006e6576000818152602090206020601f85010481016020851015620007375750805b6200074b6020601f860104830182620006eb565b5050505050565b81516001600160401b038111156200076e576200076e62000247565b6200077a825462000670565b620007878282856200070e565b6020601f831160018114620007be5760008415620007a55750858201515b600019600886021c19811660028602178655506200081a565b600085815260208120601f198616915b82811015620007f05788850151825560209485019460019092019101620007ce565b868310156200080d5784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b611a4480620008326000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c8063749956891161010f578063bfebbda8116100a2578063e33696f711610071578063e33696f7146103d8578063e38096f0146103ed578063edca914c14610400578063f2fde38b1461040857600080fd5b8063bfebbda814610396578063c0af2346146103a9578063d6bd5db1146103bc578063d9b6225e146103c557600080fd5b80638043c9c0116100de5780638043c9c0146103625780638a89c14c1461036a5780638da5cb5b1461037d5780639434571b1461038e57600080fd5b806374995689146103165780637721fe5c1461032957806377d1efb41461033c5780637b1ac2511461034f57600080fd5b806355b6ec1d116101875780636fdbd3f6116101565780636fdbd3f6146102ea578063713a3c93146102fd578063715018a614610305578063740ea9a61461030d57600080fd5b806355b6ec1d146102a857806361cec060146102bb57806364471452146102ce5780636afadefb146102d757600080fd5b806320214134116101c3578063202141341461026e578063270821b61461028e578063297449af146102975780632a6ca755146102a057600080fd5b806305ccfd33146101f5578063089cdd0c1461020a57806309e52c12146102285780631f4894b11461023e575b600080fd5b610208610203366004611041565b61041b565b005b61021261046b565b60405161021f91906110d2565b60405180910390f35b61023160085481565b60405161021f91906110f2565b61026161024c366004611136565b600e6020526000908152604090205460ff1681565b60405161021f919061115f565b600b54610281906001600160a01b031681565b60405161021f9190611176565b61023160095481565b61023160055481565b6102126104f9565b6102086102b6366004611195565b610506565b600c54610281906001600160a01b031681565b61023160045481565b6102086102e5366004611136565b6105a2565b600a54610281906001600160a01b031681565b6102086106f8565b6102086108bf565b61023160065481565b6102086103243660046111d2565b6108d3565b6102086103373660046111d2565b610932565b61020861034a366004611041565b610990565b61020861035d366004611245565b6109d5565b610212610b68565b6102816103783660046111d2565b610b75565b600f546001600160a01b0316610281565b610212610b9f565b6102086103a43660046111d2565b610bac565b6102086103b7366004611041565b610c0a565b61023160075481565b6102086103d3366004611041565b610c4f565b6103e0610cdd565b60405161021f91906112ea565b6102086103fb366004611136565b610d3f565b610208610d93565b610208610416366004611136565b610e88565b610423610ec2565b600161042f82826113da565b507f43abd8587b7e2fd4918308a13f0cf9759cdbba18adb47403d2779a67dac06ef860016040516104609190611517565b60405180910390a150565b6000805461047890611311565b80601f01602080910402602001604051908101604052809291908181526020018280546104a490611311565b80156104f15780601f106104c6576101008083540402835291602001916104f1565b820191906000526020600020905b8154815290600101906020018083116104d457829003601f168201915b505050505081565b6003805461047890611311565b61050e610ec2565b60075442106105385760405162461bcd60e51b815260040161052f9061155f565b60405180910390fd5b60065482101561055a5760405162461bcd60e51b815260040161052f906115be565b600882905560098190556040517ff2ccaa626cc9d4a494f70edcc2e8e06f1f533d1494b4000e6b61d523bd537bf39061059690849084906115ce565b60405180910390a15050565b60075442106105c35760405162461bcd60e51b815260040161052f9061155f565b336000908152600e602052604090205460ff1615156001146105f75760405162461bcd60e51b815260040161052f9061161d565b336000908152600e6020526040808220805460ff199081169091556001600160a01b0384168352908220805490911660011790555b600d548110156106c657336001600160a01b0316600d82815481106106535761065361162d565b6000918252602090912001546001600160a01b0316036106b45781600d82815481106106815761068161162d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506106c6565b806106be81611659565b91505061062c565b507f7478cc8eb40d9aeecde2e2f399de4bfeb61e737a737f3412f2a6043a077e44943382604051610460929190611673565b60065442106107195760405162461bcd60e51b815260040161052f906116c2565b336000908152600e602052604090205460ff16151560011461074d5760405162461bcd60e51b815260040161052f9061161d565b336000908152600e60205260408120805460ff1916905560058054600192906107779084906116d2565b90915550600090505b600d5481101561088557336001600160a01b0316600d82815481106107a7576107a761162d565b6000918252602090912001546001600160a01b03160361087357600d80546107d1906001906116e5565b815481106107e1576107e161162d565b600091825260209091200154600d80546001600160a01b03909216918390811061080d5761080d61162d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600d80548061084c5761084c6116f8565b600082815260209020810160001990810180546001600160a01b0319169055019055610885565b8061087d81611659565b915050610780565b507f90cd9e65b809d22b37179b3997ffde6ac5df8905f83e2af169f9dcfbfd824d53336040516108b59190611176565b60405180910390a1565b6108c7610ec2565b6108d16000610eec565b565b6108db610ec2565b6005548110156108fd5760405162461bcd60e51b815260040161052f90611768565b60048190556040517f7912a16bc65fddc53602b6a128feb835b934d3d374e62b1d229f0ea0b0544664906104609083906110f2565b61093a610ec2565b600654811161095b5760405162461bcd60e51b815260040161052f906117bd565b60078190556040517f64fe254a049b2bf9f5756beb1fce549a5971b13c81378906e2152d25972b90bb906104609083906110f2565b610998610ec2565b60036109a482826113da565b507f848e9f060382bf958555423cce59bb0b82d362236369f776dc2bc7b5db192b5d60036040516104609190611517565b336000908152600e602052604090205460ff161515600114610a095760405162461bcd60e51b815260040161052f9061161d565b600854421115610a2b5760405162461bcd60e51b815260040161052f90611801565b6009548282604051602001610a41929190611824565b6040516020818303038152906040528051906020012014610a745760405162461bcd60e51b815260040161052f90611865565b600c546040516370a0823160e01b81526001600160a01b03909116906370a0823190610aa4903390600401611176565b602060405180830381865afa158015610ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae59190611880565b15610b025760405162461bcd60e51b815260040161052f906118ce565b600c546040516340d097c360e01b81526001600160a01b03909116906340d097c390610b32903390600401611176565b600060405180830381600087803b158015610b4c57600080fd5b505af1158015610b60573d6000803e3d6000fd5b505050505050565b6001805461047890611311565b600d8181548110610b8557600080fd5b6000918252602090912001546001600160a01b0316905081565b6002805461047890611311565b610bb4610ec2565b6006548111610bd55760405162461bcd60e51b815260040161052f90611925565b60068190556040517f83f749c39e7f10426bc8d591c61bcbac26fea26bf5ed757ed6cf0a1c753be269906104609083906110f2565b610c12610ec2565b6002610c1e82826113da565b507fd65307e9549d188f5ca686b92113466953e2c86f75071c922cb6c06a3a52d16860026040516104609190611517565b610c57610ec2565b6006544210610c785760405162461bcd60e51b815260040161052f906116c2565b600c546040516339a0c6f960e01b81526001600160a01b03909116906339a0c6f990610ca89084906004016110d2565b600060405180830381600087803b158015610cc257600080fd5b505af1158015610cd6573d6000803e3d6000fd5b5050505050565b6060600d805480602002602001604051908101604052809291908181526020018280548015610d3557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d17575b5050505050905090565b610d47610ec2565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517f28abb6d14a7f6e94196258e3c3acf0afce19ef39ea4ffe24e4231b9b4250f4449161046091611176565b6006544210610db45760405162461bcd60e51b815260040161052f906116c2565b336000908152600e602052604090205460ff1615610de45760405162461bcd60e51b815260040161052f90611969565b336000818152600e60205260408120805460ff19166001908117909155600d805480830182559083527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b03191690931790925560058054909190610e539084906116e5565b90915550506040517f6464f1c0b927235997ea56a096b2a63209270b55e0bce7589dd8996e79806e6f906108b5903390611176565b610e90610ec2565b6001600160a01b038116610eb65760405162461bcd60e51b815260040161052f906119bc565b610ebf81610eec565b50565b600f546001600160a01b031633146108d15760405162461bcd60e51b815260040161052f906119fe565b600f80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715610f7a57610f7a610f3e565b6040525050565b6000610f8c60405190565b9050610f988282610f54565b919050565b600067ffffffffffffffff821115610fb757610fb7610f3e565b601f19601f83011660200192915050565b82818337506000910152565b6000610fe7610fe284610f9d565b610f81565b90508281526020810184848401111561100257611002600080fd5b61100d848285610fc8565b509392505050565b600082601f83011261102957611029600080fd5b8135611039848260208601610fd4565b949350505050565b60006020828403121561105657611056600080fd5b813567ffffffffffffffff81111561107057611070600080fd5b61103984828501611015565b60005b8381101561109757818101518382015260200161107f565b50506000910152565b60006110aa825190565b8084526020840193506110c181856020860161107c565b601f01601f19169290920192915050565b602080825281016110e381846110a0565b9392505050565b805b82525050565b6020810161110082846110ea565b92915050565b60006001600160a01b038216611100565b61112081611106565b8114610ebf57600080fd5b803561110081611117565b60006020828403121561114b5761114b600080fd5b6000611039848461112b565b8015156110ec565b602081016111008284611157565b6110ec81611106565b60208101611100828461116d565b80611120565b803561110081611184565b600080604083850312156111ab576111ab600080fd5b60006111b7858561118a565b92505060206111c88582860161118a565b9150509250929050565b6000602082840312156111e7576111e7600080fd5b6000611039848461118a565b60008083601f84011261120857611208600080fd5b50813567ffffffffffffffff81111561122357611223600080fd5b60208301915083600182028301111561123e5761123e600080fd5b9250929050565b6000806020838503121561125b5761125b600080fd5b823567ffffffffffffffff81111561127557611275600080fd5b611281858286016111f3565b92509250509250929050565b6000611299838361116d565b505060200190565b60006112ab825190565b80845260209384019383018060005b838110156112df5781516112ce888261128d565b9750602083019250506001016112ba565b509495945050505050565b602080825281016110e381846112a1565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061132557607f821691505b602082108103611337576113376112fb565b50919050565b60006111006113498381565b90565b6113558361133d565b815460001960089490940293841b1916921b91909117905550565b600061137d81848461134c565b505050565b8181101561139d57611395600082611370565b600101611382565b5050565b601f82111561137d576000818152602090206020601f850104810160208510156113c85750805b610cd66020601f860104830182611382565b815167ffffffffffffffff8111156113f4576113f4610f3e565b6113fe8254611311565b6114098282856113a1565b6020601f83116001811461143d57600084156114255750858201515b600019600886021c1981166002860217865550610b60565b600085815260208120601f198616915b8281101561146d578885015182556020948501946001909201910161144d565b868310156114895784890151600019601f89166008021c191682555b600160028802018855505050505050505050565b600081546114aa81611311565b8085526020850194506001821680156114ca57600181146114e05761150e565b60ff19831686526020821515028601935061150e565b60008581526020902060005b83811015611508578154888201526001909101906020016114ec565b87019450505b50505092915050565b602080825281016110e3818461149d565b601781526000602082017f4576656e742068617320616c726561647920656e646564000000000000000000815291505b5060200190565b6020808252810161110081611528565b602f81526000602082017f52656564656d61626c652074696d65206d75737420626520677265617465722081526e7468616e2073746172742074696d6560881b602082015291505b5060400190565b602080825281016111008161156f565b604081016115dc82856110ea565b6110e360208301846110ea565b601881526000602082017f596f7520646f206e6f7420686176652061207469636b6574000000000000000081529150611558565b60208082528101611100816115e9565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361166c5761166c611643565b5060010190565b60408101611681828561116d565b6110e3602083018461116d565b601981526000602082017f4576656e742068617320616c726561647920737461727465640000000000000081529150611558565b602080825281016111008161168e565b8082018082111561110057611100611643565b8181038181111561110057611100611643565b634e487b7160e01b600052603160045260246000fd5b604081526000602082017f546f74616c207469636b657473206d757374206265206772656174657220746881527f616e206f7220657175616c20746f2072656d61696e696e67207469636b657473602082015291506115b7565b602080825281016111008161170e565b602881526000602082017f456e642074696d65206d7573742062652067726561746572207468616e2073748152676172742074696d6560c01b602082015291506115b7565b6020808252810161110081611778565b601e81526000602082017f596f752063616e6e6f742072656564656d20796f7572204e465420796574000081529150611558565b60208082528101611100816117cd565b600061181e838584610fc8565b50500190565b6000611039828486611811565b601881526000602082017f53656372657420776f726420697320696e636f7272656374000000000000000081529150611558565b6020808252810161110081611831565b805161110081611184565b60006020828403121561189557611895600080fd5b60006110398484611875565b6016815260006020820175165bdd48185b1c9958591e481a185d9948184813919560521b81529150611558565b60208082528101611100816118a1565b602a81526000602082017f53746172742074696d65206d7573742062652067726561746572207468616e2081526973746172742074696d6560b01b602082015291506115b7565b60208082528101611100816118de565b601981526000602082017f596f7520616c726561647920686176652061207469636b65740000000000000081529150611558565b6020808252810161110081611935565b602681526000602082017f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015291506115b7565b6020808252810161110081611979565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000611558565b60208082528101611100816119cc56fea2646970667358221220339a0ec3f2fd82d661ef94af41bfa493c4b9acfe46b59ecde317501f7cd6d57864736f6c63430008130033a2646970667358221220d06af51a2e7447da06cdc145a73d68ade9fe5ef0bd1ce1908a94612b493231d464736f6c63430008130033", + "devdoc": { + "author": "LE0xUL", + "details": "This contract is the standard way to create a new event", + "kind": "dev", + "methods": {}, + "title": "MeetdApp Factory", + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "mapEventNum(uint256)": { + "notice": "Mapping to store all the created houses numEvent -> dataEvent" + }, + "mapIdEvent(bytes32)": { + "notice": "Relation between eventId (hash nanoId) and eventAddr" + }, + "numEvents()": { + "notice": "Store the number of created events" + } + }, + "notice": "Create and config New Events", + "version": 1 + }, + "storageLayout": { + "storage": [ + { + "astId": 3672, + "contract": "contracts/factory/MeetdAppFactory.sol:MeetdAppFactory", + "label": "numEvents", + "offset": 0, + "slot": "0", + "type": "t_uint256" + }, + { + "astId": 3678, + "contract": "contracts/factory/MeetdAppFactory.sol:MeetdAppFactory", + "label": "mapIdEvent", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_bytes32,t_contract(MeetdAppEvent)3579)" + }, + { + "astId": 3684, + "contract": "contracts/factory/MeetdAppFactory.sol:MeetdAppFactory", + "label": "mapEventNum", + "offset": 0, + "slot": "2", + "type": "t_mapping(t_uint256,t_struct(dataEvent)3936_storage)" + } + ], + "types": { + "t_bool": { + "encoding": "inplace", + "label": "bool", + "numberOfBytes": "1" + }, + "t_bytes32": { + "encoding": "inplace", + "label": "bytes32", + "numberOfBytes": "32" + }, + "t_contract(MeetdAppEvent)3579": { + "encoding": "inplace", + "label": "contract MeetdAppEvent", + "numberOfBytes": "20" + }, + "t_mapping(t_bytes32,t_contract(MeetdAppEvent)3579)": { + "encoding": "mapping", + "key": "t_bytes32", + "label": "mapping(bytes32 => contract MeetdAppEvent)", + "numberOfBytes": "32", + "value": "t_contract(MeetdAppEvent)3579" + }, + "t_mapping(t_uint256,t_struct(dataEvent)3936_storage)": { + "encoding": "mapping", + "key": "t_uint256", + "label": "mapping(uint256 => struct dataEvent)", + "numberOfBytes": "32", + "value": "t_struct(dataEvent)3936_storage" + }, + "t_string_storage": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(dataEvent)3936_storage": { + "encoding": "inplace", + "label": "struct dataEvent", + "members": [ + { + "astId": 3930, + "contract": "contracts/factory/MeetdAppFactory.sol:MeetdAppFactory", + "label": "active", + "offset": 0, + "slot": "0", + "type": "t_bool" + }, + { + "astId": 3932, + "contract": "contracts/factory/MeetdAppFactory.sol:MeetdAppFactory", + "label": "eventId", + "offset": 0, + "slot": "1", + "type": "t_string_storage" + }, + { + "astId": 3935, + "contract": "contracts/factory/MeetdAppFactory.sol:MeetdAppFactory", + "label": "eventAddr", + "offset": 0, + "slot": "2", + "type": "t_contract(MeetdAppEvent)3579" + } + ], + "numberOfBytes": "96" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + } +} diff --git a/src/assets/contracts/MeetdAppNFT.json b/src/assets/deployments/mumbai/MeetdAppNFT.json similarity index 100% rename from src/assets/contracts/MeetdAppNFT.json rename to src/assets/deployments/mumbai/MeetdAppNFT.json diff --git a/src/assets/deployments/polygon/MeetdAppEvent.json b/src/assets/deployments/polygon/MeetdAppEvent.json new file mode 100644 index 0000000..4421c4f --- /dev/null +++ b/src/assets/deployments/polygon/MeetdAppEvent.json @@ -0,0 +1,621 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MeetdAppEvent", + "sourceName": "contracts/event/MeetdAppEvent.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address[]", + "name": "_varAdr", + "type": "address[]" + }, + { + "internalType": "string[]", + "name": "_varStr", + "type": "string[]" + }, + { + "internalType": "uint256[]", + "name": "_varInt", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "buyer", + "type": "address" + } + ], + "name": "BoughtTicket", + "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": "buyer", + "type": "address" + } + ], + "name": "RefundedTicket", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "buyer", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "TransferredTicket", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "eventDescription", + "type": "string" + } + ], + "name": "UpdatedEventDescription", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "eventEndTime", + "type": "uint256" + } + ], + "name": "UpdatedEventEndTime", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "eventLocation", + "type": "string" + } + ], + "name": "UpdatedEventLocation", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "eventName", + "type": "string" + } + ], + "name": "UpdatedEventName", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "eventOwner", + "type": "address" + } + ], + "name": "UpdatedEventOwner", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "eventStartTime", + "type": "uint256" + } + ], + "name": "UpdatedEventStartTime", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "eventTotalTickets", + "type": "uint256" + } + ], + "name": "UpdatedEventTotalTickets", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "eventReedemableTime", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "eventSecretWordHash", + "type": "bytes32" + } + ], + "name": "UpdatedReedemableTimeAndSecretWordHash", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "attendeesList", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "buyTicket", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_newMetadata", + "type": "string" + } + ], + "name": "changeMetadata", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "eventAttendees", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eventDescription", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eventEndTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eventFactory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eventId", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eventLocation", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eventName", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eventNfts", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eventOwner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eventReedemableTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eventRemainingTickets", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eventSecretWordHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eventStartTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eventTotalTickets", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAllAttendees", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_eventSecretWord", + "type": "string" + } + ], + "name": "reedemNft", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "refundTicket", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newOwner", + "type": "address" + } + ], + "name": "transferTicket", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_eventDescription", + "type": "string" + } + ], + "name": "updateEventDescription", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_eventEndTime", + "type": "uint256" + } + ], + "name": "updateEventEndTime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_eventLocation", + "type": "string" + } + ], + "name": "updateEventLocation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_eventName", + "type": "string" + } + ], + "name": "updateEventName", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_eventOwner", + "type": "address" + } + ], + "name": "updateEventOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_eventReedemableTime", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "_eventSecretWordHash", + "type": "bytes32" + } + ], + "name": "updateEventReedemableTimeAndEventSecretWord", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_eventStartTime", + "type": "uint256" + } + ], + "name": "updateEventStartTime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_eventTotalTickets", + "type": "uint256" + } + ], + "name": "updateEventTotalTickets", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b506040516200227638038062002276833981016040819052620000349162000599565b6200003f33620001f5565b8260008151811062000055576200005562000644565b6020908102919091010151600b80546001600160a01b0319166001600160a01b039092169190911790558260018151811062000095576200009562000644565b6020908102919091010151600c80546001600160a01b0319166001600160a01b0390921691909117905581600081518110620000d557620000d562000644565b602002602001015160009081620000ed919062000752565b508160018151811062000104576200010462000644565b6020026020010151600190816200011c919062000752565b508160028151811062000133576200013362000644565b6020026020010151600290816200014b919062000752565b508160038151811062000162576200016262000644565b6020026020010151600390816200017a919062000752565b508060008151811062000191576200019162000644565b602090810291909101015160065580600181518110620001b557620001b562000644565b602090810291909101015160075580600281518110620001d957620001d962000644565b6020026020010151600581905560048190555050505062000822565b600f80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b038211171562000285576200028562000247565b6040525050565b60006200029860405190565b9050620002a682826200025d565b919050565b60006001600160401b03821115620002c757620002c762000247565b5060209081020190565b60006001600160a01b0382165b92915050565b620002ef81620002d1565b8114620002fb57600080fd5b50565b8051620002de81620002e4565b6000620003226200031c84620002ab565b6200028c565b83815290506020808201908402830185811115620003435762000343600080fd5b835b818110156200036b57806200035b8882620002fe565b8452506020928301920162000345565b5050509392505050565b600082601f8301126200038b576200038b600080fd5b81516200039d8482602086016200030b565b949350505050565b60006001600160401b03821115620003c157620003c162000247565b601f19601f83011660200192915050565b60005b83811015620003ef578181015183820152602001620003d5565b50506000910152565b6000620004096200031c84620003a5565b905082815260208101848484011115620004265762000426600080fd5b62000433848285620003d2565b509392505050565b600082601f830112620004515762000451600080fd5b81516200039d848260208601620003f8565b6000620004746200031c84620002ab565b83815290506020808201908402830185811115620004955762000495600080fd5b835b818110156200036b5780516001600160401b03811115620004bb57620004bb600080fd5b808601620004ca89826200043b565b855250506020928301920162000497565b600082601f830112620004f157620004f1600080fd5b81516200039d84826020860162000463565b80620002ef565b8051620002de8162000503565b6000620005286200031c84620002ab565b83815290506020808201908402830185811115620005495762000549600080fd5b835b818110156200036b57806200056188826200050a565b845250602092830192016200054b565b600082601f830112620005875762000587600080fd5b81516200039d84826020860162000517565b600080600060608486031215620005b357620005b3600080fd5b83516001600160401b03811115620005ce57620005ce600080fd5b620005dc8682870162000375565b93505060208401516001600160401b03811115620005fd57620005fd600080fd5b6200060b86828701620004db565b92505060408401516001600160401b038111156200062c576200062c600080fd5b6200063a8682870162000571565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602260045260246000fd5b6002810460018216806200068557607f821691505b6020821081036200069a576200069a6200065a565b50919050565b6000620002de620006ae8381565b90565b620006bc83620006a0565b815460001960089490940293841b1916921b91909117905550565b6000620006e6818484620006b1565b505050565b818110156200070a5762000701600082620006d7565b600101620006eb565b5050565b601f821115620006e6576000818152602090206020601f85010481016020851015620007375750805b6200074b6020601f860104830182620006eb565b5050505050565b81516001600160401b038111156200076e576200076e62000247565b6200077a825462000670565b620007878282856200070e565b6020601f831160018114620007be5760008415620007a55750858201515b600019600886021c19811660028602178655506200081a565b600085815260208120601f198616915b82811015620007f05788850151825560209485019460019092019101620007ce565b868310156200080d5784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b611a4480620008326000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c8063749956891161010f578063bfebbda8116100a2578063e33696f711610071578063e33696f7146103d8578063e38096f0146103ed578063edca914c14610400578063f2fde38b1461040857600080fd5b8063bfebbda814610396578063c0af2346146103a9578063d6bd5db1146103bc578063d9b6225e146103c557600080fd5b80638043c9c0116100de5780638043c9c0146103625780638a89c14c1461036a5780638da5cb5b1461037d5780639434571b1461038e57600080fd5b806374995689146103165780637721fe5c1461032957806377d1efb41461033c5780637b1ac2511461034f57600080fd5b806355b6ec1d116101875780636fdbd3f6116101565780636fdbd3f6146102ea578063713a3c93146102fd578063715018a614610305578063740ea9a61461030d57600080fd5b806355b6ec1d146102a857806361cec060146102bb57806364471452146102ce5780636afadefb146102d757600080fd5b806320214134116101c3578063202141341461026e578063270821b61461028e578063297449af146102975780632a6ca755146102a057600080fd5b806305ccfd33146101f5578063089cdd0c1461020a57806309e52c12146102285780631f4894b11461023e575b600080fd5b610208610203366004611041565b61041b565b005b61021261046b565b60405161021f91906110d2565b60405180910390f35b61023160085481565b60405161021f91906110f2565b61026161024c366004611136565b600e6020526000908152604090205460ff1681565b60405161021f919061115f565b600b54610281906001600160a01b031681565b60405161021f9190611176565b61023160095481565b61023160055481565b6102126104f9565b6102086102b6366004611195565b610506565b600c54610281906001600160a01b031681565b61023160045481565b6102086102e5366004611136565b6105a2565b600a54610281906001600160a01b031681565b6102086106f8565b6102086108bf565b61023160065481565b6102086103243660046111d2565b6108d3565b6102086103373660046111d2565b610932565b61020861034a366004611041565b610990565b61020861035d366004611245565b6109d5565b610212610b68565b6102816103783660046111d2565b610b75565b600f546001600160a01b0316610281565b610212610b9f565b6102086103a43660046111d2565b610bac565b6102086103b7366004611041565b610c0a565b61023160075481565b6102086103d3366004611041565b610c4f565b6103e0610cdd565b60405161021f91906112ea565b6102086103fb366004611136565b610d3f565b610208610d93565b610208610416366004611136565b610e88565b610423610ec2565b600161042f82826113da565b507f43abd8587b7e2fd4918308a13f0cf9759cdbba18adb47403d2779a67dac06ef860016040516104609190611517565b60405180910390a150565b6000805461047890611311565b80601f01602080910402602001604051908101604052809291908181526020018280546104a490611311565b80156104f15780601f106104c6576101008083540402835291602001916104f1565b820191906000526020600020905b8154815290600101906020018083116104d457829003601f168201915b505050505081565b6003805461047890611311565b61050e610ec2565b60075442106105385760405162461bcd60e51b815260040161052f9061155f565b60405180910390fd5b60065482101561055a5760405162461bcd60e51b815260040161052f906115be565b600882905560098190556040517ff2ccaa626cc9d4a494f70edcc2e8e06f1f533d1494b4000e6b61d523bd537bf39061059690849084906115ce565b60405180910390a15050565b60075442106105c35760405162461bcd60e51b815260040161052f9061155f565b336000908152600e602052604090205460ff1615156001146105f75760405162461bcd60e51b815260040161052f9061161d565b336000908152600e6020526040808220805460ff199081169091556001600160a01b0384168352908220805490911660011790555b600d548110156106c657336001600160a01b0316600d82815481106106535761065361162d565b6000918252602090912001546001600160a01b0316036106b45781600d82815481106106815761068161162d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506106c6565b806106be81611659565b91505061062c565b507f7478cc8eb40d9aeecde2e2f399de4bfeb61e737a737f3412f2a6043a077e44943382604051610460929190611673565b60065442106107195760405162461bcd60e51b815260040161052f906116c2565b336000908152600e602052604090205460ff16151560011461074d5760405162461bcd60e51b815260040161052f9061161d565b336000908152600e60205260408120805460ff1916905560058054600192906107779084906116d2565b90915550600090505b600d5481101561088557336001600160a01b0316600d82815481106107a7576107a761162d565b6000918252602090912001546001600160a01b03160361087357600d80546107d1906001906116e5565b815481106107e1576107e161162d565b600091825260209091200154600d80546001600160a01b03909216918390811061080d5761080d61162d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600d80548061084c5761084c6116f8565b600082815260209020810160001990810180546001600160a01b0319169055019055610885565b8061087d81611659565b915050610780565b507f90cd9e65b809d22b37179b3997ffde6ac5df8905f83e2af169f9dcfbfd824d53336040516108b59190611176565b60405180910390a1565b6108c7610ec2565b6108d16000610eec565b565b6108db610ec2565b6005548110156108fd5760405162461bcd60e51b815260040161052f90611768565b60048190556040517f7912a16bc65fddc53602b6a128feb835b934d3d374e62b1d229f0ea0b0544664906104609083906110f2565b61093a610ec2565b600654811161095b5760405162461bcd60e51b815260040161052f906117bd565b60078190556040517f64fe254a049b2bf9f5756beb1fce549a5971b13c81378906e2152d25972b90bb906104609083906110f2565b610998610ec2565b60036109a482826113da565b507f848e9f060382bf958555423cce59bb0b82d362236369f776dc2bc7b5db192b5d60036040516104609190611517565b336000908152600e602052604090205460ff161515600114610a095760405162461bcd60e51b815260040161052f9061161d565b600854421115610a2b5760405162461bcd60e51b815260040161052f90611801565b6009548282604051602001610a41929190611824565b6040516020818303038152906040528051906020012014610a745760405162461bcd60e51b815260040161052f90611865565b600c546040516370a0823160e01b81526001600160a01b03909116906370a0823190610aa4903390600401611176565b602060405180830381865afa158015610ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae59190611880565b15610b025760405162461bcd60e51b815260040161052f906118ce565b600c546040516340d097c360e01b81526001600160a01b03909116906340d097c390610b32903390600401611176565b600060405180830381600087803b158015610b4c57600080fd5b505af1158015610b60573d6000803e3d6000fd5b505050505050565b6001805461047890611311565b600d8181548110610b8557600080fd5b6000918252602090912001546001600160a01b0316905081565b6002805461047890611311565b610bb4610ec2565b6006548111610bd55760405162461bcd60e51b815260040161052f90611925565b60068190556040517f83f749c39e7f10426bc8d591c61bcbac26fea26bf5ed757ed6cf0a1c753be269906104609083906110f2565b610c12610ec2565b6002610c1e82826113da565b507fd65307e9549d188f5ca686b92113466953e2c86f75071c922cb6c06a3a52d16860026040516104609190611517565b610c57610ec2565b6006544210610c785760405162461bcd60e51b815260040161052f906116c2565b600c546040516339a0c6f960e01b81526001600160a01b03909116906339a0c6f990610ca89084906004016110d2565b600060405180830381600087803b158015610cc257600080fd5b505af1158015610cd6573d6000803e3d6000fd5b5050505050565b6060600d805480602002602001604051908101604052809291908181526020018280548015610d3557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d17575b5050505050905090565b610d47610ec2565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517f28abb6d14a7f6e94196258e3c3acf0afce19ef39ea4ffe24e4231b9b4250f4449161046091611176565b6006544210610db45760405162461bcd60e51b815260040161052f906116c2565b336000908152600e602052604090205460ff1615610de45760405162461bcd60e51b815260040161052f90611969565b336000818152600e60205260408120805460ff19166001908117909155600d805480830182559083527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b03191690931790925560058054909190610e539084906116e5565b90915550506040517f6464f1c0b927235997ea56a096b2a63209270b55e0bce7589dd8996e79806e6f906108b5903390611176565b610e90610ec2565b6001600160a01b038116610eb65760405162461bcd60e51b815260040161052f906119bc565b610ebf81610eec565b50565b600f546001600160a01b031633146108d15760405162461bcd60e51b815260040161052f906119fe565b600f80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715610f7a57610f7a610f3e565b6040525050565b6000610f8c60405190565b9050610f988282610f54565b919050565b600067ffffffffffffffff821115610fb757610fb7610f3e565b601f19601f83011660200192915050565b82818337506000910152565b6000610fe7610fe284610f9d565b610f81565b90508281526020810184848401111561100257611002600080fd5b61100d848285610fc8565b509392505050565b600082601f83011261102957611029600080fd5b8135611039848260208601610fd4565b949350505050565b60006020828403121561105657611056600080fd5b813567ffffffffffffffff81111561107057611070600080fd5b61103984828501611015565b60005b8381101561109757818101518382015260200161107f565b50506000910152565b60006110aa825190565b8084526020840193506110c181856020860161107c565b601f01601f19169290920192915050565b602080825281016110e381846110a0565b9392505050565b805b82525050565b6020810161110082846110ea565b92915050565b60006001600160a01b038216611100565b61112081611106565b8114610ebf57600080fd5b803561110081611117565b60006020828403121561114b5761114b600080fd5b6000611039848461112b565b8015156110ec565b602081016111008284611157565b6110ec81611106565b60208101611100828461116d565b80611120565b803561110081611184565b600080604083850312156111ab576111ab600080fd5b60006111b7858561118a565b92505060206111c88582860161118a565b9150509250929050565b6000602082840312156111e7576111e7600080fd5b6000611039848461118a565b60008083601f84011261120857611208600080fd5b50813567ffffffffffffffff81111561122357611223600080fd5b60208301915083600182028301111561123e5761123e600080fd5b9250929050565b6000806020838503121561125b5761125b600080fd5b823567ffffffffffffffff81111561127557611275600080fd5b611281858286016111f3565b92509250509250929050565b6000611299838361116d565b505060200190565b60006112ab825190565b80845260209384019383018060005b838110156112df5781516112ce888261128d565b9750602083019250506001016112ba565b509495945050505050565b602080825281016110e381846112a1565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061132557607f821691505b602082108103611337576113376112fb565b50919050565b60006111006113498381565b90565b6113558361133d565b815460001960089490940293841b1916921b91909117905550565b600061137d81848461134c565b505050565b8181101561139d57611395600082611370565b600101611382565b5050565b601f82111561137d576000818152602090206020601f850104810160208510156113c85750805b610cd66020601f860104830182611382565b815167ffffffffffffffff8111156113f4576113f4610f3e565b6113fe8254611311565b6114098282856113a1565b6020601f83116001811461143d57600084156114255750858201515b600019600886021c1981166002860217865550610b60565b600085815260208120601f198616915b8281101561146d578885015182556020948501946001909201910161144d565b868310156114895784890151600019601f89166008021c191682555b600160028802018855505050505050505050565b600081546114aa81611311565b8085526020850194506001821680156114ca57600181146114e05761150e565b60ff19831686526020821515028601935061150e565b60008581526020902060005b83811015611508578154888201526001909101906020016114ec565b87019450505b50505092915050565b602080825281016110e3818461149d565b601781526000602082017f4576656e742068617320616c726561647920656e646564000000000000000000815291505b5060200190565b6020808252810161110081611528565b602f81526000602082017f52656564656d61626c652074696d65206d75737420626520677265617465722081526e7468616e2073746172742074696d6560881b602082015291505b5060400190565b602080825281016111008161156f565b604081016115dc82856110ea565b6110e360208301846110ea565b601881526000602082017f596f7520646f206e6f7420686176652061207469636b6574000000000000000081529150611558565b60208082528101611100816115e9565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361166c5761166c611643565b5060010190565b60408101611681828561116d565b6110e3602083018461116d565b601981526000602082017f4576656e742068617320616c726561647920737461727465640000000000000081529150611558565b602080825281016111008161168e565b8082018082111561110057611100611643565b8181038181111561110057611100611643565b634e487b7160e01b600052603160045260246000fd5b604081526000602082017f546f74616c207469636b657473206d757374206265206772656174657220746881527f616e206f7220657175616c20746f2072656d61696e696e67207469636b657473602082015291506115b7565b602080825281016111008161170e565b602881526000602082017f456e642074696d65206d7573742062652067726561746572207468616e2073748152676172742074696d6560c01b602082015291506115b7565b6020808252810161110081611778565b601e81526000602082017f596f752063616e6e6f742072656564656d20796f7572204e465420796574000081529150611558565b60208082528101611100816117cd565b600061181e838584610fc8565b50500190565b6000611039828486611811565b601881526000602082017f53656372657420776f726420697320696e636f7272656374000000000000000081529150611558565b6020808252810161110081611831565b805161110081611184565b60006020828403121561189557611895600080fd5b60006110398484611875565b6016815260006020820175165bdd48185b1c9958591e481a185d9948184813919560521b81529150611558565b60208082528101611100816118a1565b602a81526000602082017f53746172742074696d65206d7573742062652067726561746572207468616e2081526973746172742074696d6560b01b602082015291506115b7565b60208082528101611100816118de565b601981526000602082017f596f7520616c726561647920686176652061207469636b65740000000000000081529150611558565b6020808252810161110081611935565b602681526000602082017f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015291506115b7565b6020808252810161110081611979565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000611558565b60208082528101611100816119cc56fea2646970667358221220339a0ec3f2fd82d661ef94af41bfa493c4b9acfe46b59ecde317501f7cd6d57864736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c8063749956891161010f578063bfebbda8116100a2578063e33696f711610071578063e33696f7146103d8578063e38096f0146103ed578063edca914c14610400578063f2fde38b1461040857600080fd5b8063bfebbda814610396578063c0af2346146103a9578063d6bd5db1146103bc578063d9b6225e146103c557600080fd5b80638043c9c0116100de5780638043c9c0146103625780638a89c14c1461036a5780638da5cb5b1461037d5780639434571b1461038e57600080fd5b806374995689146103165780637721fe5c1461032957806377d1efb41461033c5780637b1ac2511461034f57600080fd5b806355b6ec1d116101875780636fdbd3f6116101565780636fdbd3f6146102ea578063713a3c93146102fd578063715018a614610305578063740ea9a61461030d57600080fd5b806355b6ec1d146102a857806361cec060146102bb57806364471452146102ce5780636afadefb146102d757600080fd5b806320214134116101c3578063202141341461026e578063270821b61461028e578063297449af146102975780632a6ca755146102a057600080fd5b806305ccfd33146101f5578063089cdd0c1461020a57806309e52c12146102285780631f4894b11461023e575b600080fd5b610208610203366004611041565b61041b565b005b61021261046b565b60405161021f91906110d2565b60405180910390f35b61023160085481565b60405161021f91906110f2565b61026161024c366004611136565b600e6020526000908152604090205460ff1681565b60405161021f919061115f565b600b54610281906001600160a01b031681565b60405161021f9190611176565b61023160095481565b61023160055481565b6102126104f9565b6102086102b6366004611195565b610506565b600c54610281906001600160a01b031681565b61023160045481565b6102086102e5366004611136565b6105a2565b600a54610281906001600160a01b031681565b6102086106f8565b6102086108bf565b61023160065481565b6102086103243660046111d2565b6108d3565b6102086103373660046111d2565b610932565b61020861034a366004611041565b610990565b61020861035d366004611245565b6109d5565b610212610b68565b6102816103783660046111d2565b610b75565b600f546001600160a01b0316610281565b610212610b9f565b6102086103a43660046111d2565b610bac565b6102086103b7366004611041565b610c0a565b61023160075481565b6102086103d3366004611041565b610c4f565b6103e0610cdd565b60405161021f91906112ea565b6102086103fb366004611136565b610d3f565b610208610d93565b610208610416366004611136565b610e88565b610423610ec2565b600161042f82826113da565b507f43abd8587b7e2fd4918308a13f0cf9759cdbba18adb47403d2779a67dac06ef860016040516104609190611517565b60405180910390a150565b6000805461047890611311565b80601f01602080910402602001604051908101604052809291908181526020018280546104a490611311565b80156104f15780601f106104c6576101008083540402835291602001916104f1565b820191906000526020600020905b8154815290600101906020018083116104d457829003601f168201915b505050505081565b6003805461047890611311565b61050e610ec2565b60075442106105385760405162461bcd60e51b815260040161052f9061155f565b60405180910390fd5b60065482101561055a5760405162461bcd60e51b815260040161052f906115be565b600882905560098190556040517ff2ccaa626cc9d4a494f70edcc2e8e06f1f533d1494b4000e6b61d523bd537bf39061059690849084906115ce565b60405180910390a15050565b60075442106105c35760405162461bcd60e51b815260040161052f9061155f565b336000908152600e602052604090205460ff1615156001146105f75760405162461bcd60e51b815260040161052f9061161d565b336000908152600e6020526040808220805460ff199081169091556001600160a01b0384168352908220805490911660011790555b600d548110156106c657336001600160a01b0316600d82815481106106535761065361162d565b6000918252602090912001546001600160a01b0316036106b45781600d82815481106106815761068161162d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506106c6565b806106be81611659565b91505061062c565b507f7478cc8eb40d9aeecde2e2f399de4bfeb61e737a737f3412f2a6043a077e44943382604051610460929190611673565b60065442106107195760405162461bcd60e51b815260040161052f906116c2565b336000908152600e602052604090205460ff16151560011461074d5760405162461bcd60e51b815260040161052f9061161d565b336000908152600e60205260408120805460ff1916905560058054600192906107779084906116d2565b90915550600090505b600d5481101561088557336001600160a01b0316600d82815481106107a7576107a761162d565b6000918252602090912001546001600160a01b03160361087357600d80546107d1906001906116e5565b815481106107e1576107e161162d565b600091825260209091200154600d80546001600160a01b03909216918390811061080d5761080d61162d565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600d80548061084c5761084c6116f8565b600082815260209020810160001990810180546001600160a01b0319169055019055610885565b8061087d81611659565b915050610780565b507f90cd9e65b809d22b37179b3997ffde6ac5df8905f83e2af169f9dcfbfd824d53336040516108b59190611176565b60405180910390a1565b6108c7610ec2565b6108d16000610eec565b565b6108db610ec2565b6005548110156108fd5760405162461bcd60e51b815260040161052f90611768565b60048190556040517f7912a16bc65fddc53602b6a128feb835b934d3d374e62b1d229f0ea0b0544664906104609083906110f2565b61093a610ec2565b600654811161095b5760405162461bcd60e51b815260040161052f906117bd565b60078190556040517f64fe254a049b2bf9f5756beb1fce549a5971b13c81378906e2152d25972b90bb906104609083906110f2565b610998610ec2565b60036109a482826113da565b507f848e9f060382bf958555423cce59bb0b82d362236369f776dc2bc7b5db192b5d60036040516104609190611517565b336000908152600e602052604090205460ff161515600114610a095760405162461bcd60e51b815260040161052f9061161d565b600854421115610a2b5760405162461bcd60e51b815260040161052f90611801565b6009548282604051602001610a41929190611824565b6040516020818303038152906040528051906020012014610a745760405162461bcd60e51b815260040161052f90611865565b600c546040516370a0823160e01b81526001600160a01b03909116906370a0823190610aa4903390600401611176565b602060405180830381865afa158015610ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae59190611880565b15610b025760405162461bcd60e51b815260040161052f906118ce565b600c546040516340d097c360e01b81526001600160a01b03909116906340d097c390610b32903390600401611176565b600060405180830381600087803b158015610b4c57600080fd5b505af1158015610b60573d6000803e3d6000fd5b505050505050565b6001805461047890611311565b600d8181548110610b8557600080fd5b6000918252602090912001546001600160a01b0316905081565b6002805461047890611311565b610bb4610ec2565b6006548111610bd55760405162461bcd60e51b815260040161052f90611925565b60068190556040517f83f749c39e7f10426bc8d591c61bcbac26fea26bf5ed757ed6cf0a1c753be269906104609083906110f2565b610c12610ec2565b6002610c1e82826113da565b507fd65307e9549d188f5ca686b92113466953e2c86f75071c922cb6c06a3a52d16860026040516104609190611517565b610c57610ec2565b6006544210610c785760405162461bcd60e51b815260040161052f906116c2565b600c546040516339a0c6f960e01b81526001600160a01b03909116906339a0c6f990610ca89084906004016110d2565b600060405180830381600087803b158015610cc257600080fd5b505af1158015610cd6573d6000803e3d6000fd5b5050505050565b6060600d805480602002602001604051908101604052809291908181526020018280548015610d3557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d17575b5050505050905090565b610d47610ec2565b600b80546001600160a01b0319166001600160a01b0383169081179091556040517f28abb6d14a7f6e94196258e3c3acf0afce19ef39ea4ffe24e4231b9b4250f4449161046091611176565b6006544210610db45760405162461bcd60e51b815260040161052f906116c2565b336000908152600e602052604090205460ff1615610de45760405162461bcd60e51b815260040161052f90611969565b336000818152600e60205260408120805460ff19166001908117909155600d805480830182559083527fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb50180546001600160a01b03191690931790925560058054909190610e539084906116e5565b90915550506040517f6464f1c0b927235997ea56a096b2a63209270b55e0bce7589dd8996e79806e6f906108b5903390611176565b610e90610ec2565b6001600160a01b038116610eb65760405162461bcd60e51b815260040161052f906119bc565b610ebf81610eec565b50565b600f546001600160a01b031633146108d15760405162461bcd60e51b815260040161052f906119fe565b600f80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715610f7a57610f7a610f3e565b6040525050565b6000610f8c60405190565b9050610f988282610f54565b919050565b600067ffffffffffffffff821115610fb757610fb7610f3e565b601f19601f83011660200192915050565b82818337506000910152565b6000610fe7610fe284610f9d565b610f81565b90508281526020810184848401111561100257611002600080fd5b61100d848285610fc8565b509392505050565b600082601f83011261102957611029600080fd5b8135611039848260208601610fd4565b949350505050565b60006020828403121561105657611056600080fd5b813567ffffffffffffffff81111561107057611070600080fd5b61103984828501611015565b60005b8381101561109757818101518382015260200161107f565b50506000910152565b60006110aa825190565b8084526020840193506110c181856020860161107c565b601f01601f19169290920192915050565b602080825281016110e381846110a0565b9392505050565b805b82525050565b6020810161110082846110ea565b92915050565b60006001600160a01b038216611100565b61112081611106565b8114610ebf57600080fd5b803561110081611117565b60006020828403121561114b5761114b600080fd5b6000611039848461112b565b8015156110ec565b602081016111008284611157565b6110ec81611106565b60208101611100828461116d565b80611120565b803561110081611184565b600080604083850312156111ab576111ab600080fd5b60006111b7858561118a565b92505060206111c88582860161118a565b9150509250929050565b6000602082840312156111e7576111e7600080fd5b6000611039848461118a565b60008083601f84011261120857611208600080fd5b50813567ffffffffffffffff81111561122357611223600080fd5b60208301915083600182028301111561123e5761123e600080fd5b9250929050565b6000806020838503121561125b5761125b600080fd5b823567ffffffffffffffff81111561127557611275600080fd5b611281858286016111f3565b92509250509250929050565b6000611299838361116d565b505060200190565b60006112ab825190565b80845260209384019383018060005b838110156112df5781516112ce888261128d565b9750602083019250506001016112ba565b509495945050505050565b602080825281016110e381846112a1565b634e487b7160e01b600052602260045260246000fd5b60028104600182168061132557607f821691505b602082108103611337576113376112fb565b50919050565b60006111006113498381565b90565b6113558361133d565b815460001960089490940293841b1916921b91909117905550565b600061137d81848461134c565b505050565b8181101561139d57611395600082611370565b600101611382565b5050565b601f82111561137d576000818152602090206020601f850104810160208510156113c85750805b610cd66020601f860104830182611382565b815167ffffffffffffffff8111156113f4576113f4610f3e565b6113fe8254611311565b6114098282856113a1565b6020601f83116001811461143d57600084156114255750858201515b600019600886021c1981166002860217865550610b60565b600085815260208120601f198616915b8281101561146d578885015182556020948501946001909201910161144d565b868310156114895784890151600019601f89166008021c191682555b600160028802018855505050505050505050565b600081546114aa81611311565b8085526020850194506001821680156114ca57600181146114e05761150e565b60ff19831686526020821515028601935061150e565b60008581526020902060005b83811015611508578154888201526001909101906020016114ec565b87019450505b50505092915050565b602080825281016110e3818461149d565b601781526000602082017f4576656e742068617320616c726561647920656e646564000000000000000000815291505b5060200190565b6020808252810161110081611528565b602f81526000602082017f52656564656d61626c652074696d65206d75737420626520677265617465722081526e7468616e2073746172742074696d6560881b602082015291505b5060400190565b602080825281016111008161156f565b604081016115dc82856110ea565b6110e360208301846110ea565b601881526000602082017f596f7520646f206e6f7420686176652061207469636b6574000000000000000081529150611558565b60208082528101611100816115e9565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361166c5761166c611643565b5060010190565b60408101611681828561116d565b6110e3602083018461116d565b601981526000602082017f4576656e742068617320616c726561647920737461727465640000000000000081529150611558565b602080825281016111008161168e565b8082018082111561110057611100611643565b8181038181111561110057611100611643565b634e487b7160e01b600052603160045260246000fd5b604081526000602082017f546f74616c207469636b657473206d757374206265206772656174657220746881527f616e206f7220657175616c20746f2072656d61696e696e67207469636b657473602082015291506115b7565b602080825281016111008161170e565b602881526000602082017f456e642074696d65206d7573742062652067726561746572207468616e2073748152676172742074696d6560c01b602082015291506115b7565b6020808252810161110081611778565b601e81526000602082017f596f752063616e6e6f742072656564656d20796f7572204e465420796574000081529150611558565b60208082528101611100816117cd565b600061181e838584610fc8565b50500190565b6000611039828486611811565b601881526000602082017f53656372657420776f726420697320696e636f7272656374000000000000000081529150611558565b6020808252810161110081611831565b805161110081611184565b60006020828403121561189557611895600080fd5b60006110398484611875565b6016815260006020820175165bdd48185b1c9958591e481a185d9948184813919560521b81529150611558565b60208082528101611100816118a1565b602a81526000602082017f53746172742074696d65206d7573742062652067726561746572207468616e2081526973746172742074696d6560b01b602082015291506115b7565b60208082528101611100816118de565b601981526000602082017f596f7520616c726561647920686176652061207469636b65740000000000000081529150611558565b6020808252810161110081611935565b602681526000602082017f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b602082015291506115b7565b6020808252810161110081611979565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000611558565b60208082528101611100816119cc56fea2646970667358221220339a0ec3f2fd82d661ef94af41bfa493c4b9acfe46b59ecde317501f7cd6d57864736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/src/assets/contracts/MeetdAppFactory.json b/src/assets/deployments/polygon/MeetdAppFactory.json similarity index 100% rename from src/assets/contracts/MeetdAppFactory.json rename to src/assets/deployments/polygon/MeetdAppFactory.json diff --git a/src/assets/deployments/polygon/MeetdAppNFT.json b/src/assets/deployments/polygon/MeetdAppNFT.json new file mode 100644 index 0000000..bf1305b --- /dev/null +++ b/src/assets/deployments/polygon/MeetdAppNFT.json @@ -0,0 +1,453 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MeetdAppNFT", + "sourceName": "contracts/NFT/MeetdAppNFT.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "string", + "name": "_URI", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "pure", + "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": [ + { + "internalType": "string", + "name": "_URI", + "type": "string" + } + ], + "name": "changeBaseURI", + "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": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "safeMint", + "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": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "pure", + "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": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b50604051620017c4380380620017c483398101604081905262000034916200020e565b82826000620000448382620003b7565b506001620000538282620003b7565b505050620000706200006a6200008860201b60201c565b6200008c565b60086200007e8282620003b7565b5050505062000487565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681018181106001600160401b03821117156200011c576200011c620000de565b6040525050565b60006200012f60405190565b90506200013d8282620000f4565b919050565b60006001600160401b038211156200015e576200015e620000de565b601f19601f83011660200192915050565b60005b838110156200018c57818101518382015260200162000172565b50506000910152565b6000620001ac620001a68462000142565b62000123565b905082815260208101848484011115620001c957620001c9600080fd5b620001d68482856200016f565b509392505050565b600082601f830112620001f457620001f4600080fd5b81516200020684826020860162000195565b949350505050565b600080600060608486031215620002285762000228600080fd5b83516001600160401b03811115620002435762000243600080fd5b6200025186828701620001de565b93505060208401516001600160401b03811115620002725762000272600080fd5b6200028086828701620001de565b92505060408401516001600160401b03811115620002a157620002a1600080fd5b620002af86828701620001de565b9150509250925092565b634e487b7160e01b600052602260045260246000fd5b600281046001821680620002e457607f821691505b602082108103620002f957620002f9620002b9565b50919050565b6000620003106200030d8381565b90565b92915050565b6200032183620002ff565b815460001960089490940293841b1916921b91909117905550565b60006200034b81848462000316565b505050565b818110156200036f57620003666000826200033c565b60010162000350565b5050565b601f8211156200034b576000818152602090206020601f850104810160208510156200039c5750805b620003b06020601f86010483018262000350565b5050505050565b81516001600160401b03811115620003d357620003d3620000de565b620003df8254620002cf565b620003ec82828562000373565b6020601f8311600181146200042357600084156200040a5750858201515b600019600886021c19811660028602178655506200047f565b600085815260208120601f198616915b8281101562000455578885015182556020948501946001909201910162000433565b86831015620004725784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b61132d80620004976000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80636c0360eb116100ad578063a22cb46511610071578063a22cb46514610241578063b88d4fde14610254578063c87b56dd14610267578063e985e9c51461027a578063f2fde38b146102b657600080fd5b80636c0360eb146101f857806370a0823114610200578063715018a6146102205780638da5cb5b1461022857806395d89b411461023957600080fd5b806323b872dd116100f457806323b872dd1461019957806339a0c6f9146101ac57806340d097c3146101bf57806342842e0e146101d25780636352211e146101e557600080fd5b806301ffc9a71461012657806306fdde031461014f578063081812fc14610164578063095ea7b314610184575b600080fd5b6101396101343660046109bf565b6102c9565b60405161014691906109ea565b60405180910390f35b61015761031b565b6040516101469190610a4e565b610177610172366004610a77565b6103ad565b6040516101469190610ab2565b610197610192366004610ad4565b6103d4565b005b6101976101a7366004610b11565b6103f5565b6101976101ba366004610c5c565b61040d565b6101976101cd366004610c97565b610425565b6101976101e0366004610b11565b610452565b6101776101f3366004610a77565b610472565b6101576104a7565b61021361020e366004610c97565b610535565b6040516101469190610cbe565b610197610579565b6006546001600160a01b0316610177565b61015761058d565b61019761024f366004610cdf565b61059c565b610197610262366004610d12565b6105b4565b610157610275366004610a77565b6105cc565b610139610288366004610d91565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6101976102c4366004610c97565b610669565b60006001600160e01b031982166380ac58cd60e01b14806102fa57506001600160e01b03198216635b5e139f60e01b145b8061031557506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461032a90610dda565b80601f016020809104026020016040519081016040528092919081815260200182805461035690610dda565b80156103a35780601f10610378576101008083540402835291602001916103a3565b820191906000526020600020905b81548152906001019060200180831161038657829003601f168201915b5050505050905090565b60006103b8826106a3565b506000908152600460205260409020546001600160a01b031690565b60405162461bcd60e51b81526004016103ec90610e35565b60405180910390fd5b60405162461bcd60e51b81526004016103ec90610e79565b6104156106d7565b60086104218282610f24565b5050565b61042d6106d7565b600061043860075490565b9050610448600780546001019055565b6104218282610701565b61046d838383604051806020016040528060008152506105b4565b505050565b6000818152600260205260408120546001600160a01b0316806103155760405162461bcd60e51b81526004016103ec9061101c565b600880546104b490610dda565b80601f01602080910402602001604051908101604052809291908181526020018280546104e090610dda565b801561052d5780601f106105025761010080835404028352916020019161052d565b820191906000526020600020905b81548152906001019060200180831161051057829003601f168201915b505050505081565b60006001600160a01b03821661055d5760405162461bcd60e51b81526004016103ec90611075565b506001600160a01b031660009081526003602052604090205490565b6105816106d7565b61058b600061071b565b565b60606001805461032a90610dda565b60405162461bcd60e51b81526004016103ec906110b9565b60405162461bcd60e51b81526004016103ec906110fd565b60606105d7826106a3565b600880546105e490610dda565b80601f016020809104026020016040519081016040528092919081815260200182805461061090610dda565b801561065d5780601f106106325761010080835404028352916020019161065d565b820191906000526020600020905b81548152906001019060200180831161064057829003601f168201915b50505050509050919050565b6106716106d7565b6001600160a01b0381166106975760405162461bcd60e51b81526004016103ec90611150565b6106a08161071b565b50565b6000818152600260205260409020546001600160a01b03166106a05760405162461bcd60e51b81526004016103ec9061101c565b6006546001600160a01b0316331461058b5760405162461bcd60e51b81526004016103ec90611192565b61042182826040518060200160405280600081525061076d565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61077783836107a0565b610784600084848461089b565b61046d5760405162461bcd60e51b81526004016103ec906111f1565b6001600160a01b0382166107c65760405162461bcd60e51b81526004016103ec90611233565b6000818152600260205260409020546001600160a01b0316156107fb5760405162461bcd60e51b81526004016103ec90611277565b6000818152600260205260409020546001600160a01b0316156108305760405162461bcd60e51b81526004016103ec90611277565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b1561099157604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906108df903390899088908890600401611287565b6020604051808303816000875af192505050801561091a575060408051601f3d908101601f19168201909252610917918101906112d6565b60015b610977573d808015610948576040519150601f19603f3d011682016040523d82523d6000602084013e61094d565b606091505b50805160000361096f5760405162461bcd60e51b81526004016103ec906111f1565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610995565b5060015b949350505050565b6001600160e01b031981165b81146106a057600080fd5b80356103158161099d565b6000602082840312156109d4576109d4600080fd5b600061099584846109b4565b8015155b82525050565b6020810161031582846109e0565b60005b83811015610a135781810151838201526020016109fb565b50506000910152565b6000610a26825190565b808452602084019350610a3d8185602086016109f8565b601f01601f19169290920192915050565b60208082528101610a5f8184610a1c565b9392505050565b806109a9565b803561031581610a66565b600060208284031215610a8c57610a8c600080fd5b60006109958484610a6c565b60006001600160a01b038216610315565b6109e481610a98565b602081016103158284610aa9565b6109a981610a98565b803561031581610ac0565b60008060408385031215610aea57610aea600080fd5b6000610af68585610ac9565b9250506020610b0785828601610a6c565b9150509250929050565b600080600060608486031215610b2957610b29600080fd5b6000610b358686610ac9565b9350506020610b4686828701610ac9565b9250506040610b5786828701610a6c565b9150509250925092565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715610b9d57610b9d610b61565b6040525050565b6000610baf60405190565b9050610bbb8282610b77565b919050565b600067ffffffffffffffff821115610bda57610bda610b61565b601f19601f83011660200192915050565b82818337506000910152565b6000610c0a610c0584610bc0565b610ba4565b905082815260208101848484011115610c2557610c25600080fd5b610c30848285610beb565b509392505050565b600082601f830112610c4c57610c4c600080fd5b8135610995848260208601610bf7565b600060208284031215610c7157610c71600080fd5b813567ffffffffffffffff811115610c8b57610c8b600080fd5b61099584828501610c38565b600060208284031215610cac57610cac600080fd5b60006109958484610ac9565b806109e4565b602081016103158284610cb8565b8015156109a9565b803561031581610ccc565b60008060408385031215610cf557610cf5600080fd5b6000610d018585610ac9565b9250506020610b0785828601610cd4565b60008060008060808587031215610d2b57610d2b600080fd5b6000610d378787610ac9565b9450506020610d4887828801610ac9565b9350506040610d5987828801610a6c565b925050606085013567ffffffffffffffff811115610d7957610d79600080fd5b610d8587828801610c38565b91505092959194509250565b60008060408385031215610da757610da7600080fd5b6000610db38585610ac9565b9250506020610b0785828601610ac9565b634e487b7160e01b600052602260045260246000fd5b600281046001821680610dee57607f821691505b602082108103610e0057610e00610dc4565b50919050565b6015815260006020820174105c1c1c9bdd99481a5cdb89dd08185b1b1bddd959605a1b815291505b5060200190565b6020808252810161031581610e06565b601a81526000602082017f7472616e7366657246726f6d2069736e277420616c6c6f77656400000000000081529150610e2e565b6020808252810161031581610e45565b6000610315610e958381565b90565b610ea183610e89565b815460001960089490940293841b1916921b91909117905550565b600061046d818484610e98565b8181101561042157610edc600082610ebc565b600101610ec9565b601f82111561046d576000818152602090206020601f85010481016020851015610f0b5750805b610f1d6020601f860104830182610ec9565b5050505050565b815167ffffffffffffffff811115610f3e57610f3e610b61565b610f488254610dda565b610f53828285610ee4565b6020601f831160018114610f875760008415610f6f5750858201515b600019600886021c1981166002860217865550610fe0565b600085815260208120601f198616915b82811015610fb75788850151825560209485019460019092019101610f97565b86831015610fd35784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b601881526000602082017f4552433732313a20696e76616c696420746f6b656e204944000000000000000081529150610e2e565b6020808252810161031581610fe8565b602981526000602082017f4552433732313a2061646472657373207a65726f206973206e6f7420612076618152683634b21037bbb732b960b91b602082015291505b5060400190565b602080825281016103158161102c565b601f81526000602082017f736574417070726f76616c466f72416c6c2069736e277420616c6c6f7765640081529150610e2e565b6020808252810161031581611085565b601e81526000602082017f736166655472616e7366657246726f6d2069736e277420616c6c6f776564000081529150610e2e565b60208082528101610315816110c9565b602681526000602082017f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b6020820152915061106e565b602080825281016103158161110d565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000610e2e565b6020808252810161031581611160565b603281526000602082017f4552433732313a207472616e7366657220746f206e6f6e20455243373231526581527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6020820152915061106e565b60208082528101610315816111a2565b60208082527f4552433732313a206d696e7420746f20746865207a65726f206164647265737391019081526000610e2e565b6020808252810161031581611201565b601c81526000602082017f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081529150610e2e565b6020808252810161031581611243565b608081016112958287610aa9565b6112a26020830186610aa9565b6112af6040830185610cb8565b81810360608301526112c18184610a1c565b9695505050505050565b80516103158161099d565b6000602082840312156112eb576112eb600080fd5b600061099584846112cb56fea26469706673582212200ddc5e6c148d091a133a3a3968d0c48e090f5a57a9ed47dbbea0d5e683b9a7bb64736f6c63430008130033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c80636c0360eb116100ad578063a22cb46511610071578063a22cb46514610241578063b88d4fde14610254578063c87b56dd14610267578063e985e9c51461027a578063f2fde38b146102b657600080fd5b80636c0360eb146101f857806370a0823114610200578063715018a6146102205780638da5cb5b1461022857806395d89b411461023957600080fd5b806323b872dd116100f457806323b872dd1461019957806339a0c6f9146101ac57806340d097c3146101bf57806342842e0e146101d25780636352211e146101e557600080fd5b806301ffc9a71461012657806306fdde031461014f578063081812fc14610164578063095ea7b314610184575b600080fd5b6101396101343660046109bf565b6102c9565b60405161014691906109ea565b60405180910390f35b61015761031b565b6040516101469190610a4e565b610177610172366004610a77565b6103ad565b6040516101469190610ab2565b610197610192366004610ad4565b6103d4565b005b6101976101a7366004610b11565b6103f5565b6101976101ba366004610c5c565b61040d565b6101976101cd366004610c97565b610425565b6101976101e0366004610b11565b610452565b6101776101f3366004610a77565b610472565b6101576104a7565b61021361020e366004610c97565b610535565b6040516101469190610cbe565b610197610579565b6006546001600160a01b0316610177565b61015761058d565b61019761024f366004610cdf565b61059c565b610197610262366004610d12565b6105b4565b610157610275366004610a77565b6105cc565b610139610288366004610d91565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6101976102c4366004610c97565b610669565b60006001600160e01b031982166380ac58cd60e01b14806102fa57506001600160e01b03198216635b5e139f60e01b145b8061031557506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461032a90610dda565b80601f016020809104026020016040519081016040528092919081815260200182805461035690610dda565b80156103a35780601f10610378576101008083540402835291602001916103a3565b820191906000526020600020905b81548152906001019060200180831161038657829003601f168201915b5050505050905090565b60006103b8826106a3565b506000908152600460205260409020546001600160a01b031690565b60405162461bcd60e51b81526004016103ec90610e35565b60405180910390fd5b60405162461bcd60e51b81526004016103ec90610e79565b6104156106d7565b60086104218282610f24565b5050565b61042d6106d7565b600061043860075490565b9050610448600780546001019055565b6104218282610701565b61046d838383604051806020016040528060008152506105b4565b505050565b6000818152600260205260408120546001600160a01b0316806103155760405162461bcd60e51b81526004016103ec9061101c565b600880546104b490610dda565b80601f01602080910402602001604051908101604052809291908181526020018280546104e090610dda565b801561052d5780601f106105025761010080835404028352916020019161052d565b820191906000526020600020905b81548152906001019060200180831161051057829003601f168201915b505050505081565b60006001600160a01b03821661055d5760405162461bcd60e51b81526004016103ec90611075565b506001600160a01b031660009081526003602052604090205490565b6105816106d7565b61058b600061071b565b565b60606001805461032a90610dda565b60405162461bcd60e51b81526004016103ec906110b9565b60405162461bcd60e51b81526004016103ec906110fd565b60606105d7826106a3565b600880546105e490610dda565b80601f016020809104026020016040519081016040528092919081815260200182805461061090610dda565b801561065d5780601f106106325761010080835404028352916020019161065d565b820191906000526020600020905b81548152906001019060200180831161064057829003601f168201915b50505050509050919050565b6106716106d7565b6001600160a01b0381166106975760405162461bcd60e51b81526004016103ec90611150565b6106a08161071b565b50565b6000818152600260205260409020546001600160a01b03166106a05760405162461bcd60e51b81526004016103ec9061101c565b6006546001600160a01b0316331461058b5760405162461bcd60e51b81526004016103ec90611192565b61042182826040518060200160405280600081525061076d565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61077783836107a0565b610784600084848461089b565b61046d5760405162461bcd60e51b81526004016103ec906111f1565b6001600160a01b0382166107c65760405162461bcd60e51b81526004016103ec90611233565b6000818152600260205260409020546001600160a01b0316156107fb5760405162461bcd60e51b81526004016103ec90611277565b6000818152600260205260409020546001600160a01b0316156108305760405162461bcd60e51b81526004016103ec90611277565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60006001600160a01b0384163b1561099157604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906108df903390899088908890600401611287565b6020604051808303816000875af192505050801561091a575060408051601f3d908101601f19168201909252610917918101906112d6565b60015b610977573d808015610948576040519150601f19603f3d011682016040523d82523d6000602084013e61094d565b606091505b50805160000361096f5760405162461bcd60e51b81526004016103ec906111f1565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610995565b5060015b949350505050565b6001600160e01b031981165b81146106a057600080fd5b80356103158161099d565b6000602082840312156109d4576109d4600080fd5b600061099584846109b4565b8015155b82525050565b6020810161031582846109e0565b60005b83811015610a135781810151838201526020016109fb565b50506000910152565b6000610a26825190565b808452602084019350610a3d8185602086016109f8565b601f01601f19169290920192915050565b60208082528101610a5f8184610a1c565b9392505050565b806109a9565b803561031581610a66565b600060208284031215610a8c57610a8c600080fd5b60006109958484610a6c565b60006001600160a01b038216610315565b6109e481610a98565b602081016103158284610aa9565b6109a981610a98565b803561031581610ac0565b60008060408385031215610aea57610aea600080fd5b6000610af68585610ac9565b9250506020610b0785828601610a6c565b9150509250929050565b600080600060608486031215610b2957610b29600080fd5b6000610b358686610ac9565b9350506020610b4686828701610ac9565b9250506040610b5786828701610a6c565b9150509250925092565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715610b9d57610b9d610b61565b6040525050565b6000610baf60405190565b9050610bbb8282610b77565b919050565b600067ffffffffffffffff821115610bda57610bda610b61565b601f19601f83011660200192915050565b82818337506000910152565b6000610c0a610c0584610bc0565b610ba4565b905082815260208101848484011115610c2557610c25600080fd5b610c30848285610beb565b509392505050565b600082601f830112610c4c57610c4c600080fd5b8135610995848260208601610bf7565b600060208284031215610c7157610c71600080fd5b813567ffffffffffffffff811115610c8b57610c8b600080fd5b61099584828501610c38565b600060208284031215610cac57610cac600080fd5b60006109958484610ac9565b806109e4565b602081016103158284610cb8565b8015156109a9565b803561031581610ccc565b60008060408385031215610cf557610cf5600080fd5b6000610d018585610ac9565b9250506020610b0785828601610cd4565b60008060008060808587031215610d2b57610d2b600080fd5b6000610d378787610ac9565b9450506020610d4887828801610ac9565b9350506040610d5987828801610a6c565b925050606085013567ffffffffffffffff811115610d7957610d79600080fd5b610d8587828801610c38565b91505092959194509250565b60008060408385031215610da757610da7600080fd5b6000610db38585610ac9565b9250506020610b0785828601610ac9565b634e487b7160e01b600052602260045260246000fd5b600281046001821680610dee57607f821691505b602082108103610e0057610e00610dc4565b50919050565b6015815260006020820174105c1c1c9bdd99481a5cdb89dd08185b1b1bddd959605a1b815291505b5060200190565b6020808252810161031581610e06565b601a81526000602082017f7472616e7366657246726f6d2069736e277420616c6c6f77656400000000000081529150610e2e565b6020808252810161031581610e45565b6000610315610e958381565b90565b610ea183610e89565b815460001960089490940293841b1916921b91909117905550565b600061046d818484610e98565b8181101561042157610edc600082610ebc565b600101610ec9565b601f82111561046d576000818152602090206020601f85010481016020851015610f0b5750805b610f1d6020601f860104830182610ec9565b5050505050565b815167ffffffffffffffff811115610f3e57610f3e610b61565b610f488254610dda565b610f53828285610ee4565b6020601f831160018114610f875760008415610f6f5750858201515b600019600886021c1981166002860217865550610fe0565b600085815260208120601f198616915b82811015610fb75788850151825560209485019460019092019101610f97565b86831015610fd35784890151600019601f89166008021c191682555b6001600288020188555050505b505050505050565b601881526000602082017f4552433732313a20696e76616c696420746f6b656e204944000000000000000081529150610e2e565b6020808252810161031581610fe8565b602981526000602082017f4552433732313a2061646472657373207a65726f206973206e6f7420612076618152683634b21037bbb732b960b91b602082015291505b5060400190565b602080825281016103158161102c565b601f81526000602082017f736574417070726f76616c466f72416c6c2069736e277420616c6c6f7765640081529150610e2e565b6020808252810161031581611085565b601e81526000602082017f736166655472616e7366657246726f6d2069736e277420616c6c6f776564000081529150610e2e565b60208082528101610315816110c9565b602681526000602082017f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206181526564647265737360d01b6020820152915061106e565b602080825281016103158161110d565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000610e2e565b6020808252810161031581611160565b603281526000602082017f4552433732313a207472616e7366657220746f206e6f6e20455243373231526581527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6020820152915061106e565b60208082528101610315816111a2565b60208082527f4552433732313a206d696e7420746f20746865207a65726f206164647265737391019081526000610e2e565b6020808252810161031581611201565b601c81526000602082017f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000081529150610e2e565b6020808252810161031581611243565b608081016112958287610aa9565b6112a26020830186610aa9565b6112af6040830185610cb8565b81810360608301526112c18184610a1c565b9695505050505050565b80516103158161099d565b6000602082840312156112eb576112eb600080fd5b600061099584846112cb56fea26469706673582212200ddc5e6c148d091a133a3a3968d0c48e090f5a57a9ed47dbbea0d5e683b9a7bb64736f6c63430008130033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/src/constants/constants.ts b/src/constants/constants.ts index 1066dc2..e42e765 100644 --- a/src/constants/constants.ts +++ b/src/constants/constants.ts @@ -1,6 +1,38 @@ +import meetdAppFactoryJsonMumbai from '@/assets/deployments/mumbai/MeetdAppFactory.json' +import meetdAppEventJsonMumbai from '@/assets/deployments/mumbai/MeetdAppEvent.json' +import meetdAppNFTJsonMumbai from '@/assets/deployments/mumbai/MeetdAppNFT.json' +import meetdAppFactoryJsonPolygon from '@/assets/deployments/polygon/MeetdAppFactory.json' +import meetdAppEventJsonPolygon from '@/assets/deployments/polygon/MeetdAppEvent.json' +import meetdAppNFTJsonPolygon from '@/assets/deployments/polygon/MeetdAppNFT.json' + +interface ContractsJson { + meetdAppFactory: + | typeof meetdAppFactoryJsonPolygon + | typeof meetdAppFactoryJsonMumbai + meetdAppEvent: + | typeof meetdAppEventJsonPolygon + | typeof meetdAppEventJsonMumbai + meetdAppNFT: typeof meetdAppNFTJsonPolygon | typeof meetdAppNFTJsonMumbai +} + export const CHAINID = process.env.NEXT_PUBLIC_CHAIN_ID export const PROVIDER = process.env.NEXT_PUBLIC_ALCHEMY_API_KEY export const SCAN = ( address: string, scan: string | undefined = process.env.NEXT_PUBLIC_EVM_EXPLORER ) => `${scan}/${address}` + +export const CONTRACTS_JSON = (): ContractsJson => { + if (process.env.NEXT_PUBLIC_ENABLE_TESTNETS === 'true') { + return { + meetdAppEvent: meetdAppEventJsonMumbai, + meetdAppFactory: meetdAppFactoryJsonMumbai, + meetdAppNFT: meetdAppNFTJsonMumbai + } + } + return { + meetdAppEvent: meetdAppEventJsonPolygon, + meetdAppFactory: meetdAppFactoryJsonPolygon, + meetdAppNFT: meetdAppNFTJsonPolygon + } +} diff --git a/src/pages/events/[id]/index.tsx b/src/pages/events/[id]/index.tsx index 3dadec4..f97aaaa 100644 --- a/src/pages/events/[id]/index.tsx +++ b/src/pages/events/[id]/index.tsx @@ -7,8 +7,7 @@ import PreviousEvents from '@/components/events/PreviousEvents' import TagsSection from '@/components/events/TagsSection' import { Flex, useToast } from '@chakra-ui/react' import { useRouter } from 'next/router' -import MeetdAppFactoryJson from '../../../assets/contracts/MeetdAppFactory.json' -import MeetdAppEventJson from '../../../assets/contracts/MeetdAppEvent.json' +import { CONTRACTS_JSON } from '@/constants/constants' import { useEffect, useState } from 'react' import { MeetdAppEvent, @@ -40,6 +39,7 @@ import Loader from '@/components/shared/Loader' import { useTranslation } from 'react-i18next' export default function Event(): JSX.Element { + const contractsJson = CONTRACTS_JSON() const [attendees, setAttendees] = useState([]) const [event, setEvent] = useState(initialEvent) const [hasTicket, setHasTicket] = useState(false) @@ -189,9 +189,14 @@ export default function Event(): JSX.Element { const rpcProvider: ethers.providers.JsonRpcProvider = new ethers.providers.JsonRpcProvider(PROVIDER) + console.log( + 'contractsJson.meetdAppFactory.address: ', + contractsJson.meetdAppFactory.address + ) + const meetdAppFactoryContract: MeetdAppFactory = new ethers.Contract( - MeetdAppFactoryJson.address, - MeetdAppFactoryJson.abi, + contractsJson.meetdAppFactory.address, + contractsJson.meetdAppFactory.abi, rpcProvider ) as MeetdAppFactory @@ -203,7 +208,7 @@ export default function Event(): JSX.Element { const eventContract = new ethers.Contract( eventContractAdress, - MeetdAppEventJson.abi, + contractsJson.meetdAppEvent.abi, rpcProvider ) as MeetdAppEvent diff --git a/src/pages/index.tsx b/src/pages/index.tsx index d70ae40..dba0eb8 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -3,7 +3,7 @@ import Hero from '@/components/home/Hero' import MiddleSections from '@/components/home/MiddleSections' import { ethers } from 'ethers' import { MeetdAppFactory } from '../../@types/typechain-types' -import MeetdAppFactoryJson from '../assets/contracts/MeetdAppFactory.json' +import { CONTRACTS_JSON } from '@/constants/constants' import Head from 'next/head' import Navbar from '@/components/shared/Navbar' import Footer from '@/components/shared/Footer' @@ -16,13 +16,14 @@ const metadata = { } export default function Home() { + const contractsJson = CONTRACTS_JSON() const [isLoading, setIsLoading] = useState(true) const fetchActiveEvents = async () => { setTimeout(() => { const meetdAppFactoryContract: MeetdAppFactory = new ethers.Contract( - MeetdAppFactoryJson.address, - MeetdAppFactoryJson.abi, + contractsJson.meetdAppFactory.address, + contractsJson.meetdAppFactory.abi, new ethers.providers.JsonRpcProvider(PROVIDER) ) as MeetdAppFactory