diff --git a/contract/contracts/Flatten.sol b/contract/contracts/Flatten.sol index 886978e..06191d6 100644 --- a/contract/contracts/Flatten.sol +++ b/contract/contracts/Flatten.sol @@ -213,58 +213,6 @@ interface IERC721 is IERC165 { */ function ownerOf(uint256 tokenId) external view returns (address owner); - /** - * @dev Safely transfers `tokenId` token from `from` to `to`. - * - * Requirements: - * - * - `from` cannot be the zero address. - * - `to` cannot be the zero address. - * - `tokenId` token must exist and be owned by `from`. - * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon - * a safe transfer. - * - * Emits a {Transfer} event. - */ - function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external; - - /** - * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients - * are aware of the ERC721 protocol to prevent tokens from being forever locked. - * - * Requirements: - * - * - `from` cannot be the zero address. - * - `to` cannot be the zero address. - * - `tokenId` token must exist and be owned by `from`. - * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or - * {setApprovalForAll}. - * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon - * a safe transfer. - * - * Emits a {Transfer} event. - */ - function safeTransferFrom(address from, address to, uint256 tokenId) external; - - /** - * @dev Transfers `tokenId` token from `from` to `to`. - * - * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 - * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must - * understand this adds an external call which potentially creates a reentrancy vulnerability. - * - * Requirements: - * - * - `from` cannot be the zero address. - * - `to` cannot be the zero address. - * - `tokenId` token must be owned by `from`. - * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - * - * Emits a {Transfer} event. - */ - function transferFrom(address from, address to, uint256 tokenId) external; - /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. @@ -1290,36 +1238,6 @@ abstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Er return _operatorApprovals[owner][operator]; } - /** - * @dev See {IERC721-transferFrom}. - */ - function transferFrom(address from, address to, uint256 tokenId) public virtual { - if (to == address(0)) { - revert ERC721InvalidReceiver(address(0)); - } - // Setting an "auth" arguments enables the `_isAuthorized` check which verifies that the token exists - // (from != 0). Therefore, it is not needed to verify that the return value is not 0 here. - address previousOwner = _update(to, tokenId, _msgSender()); - if (previousOwner != from) { - revert ERC721IncorrectOwner(from, tokenId, previousOwner); - } - } - - /** - * @dev See {IERC721-safeTransferFrom}. - */ - function safeTransferFrom(address from, address to, uint256 tokenId) public { - safeTransferFrom(from, to, tokenId, ""); - } - - /** - * @dev See {IERC721-safeTransferFrom}. - */ - function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual { - transferFrom(from, to, tokenId); - _checkOnERC721Received(from, to, tokenId, data); - } - /** * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist * @@ -1857,6 +1775,8 @@ abstract contract ReviewToken is } function referUser(address referred) public { + require(referred != _msgSender(), "You cannot refer yourself!"); + // todo cant refer already existing user require( _reviewEligibleUsers[_msgSender()], "You aren't eligible for referring someone, you must use some functionality first" @@ -1933,13 +1853,7 @@ abstract contract ReviewToken is _setTokenURI(tokenId, uri); return tokenId; } - - // soulbound functionality - - // function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) public override {} - // function safeTransferFrom(address from, address to, uint256 tokenId) public override {} - // function transferFrom(address from, address to, uint256 tokenId) public override {} - + // overrdies for gelato relay function _msgSender() diff --git a/contract/package.json b/contract/package.json index b9c2985..cf057f2 100644 --- a/contract/package.json +++ b/contract/package.json @@ -1,6 +1,6 @@ { "name": "jbhv12-web3-testimonials", - "version": "0.0.1", + "version": "0.0.2", "description": "Smart contract for web3 testimonials!", "repository": { "type": "git", diff --git a/web-app/assets/abi/ReviewToken.json b/web-app/assets/abi/ReviewToken.json index b1eb815..e7ac95e 100644 --- a/web-app/assets/abi/ReviewToken.json +++ b/web-app/assets/abi/ReviewToken.json @@ -599,8 +599,8 @@ "type": "receive" } ], - "bytecode": "0x60a06040523480156200001157600080fd5b5073d8253782c45a12053594b9deb72d8e8ab2fca54c6040518060400160405280601081526020016f2932bb34b2bba1b7b63632b1ba34b7b760811b8152506040518060400160405280600681526020016552455649455760d01b81525060016611c37937e0800084848481600090816200008d919062000165565b5060016200009c828262000165565b5050506001600160a01b03166080526008919091556009555062000231915050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000e957607f821691505b6020821081036200010a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000160576000816000526020600020601f850160051c810160208610156200013b5750805b601f850160051c820191505b818110156200015c5782815560010162000147565b5050505b505050565b81516001600160401b03811115620001815762000181620000be565b6200019981620001928454620000d4565b8462000110565b602080601f831160018114620001d15760008415620001b85750858301515b600019600386901b1c1916600185901b1785556200015c565b600085815260208120601f198616915b828110156200020257888601518255948401946001909101908401620001e1565b5085821015620002215787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051611d52620002546000396000818161026801526112ab0152611d526000f3fe60806040526004361061012e5760003560e01c8063701003d5116100ab578063b3b86d1c1161006f578063b3b86d1c14610363578063b88d4fde14610378578063c1fd55a514610398578063c87b56dd146103ad578063e985e9c5146103cd578063f1537686146103ed57600080fd5b8063701003d5146102d857806370a08231146102eb5780637f96934a1461031957806395d89b411461032e578063a22cb4651461034357600080fd5b806342842e0e116100f257806342842e0e1461020b57806342966c681461022b578063572b6c051461024b5780636352211e1461029857806365b8e524146102b857600080fd5b806301ffc9a71461013a57806306fdde031461016f578063081812fc14610191578063095ea7b3146101c957806323b872dd146101eb57600080fd5b3661013557005b600080fd5b34801561014657600080fd5b5061015a610155366004611793565b61040d565b60405190151581526020015b60405180910390f35b34801561017b57600080fd5b5061018461041e565b6040516101669190611800565b34801561019d57600080fd5b506101b16101ac366004611813565b6104b0565b6040516001600160a01b039091168152602001610166565b3480156101d557600080fd5b506101e96101e4366004611841565b6104d9565b005b3480156101f757600080fd5b506101e961020636600461186d565b6104ef565b34801561021757600080fd5b506101e961022636600461186d565b610586565b34801561023757600080fd5b506101e9610246366004611813565b6105a6565b34801561025757600080fd5b5061015a6102663660046118ae565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b3480156102a457600080fd5b506101b16102b3366004611813565b6105f7565b3480156102c457600080fd5b506101e96102d33660046118ae565b610602565b6101e96102e6366004611957565b610776565b3480156102f757600080fd5b5061030b6103063660046118ae565b610a0f565b604051908152602001610166565b34801561032557600080fd5b50610184610a57565b34801561033a57600080fd5b50610184610b97565b34801561034f57600080fd5b506101e961035e3660046119b2565b610ba6565b34801561036f57600080fd5b5061030b610bb8565b34801561038457600080fd5b506101e96103933660046119f0565b610c1d565b3480156103a457600080fd5b5061030b610c34565b3480156103b957600080fd5b506101846103c8366004611813565b610c41565b3480156103d957600080fd5b5061015a6103e8366004611a70565b610c4c565b3480156103f957600080fd5b5061030b6104083660046118ae565b610c7a565b600061041882610d3e565b92915050565b60606000805461042d90611a9e565b80601f016020809104026020016040519081016040528092919081815260200182805461045990611a9e565b80156104a65780601f1061047b576101008083540402835291602001916104a6565b820191906000526020600020905b81548152906001019060200180831161048957829003601f168201915b5050505050905090565b60006104bb82610d63565b506000828152600460205260409020546001600160a01b0316610418565b6104eb82826104e6610d9c565b610da6565b5050565b6001600160a01b03821661051e57604051633250574960e11b8152600060048201526024015b60405180910390fd5b6000610532838361052d610d9c565b610db3565b9050836001600160a01b0316816001600160a01b031614610580576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610515565b50505050565b6105a183838360405180602001604052806000815250610c1d565b505050565b6000818152600e6020526040812060010154600a8054919290916105cb908490611aee565b925050819055506001600b60008282546105e59190611aee565b909155506105f4905081610eac565b50565b600061041882610d63565b600c600061060e610d9c565b6001600160a01b0316815260208101919091526040016000205460ff166106b65760405162461bcd60e51b815260206004820152605060248201527f596f75206172656e277420656c696769626c6520666f7220726566657272696e60448201527f6720736f6d656f6e652c20796f75206d7573742075736520736f6d652066756e60648201526f18dd1a5bdb985b1a5d1e48199a5c9cdd60821b608482015260a401610515565b6001600160a01b038181166000908152600f602052604090205416156107175760405162461bcd60e51b81526020600482015260166024820152755573657220616c72656164792072656666657265642160501b6044820152606401610515565b604051806040016040528061072a610d9c565b6001600160a01b039081168252600060209283018190529381168452600f825260409093208251815493909201511515600160a01b026001600160a81b03199093169190931617179055565b61077e610c34565b600019146107d85760405162461bcd60e51b815260206004820152602160248201527f596f75206861766520616c7265616479207772697474656e20612072657669656044820152607760f81b6064820152608401610515565b600c60006107e4610d9c565b6001600160a01b0316815260208101919091526040016000205460ff166108855760405162461bcd60e51b815260206004820152604960248201527f596f75206172656e277420656c696769626c6520666f722077726974696e672060448201527f61207265766965772c20796f75206d7573742075736520736f6d652066756e6360648201526874696f6e616c69747960b81b608482015260a401610515565b600182101580156108975750600a8211155b6108e35760405162461bcd60e51b815260206004820152601f60248201527f526174696e67206d757374206265206265747765656e203120616e64203130006044820152606401610515565b60006108f66108f0610d9c565b83610eba565b90506040518060600160405280828152602001848152602001610917610d9c565b6001600160a01b039081169091526000838152600e60209081526040808320855181559185015160018301559390930151600290930180546001600160a01b03191693909216929092179055600d9061096e610d9c565b6001600160a01b0316815260208101919091526040016000205460ff166109d9576109a261099a610d9c565b600854610eef565b6001600d60006109b0610d9c565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b82600a60008282546109eb9190611b01565b925050819055506001600b6000828254610a059190611b01565b9091555050505050565b60006001600160a01b038216610a3b576040516322718ad960e21b815260006004820152602401610515565b506001600160a01b031660009081526003602052604090205490565b60606001600c6000610a67610d9c565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155600d81610a9d610d9c565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155610ad0610d9c565b6001600160a01b038082166000908152600f60205260409020549192501615801590610b1c57506001600160a01b0381166000908152600f6020526040902054600160a01b900460ff16155b15610b76576001600160a01b038082166000908152600f6020526040902054600954610b4c929190911690610eef565b6001600160a01b0381166000908152600f60205260409020805460ff60a01b1916600160a01b1790555b505060408051808201909152600581526468656c6c6f60d81b602082015290565b60606001805461042d90611a9e565b6104eb610bb1610d9c565b8383610f77565b600080600b5411610bfc5760405162461bcd60e51b815260206004820152600e60248201526d139bc81c995d9a595ddcc81e595d60921b6044820152606401610515565b600b54600a54610c0e906103e8611b14565b610c189190611b2b565b905090565b610c288484846104ef565b61058084848484611016565b6000610c18610408610d9c565b606061041882611146565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600080610c8683610a0f565b90508015610d345760005b6007548111610d32576040516331a9108f60e11b8152600481018290523090636352211e90602401602060405180830381865afa925050508015610cf2575060408051601f3d908101601f19168201909252610cef91810190611b4d565b60015b15610d205750836001600160a01b0316610d0b826105f7565b6001600160a01b031603610d20579392505050565b80610d2a81611b6a565b915050610c91565b505b5060001992915050565b60006001600160e01b03198216632483248360e11b1480610418575061041882611257565b6000818152600260205260408120546001600160a01b03168061041857604051637e27328960e01b815260048101849052602401610515565b6000610c186112a7565b6105a183838360016112eb565b6000828152600260205260408120546001600160a01b0390811690831615610de057610de08184866113f1565b6001600160a01b03811615610e1e57610dfd6000856000806112eb565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615610e4d576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6104eb60008261052d610d9c565b6007805460009182919082610ece83611b6a565b919050559050610ede8482611455565b610ee8818461146f565b9392505050565b600854471015610f415760405162461bcd60e51b815260206004820181905260248201527f436f6e74726163742062616c616e636520697320696e73756666696369656e746044820152606401610515565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156105a1573d6000803e3d6000fd5b6001600160a01b038216610fa957604051630b61174360e31b81526001600160a01b0383166004820152602401610515565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561058057826001600160a01b031663150b7a0261103d610d9c565b8685856040518563ffffffff1660e01b815260040161105f9493929190611b83565b6020604051808303816000875af192505050801561109a575060408051601f3d908101601f1916820190925261109791810190611bc0565b60015b611103573d8080156110c8576040519150601f19603f3d011682016040523d82523d6000602084013e6110cd565b606091505b5080516000036110fb57604051633250574960e11b81526001600160a01b0385166004820152602401610515565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461113f57604051633250574960e11b81526001600160a01b0385166004820152602401610515565b5050505050565b606061115182610d63565b506000828152600660205260408120805461116b90611a9e565b80601f016020809104026020016040519081016040528092919081815260200182805461119790611a9e565b80156111e45780601f106111b9576101008083540402835291602001916111e4565b820191906000526020600020905b8154815290600101906020018083116111c757829003601f168201915b50505050509050600061120260408051602081019091526000815290565b90508051600003611214575092915050565b81511561124657808260405160200161122e929190611bdd565b60405160208183030381529060405292505050919050565b61124f846114bf565b949350505050565b60006001600160e01b031982166380ac58cd60e01b148061128857506001600160e01b03198216635b5e139f60e01b145b8061041857506301ffc9a760e01b6001600160e01b0319831614610418565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036112e6575060131936013560601c90565b503390565b80806112ff57506001600160a01b03821615155b156113c157600061130f84610d63565b90506001600160a01b0383161580159061133b5750826001600160a01b0316816001600160a01b031614155b801561134e575061134c8184610c4c565b155b156113775760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610515565b81156113bf5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6113fc838383611533565b6105a1576001600160a01b03831661142a57604051637e27328960e01b815260048101829052602401610515565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610515565b6104eb828260405180602001604052806000815250611596565b60008281526006602052604090206114878282611c5c565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b60606114ca82610d63565b5060006114e260408051602081019091526000815290565b905060008151116115025760405180602001604052806000815250610ee8565b8061150c846115ad565b60405160200161151d929190611bdd565b6040516020818303038152906040529392505050565b60006001600160a01b0383161580159061124f5750826001600160a01b0316846001600160a01b0316148061156d575061156d8484610c4c565b8061124f5750506000908152600460205260409020546001600160a01b03908116911614919050565b6115a08383611640565b6105a16000848484611016565b606060006115ba836116a5565b600101905060008167ffffffffffffffff8111156115da576115da6118cb565b6040519080825280601f01601f191660200182016040528015611604576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461160e57509392505050565b6001600160a01b03821661166a57604051633250574960e11b815260006004820152602401610515565b600061167883836000610db3565b90506001600160a01b038116156105a1576040516339e3563760e11b815260006004820152602401610515565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106116e45772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611710576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061172e57662386f26fc10000830492506010015b6305f5e1008310611746576305f5e100830492506008015b612710831061175a57612710830492506004015b6064831061176c576064830492506002015b600a83106104185760010192915050565b6001600160e01b0319811681146105f457600080fd5b6000602082840312156117a557600080fd5b8135610ee88161177d565b60005b838110156117cb5781810151838201526020016117b3565b50506000910152565b600081518084526117ec8160208601602086016117b0565b601f01601f19169290920160200192915050565b602081526000610ee860208301846117d4565b60006020828403121561182557600080fd5b5035919050565b6001600160a01b03811681146105f457600080fd5b6000806040838503121561185457600080fd5b823561185f8161182c565b946020939093013593505050565b60008060006060848603121561188257600080fd5b833561188d8161182c565b9250602084013561189d8161182c565b929592945050506040919091013590565b6000602082840312156118c057600080fd5b8135610ee88161182c565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156118fc576118fc6118cb565b604051601f8501601f19908116603f01168101908282118183101715611924576119246118cb565b8160405280935085815286868601111561193d57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561196a57600080fd5b82359150602083013567ffffffffffffffff81111561198857600080fd5b8301601f8101851361199957600080fd5b6119a8858235602084016118e1565b9150509250929050565b600080604083850312156119c557600080fd5b82356119d08161182c565b9150602083013580151581146119e557600080fd5b809150509250929050565b60008060008060808587031215611a0657600080fd5b8435611a118161182c565b93506020850135611a218161182c565b925060408501359150606085013567ffffffffffffffff811115611a4457600080fd5b8501601f81018713611a5557600080fd5b611a64878235602084016118e1565b91505092959194509250565b60008060408385031215611a8357600080fd5b8235611a8e8161182c565b915060208301356119e58161182c565b600181811c90821680611ab257607f821691505b602082108103611ad257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561041857610418611ad8565b8082018082111561041857610418611ad8565b808202811582820484141761041857610418611ad8565b600082611b4857634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b5f57600080fd5b8151610ee88161182c565b600060018201611b7c57611b7c611ad8565b5060010190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611bb6908301846117d4565b9695505050505050565b600060208284031215611bd257600080fd5b8151610ee88161177d565b60008351611bef8184602088016117b0565b835190830190611c038183602088016117b0565b01949350505050565b601f8211156105a1576000816000526020600020601f850160051c81016020861015611c355750805b601f850160051c820191505b81811015611c5457828155600101611c41565b505050505050565b815167ffffffffffffffff811115611c7657611c766118cb565b611c8a81611c848454611a9e565b84611c0c565b602080601f831160018114611cbf5760008415611ca75750858301515b600019600386901b1c1916600185901b178555611c54565b600085815260208120601f198616915b82811015611cee57888601518255948401946001909101908401611ccf565b5085821015611d0c5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220a4dbade72bcc3717babd0ce549d41cd58be914b12752e213595be30af6003b7d64736f6c63430008180033", - "deployedBytecode": "0x60806040526004361061012e5760003560e01c8063701003d5116100ab578063b3b86d1c1161006f578063b3b86d1c14610363578063b88d4fde14610378578063c1fd55a514610398578063c87b56dd146103ad578063e985e9c5146103cd578063f1537686146103ed57600080fd5b8063701003d5146102d857806370a08231146102eb5780637f96934a1461031957806395d89b411461032e578063a22cb4651461034357600080fd5b806342842e0e116100f257806342842e0e1461020b57806342966c681461022b578063572b6c051461024b5780636352211e1461029857806365b8e524146102b857600080fd5b806301ffc9a71461013a57806306fdde031461016f578063081812fc14610191578063095ea7b3146101c957806323b872dd146101eb57600080fd5b3661013557005b600080fd5b34801561014657600080fd5b5061015a610155366004611793565b61040d565b60405190151581526020015b60405180910390f35b34801561017b57600080fd5b5061018461041e565b6040516101669190611800565b34801561019d57600080fd5b506101b16101ac366004611813565b6104b0565b6040516001600160a01b039091168152602001610166565b3480156101d557600080fd5b506101e96101e4366004611841565b6104d9565b005b3480156101f757600080fd5b506101e961020636600461186d565b6104ef565b34801561021757600080fd5b506101e961022636600461186d565b610586565b34801561023757600080fd5b506101e9610246366004611813565b6105a6565b34801561025757600080fd5b5061015a6102663660046118ae565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b3480156102a457600080fd5b506101b16102b3366004611813565b6105f7565b3480156102c457600080fd5b506101e96102d33660046118ae565b610602565b6101e96102e6366004611957565b610776565b3480156102f757600080fd5b5061030b6103063660046118ae565b610a0f565b604051908152602001610166565b34801561032557600080fd5b50610184610a57565b34801561033a57600080fd5b50610184610b97565b34801561034f57600080fd5b506101e961035e3660046119b2565b610ba6565b34801561036f57600080fd5b5061030b610bb8565b34801561038457600080fd5b506101e96103933660046119f0565b610c1d565b3480156103a457600080fd5b5061030b610c34565b3480156103b957600080fd5b506101846103c8366004611813565b610c41565b3480156103d957600080fd5b5061015a6103e8366004611a70565b610c4c565b3480156103f957600080fd5b5061030b6104083660046118ae565b610c7a565b600061041882610d3e565b92915050565b60606000805461042d90611a9e565b80601f016020809104026020016040519081016040528092919081815260200182805461045990611a9e565b80156104a65780601f1061047b576101008083540402835291602001916104a6565b820191906000526020600020905b81548152906001019060200180831161048957829003601f168201915b5050505050905090565b60006104bb82610d63565b506000828152600460205260409020546001600160a01b0316610418565b6104eb82826104e6610d9c565b610da6565b5050565b6001600160a01b03821661051e57604051633250574960e11b8152600060048201526024015b60405180910390fd5b6000610532838361052d610d9c565b610db3565b9050836001600160a01b0316816001600160a01b031614610580576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610515565b50505050565b6105a183838360405180602001604052806000815250610c1d565b505050565b6000818152600e6020526040812060010154600a8054919290916105cb908490611aee565b925050819055506001600b60008282546105e59190611aee565b909155506105f4905081610eac565b50565b600061041882610d63565b600c600061060e610d9c565b6001600160a01b0316815260208101919091526040016000205460ff166106b65760405162461bcd60e51b815260206004820152605060248201527f596f75206172656e277420656c696769626c6520666f7220726566657272696e60448201527f6720736f6d656f6e652c20796f75206d7573742075736520736f6d652066756e60648201526f18dd1a5bdb985b1a5d1e48199a5c9cdd60821b608482015260a401610515565b6001600160a01b038181166000908152600f602052604090205416156107175760405162461bcd60e51b81526020600482015260166024820152755573657220616c72656164792072656666657265642160501b6044820152606401610515565b604051806040016040528061072a610d9c565b6001600160a01b039081168252600060209283018190529381168452600f825260409093208251815493909201511515600160a01b026001600160a81b03199093169190931617179055565b61077e610c34565b600019146107d85760405162461bcd60e51b815260206004820152602160248201527f596f75206861766520616c7265616479207772697474656e20612072657669656044820152607760f81b6064820152608401610515565b600c60006107e4610d9c565b6001600160a01b0316815260208101919091526040016000205460ff166108855760405162461bcd60e51b815260206004820152604960248201527f596f75206172656e277420656c696769626c6520666f722077726974696e672060448201527f61207265766965772c20796f75206d7573742075736520736f6d652066756e6360648201526874696f6e616c69747960b81b608482015260a401610515565b600182101580156108975750600a8211155b6108e35760405162461bcd60e51b815260206004820152601f60248201527f526174696e67206d757374206265206265747765656e203120616e64203130006044820152606401610515565b60006108f66108f0610d9c565b83610eba565b90506040518060600160405280828152602001848152602001610917610d9c565b6001600160a01b039081169091526000838152600e60209081526040808320855181559185015160018301559390930151600290930180546001600160a01b03191693909216929092179055600d9061096e610d9c565b6001600160a01b0316815260208101919091526040016000205460ff166109d9576109a261099a610d9c565b600854610eef565b6001600d60006109b0610d9c565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b82600a60008282546109eb9190611b01565b925050819055506001600b6000828254610a059190611b01565b9091555050505050565b60006001600160a01b038216610a3b576040516322718ad960e21b815260006004820152602401610515565b506001600160a01b031660009081526003602052604090205490565b60606001600c6000610a67610d9c565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155600d81610a9d610d9c565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155610ad0610d9c565b6001600160a01b038082166000908152600f60205260409020549192501615801590610b1c57506001600160a01b0381166000908152600f6020526040902054600160a01b900460ff16155b15610b76576001600160a01b038082166000908152600f6020526040902054600954610b4c929190911690610eef565b6001600160a01b0381166000908152600f60205260409020805460ff60a01b1916600160a01b1790555b505060408051808201909152600581526468656c6c6f60d81b602082015290565b60606001805461042d90611a9e565b6104eb610bb1610d9c565b8383610f77565b600080600b5411610bfc5760405162461bcd60e51b815260206004820152600e60248201526d139bc81c995d9a595ddcc81e595d60921b6044820152606401610515565b600b54600a54610c0e906103e8611b14565b610c189190611b2b565b905090565b610c288484846104ef565b61058084848484611016565b6000610c18610408610d9c565b606061041882611146565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600080610c8683610a0f565b90508015610d345760005b6007548111610d32576040516331a9108f60e11b8152600481018290523090636352211e90602401602060405180830381865afa925050508015610cf2575060408051601f3d908101601f19168201909252610cef91810190611b4d565b60015b15610d205750836001600160a01b0316610d0b826105f7565b6001600160a01b031603610d20579392505050565b80610d2a81611b6a565b915050610c91565b505b5060001992915050565b60006001600160e01b03198216632483248360e11b1480610418575061041882611257565b6000818152600260205260408120546001600160a01b03168061041857604051637e27328960e01b815260048101849052602401610515565b6000610c186112a7565b6105a183838360016112eb565b6000828152600260205260408120546001600160a01b0390811690831615610de057610de08184866113f1565b6001600160a01b03811615610e1e57610dfd6000856000806112eb565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615610e4d576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6104eb60008261052d610d9c565b6007805460009182919082610ece83611b6a565b919050559050610ede8482611455565b610ee8818461146f565b9392505050565b600854471015610f415760405162461bcd60e51b815260206004820181905260248201527f436f6e74726163742062616c616e636520697320696e73756666696369656e746044820152606401610515565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156105a1573d6000803e3d6000fd5b6001600160a01b038216610fa957604051630b61174360e31b81526001600160a01b0383166004820152602401610515565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561058057826001600160a01b031663150b7a0261103d610d9c565b8685856040518563ffffffff1660e01b815260040161105f9493929190611b83565b6020604051808303816000875af192505050801561109a575060408051601f3d908101601f1916820190925261109791810190611bc0565b60015b611103573d8080156110c8576040519150601f19603f3d011682016040523d82523d6000602084013e6110cd565b606091505b5080516000036110fb57604051633250574960e11b81526001600160a01b0385166004820152602401610515565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461113f57604051633250574960e11b81526001600160a01b0385166004820152602401610515565b5050505050565b606061115182610d63565b506000828152600660205260408120805461116b90611a9e565b80601f016020809104026020016040519081016040528092919081815260200182805461119790611a9e565b80156111e45780601f106111b9576101008083540402835291602001916111e4565b820191906000526020600020905b8154815290600101906020018083116111c757829003601f168201915b50505050509050600061120260408051602081019091526000815290565b90508051600003611214575092915050565b81511561124657808260405160200161122e929190611bdd565b60405160208183030381529060405292505050919050565b61124f846114bf565b949350505050565b60006001600160e01b031982166380ac58cd60e01b148061128857506001600160e01b03198216635b5e139f60e01b145b8061041857506301ffc9a760e01b6001600160e01b0319831614610418565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036112e6575060131936013560601c90565b503390565b80806112ff57506001600160a01b03821615155b156113c157600061130f84610d63565b90506001600160a01b0383161580159061133b5750826001600160a01b0316816001600160a01b031614155b801561134e575061134c8184610c4c565b155b156113775760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610515565b81156113bf5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6113fc838383611533565b6105a1576001600160a01b03831661142a57604051637e27328960e01b815260048101829052602401610515565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610515565b6104eb828260405180602001604052806000815250611596565b60008281526006602052604090206114878282611c5c565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b60606114ca82610d63565b5060006114e260408051602081019091526000815290565b905060008151116115025760405180602001604052806000815250610ee8565b8061150c846115ad565b60405160200161151d929190611bdd565b6040516020818303038152906040529392505050565b60006001600160a01b0383161580159061124f5750826001600160a01b0316846001600160a01b0316148061156d575061156d8484610c4c565b8061124f5750506000908152600460205260409020546001600160a01b03908116911614919050565b6115a08383611640565b6105a16000848484611016565b606060006115ba836116a5565b600101905060008167ffffffffffffffff8111156115da576115da6118cb565b6040519080825280601f01601f191660200182016040528015611604576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461160e57509392505050565b6001600160a01b03821661166a57604051633250574960e11b815260006004820152602401610515565b600061167883836000610db3565b90506001600160a01b038116156105a1576040516339e3563760e11b815260006004820152602401610515565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106116e45772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611710576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061172e57662386f26fc10000830492506010015b6305f5e1008310611746576305f5e100830492506008015b612710831061175a57612710830492506004015b6064831061176c576064830492506002015b600a83106104185760010192915050565b6001600160e01b0319811681146105f457600080fd5b6000602082840312156117a557600080fd5b8135610ee88161177d565b60005b838110156117cb5781810151838201526020016117b3565b50506000910152565b600081518084526117ec8160208601602086016117b0565b601f01601f19169290920160200192915050565b602081526000610ee860208301846117d4565b60006020828403121561182557600080fd5b5035919050565b6001600160a01b03811681146105f457600080fd5b6000806040838503121561185457600080fd5b823561185f8161182c565b946020939093013593505050565b60008060006060848603121561188257600080fd5b833561188d8161182c565b9250602084013561189d8161182c565b929592945050506040919091013590565b6000602082840312156118c057600080fd5b8135610ee88161182c565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff808411156118fc576118fc6118cb565b604051601f8501601f19908116603f01168101908282118183101715611924576119246118cb565b8160405280935085815286868601111561193d57600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561196a57600080fd5b82359150602083013567ffffffffffffffff81111561198857600080fd5b8301601f8101851361199957600080fd5b6119a8858235602084016118e1565b9150509250929050565b600080604083850312156119c557600080fd5b82356119d08161182c565b9150602083013580151581146119e557600080fd5b809150509250929050565b60008060008060808587031215611a0657600080fd5b8435611a118161182c565b93506020850135611a218161182c565b925060408501359150606085013567ffffffffffffffff811115611a4457600080fd5b8501601f81018713611a5557600080fd5b611a64878235602084016118e1565b91505092959194509250565b60008060408385031215611a8357600080fd5b8235611a8e8161182c565b915060208301356119e58161182c565b600181811c90821680611ab257607f821691505b602082108103611ad257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561041857610418611ad8565b8082018082111561041857610418611ad8565b808202811582820484141761041857610418611ad8565b600082611b4857634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611b5f57600080fd5b8151610ee88161182c565b600060018201611b7c57611b7c611ad8565b5060010190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611bb6908301846117d4565b9695505050505050565b600060208284031215611bd257600080fd5b8151610ee88161177d565b60008351611bef8184602088016117b0565b835190830190611c038183602088016117b0565b01949350505050565b601f8211156105a1576000816000526020600020601f850160051c81016020861015611c355750805b601f850160051c820191505b81811015611c5457828155600101611c41565b505050505050565b815167ffffffffffffffff811115611c7657611c766118cb565b611c8a81611c848454611a9e565b84611c0c565b602080601f831160018114611cbf5760008415611ca75750858301515b600019600386901b1c1916600185901b178555611c54565b600085815260208120601f198616915b82811015611cee57888601518255948401946001909101908401611ccf565b5085821015611d0c5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220a4dbade72bcc3717babd0ce549d41cd58be914b12752e213595be30af6003b7d64736f6c63430008180033", + "bytecode": "0x60a06040523480156200001157600080fd5b5073d8253782c45a12053594b9deb72d8e8ab2fca54c6040518060400160405280601081526020016f2932bb34b2bba1b7b63632b1ba34b7b760811b8152506040518060400160405280600681526020016552455649455760d01b81525060016611c37937e0800084848481600090816200008d919062000165565b5060016200009c828262000165565b5050506001600160a01b03166080526008919091556009555062000231915050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000e957607f821691505b6020821081036200010a57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000160576000816000526020600020601f850160051c810160208610156200013b5750805b601f850160051c820191505b818110156200015c5782815560010162000147565b5050505b505050565b81516001600160401b03811115620001815762000181620000be565b6200019981620001928454620000d4565b8462000110565b602080601f831160018114620001d15760008415620001b85750858301515b600019600386901b1c1916600185901b1785556200015c565b600085815260208120601f198616915b828110156200020257888601518255948401946001909101908401620001e1565b5085821015620002215787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051611dba620002546000396000818161026801526113130152611dba6000f3fe60806040526004361061012e5760003560e01c8063701003d5116100ab578063b3b86d1c1161006f578063b3b86d1c14610363578063b88d4fde14610378578063c1fd55a514610398578063c87b56dd146103ad578063e985e9c5146103cd578063f1537686146103ed57600080fd5b8063701003d5146102d857806370a08231146102eb5780637f96934a1461031957806395d89b411461032e578063a22cb4651461034357600080fd5b806342842e0e116100f257806342842e0e1461020b57806342966c681461022b578063572b6c051461024b5780636352211e1461029857806365b8e524146102b857600080fd5b806301ffc9a71461013a57806306fdde031461016f578063081812fc14610191578063095ea7b3146101c957806323b872dd146101eb57600080fd5b3661013557005b600080fd5b34801561014657600080fd5b5061015a6101553660046117fb565b61040d565b60405190151581526020015b60405180910390f35b34801561017b57600080fd5b5061018461041e565b6040516101669190611868565b34801561019d57600080fd5b506101b16101ac36600461187b565b6104b0565b6040516001600160a01b039091168152602001610166565b3480156101d557600080fd5b506101e96101e43660046118a9565b6104d9565b005b3480156101f757600080fd5b506101e96102063660046118d5565b6104ef565b34801561021757600080fd5b506101e96102263660046118d5565b610586565b34801561023757600080fd5b506101e961024636600461187b565b6105a6565b34801561025757600080fd5b5061015a610266366004611916565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b3480156102a457600080fd5b506101b16102b336600461187b565b6105f7565b3480156102c457600080fd5b506101e96102d3366004611916565b610602565b6101e96102e63660046119bf565b6107de565b3480156102f757600080fd5b5061030b610306366004611916565b610a77565b604051908152602001610166565b34801561032557600080fd5b50610184610abf565b34801561033a57600080fd5b50610184610bff565b34801561034f57600080fd5b506101e961035e366004611a1a565b610c0e565b34801561036f57600080fd5b5061030b610c20565b34801561038457600080fd5b506101e9610393366004611a58565b610c85565b3480156103a457600080fd5b5061030b610c9c565b3480156103b957600080fd5b506101846103c836600461187b565b610ca9565b3480156103d957600080fd5b5061015a6103e8366004611ad8565b610cb4565b3480156103f957600080fd5b5061030b610408366004611916565b610ce2565b600061041882610da6565b92915050565b60606000805461042d90611b06565b80601f016020809104026020016040519081016040528092919081815260200182805461045990611b06565b80156104a65780601f1061047b576101008083540402835291602001916104a6565b820191906000526020600020905b81548152906001019060200180831161048957829003601f168201915b5050505050905090565b60006104bb82610dcb565b506000828152600460205260409020546001600160a01b0316610418565b6104eb82826104e6610e04565b610e0e565b5050565b6001600160a01b03821661051e57604051633250574960e11b8152600060048201526024015b60405180910390fd5b6000610532838361052d610e04565b610e1b565b9050836001600160a01b0316816001600160a01b031614610580576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610515565b50505050565b6105a183838360405180602001604052806000815250610c85565b505050565b6000818152600e6020526040812060010154600a8054919290916105cb908490611b56565b925050819055506001600b60008282546105e59190611b56565b909155506105f4905081610f14565b50565b600061041882610dcb565b61060a610e04565b6001600160a01b0316816001600160a01b03160361066a5760405162461bcd60e51b815260206004820152601a60248201527f596f752063616e6e6f7420726566657220796f757273656c66210000000000006044820152606401610515565b600c6000610676610e04565b6001600160a01b0316815260208101919091526040016000205460ff1661071e5760405162461bcd60e51b815260206004820152605060248201527f596f75206172656e277420656c696769626c6520666f7220726566657272696e60448201527f6720736f6d656f6e652c20796f75206d7573742075736520736f6d652066756e60648201526f18dd1a5bdb985b1a5d1e48199a5c9cdd60821b608482015260a401610515565b6001600160a01b038181166000908152600f6020526040902054161561077f5760405162461bcd60e51b81526020600482015260166024820152755573657220616c72656164792072656666657265642160501b6044820152606401610515565b6040518060400160405280610792610e04565b6001600160a01b039081168252600060209283018190529381168452600f825260409093208251815493909201511515600160a01b026001600160a81b03199093169190931617179055565b6107e6610c9c565b600019146108405760405162461bcd60e51b815260206004820152602160248201527f596f75206861766520616c7265616479207772697474656e20612072657669656044820152607760f81b6064820152608401610515565b600c600061084c610e04565b6001600160a01b0316815260208101919091526040016000205460ff166108ed5760405162461bcd60e51b815260206004820152604960248201527f596f75206172656e277420656c696769626c6520666f722077726974696e672060448201527f61207265766965772c20796f75206d7573742075736520736f6d652066756e6360648201526874696f6e616c69747960b81b608482015260a401610515565b600182101580156108ff5750600a8211155b61094b5760405162461bcd60e51b815260206004820152601f60248201527f526174696e67206d757374206265206265747765656e203120616e64203130006044820152606401610515565b600061095e610958610e04565b83610f22565b9050604051806060016040528082815260200184815260200161097f610e04565b6001600160a01b039081169091526000838152600e60209081526040808320855181559185015160018301559390930151600290930180546001600160a01b03191693909216929092179055600d906109d6610e04565b6001600160a01b0316815260208101919091526040016000205460ff16610a4157610a0a610a02610e04565b600854610f57565b6001600d6000610a18610e04565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b82600a6000828254610a539190611b69565b925050819055506001600b6000828254610a6d9190611b69565b9091555050505050565b60006001600160a01b038216610aa3576040516322718ad960e21b815260006004820152602401610515565b506001600160a01b031660009081526003602052604090205490565b60606001600c6000610acf610e04565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155600d81610b05610e04565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155610b38610e04565b6001600160a01b038082166000908152600f60205260409020549192501615801590610b8457506001600160a01b0381166000908152600f6020526040902054600160a01b900460ff16155b15610bde576001600160a01b038082166000908152600f6020526040902054600954610bb4929190911690610f57565b6001600160a01b0381166000908152600f60205260409020805460ff60a01b1916600160a01b1790555b505060408051808201909152600581526468656c6c6f60d81b602082015290565b60606001805461042d90611b06565b6104eb610c19610e04565b8383610fdf565b600080600b5411610c645760405162461bcd60e51b815260206004820152600e60248201526d139bc81c995d9a595ddcc81e595d60921b6044820152606401610515565b600b54600a54610c76906103e8611b7c565b610c809190611b93565b905090565b610c908484846104ef565b6105808484848461107e565b6000610c80610408610e04565b6060610418826111ae565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600080610cee83610a77565b90508015610d9c5760005b6007548111610d9a576040516331a9108f60e11b8152600481018290523090636352211e90602401602060405180830381865afa925050508015610d5a575060408051601f3d908101601f19168201909252610d5791810190611bb5565b60015b15610d885750836001600160a01b0316610d73826105f7565b6001600160a01b031603610d88579392505050565b80610d9281611bd2565b915050610cf9565b505b5060001992915050565b60006001600160e01b03198216632483248360e11b14806104185750610418826112bf565b6000818152600260205260408120546001600160a01b03168061041857604051637e27328960e01b815260048101849052602401610515565b6000610c8061130f565b6105a18383836001611353565b6000828152600260205260408120546001600160a01b0390811690831615610e4857610e48818486611459565b6001600160a01b03811615610e8657610e65600085600080611353565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615610eb5576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6104eb60008261052d610e04565b6007805460009182919082610f3683611bd2565b919050559050610f4684826114bd565b610f5081846114d7565b9392505050565b600854471015610fa95760405162461bcd60e51b815260206004820181905260248201527f436f6e74726163742062616c616e636520697320696e73756666696369656e746044820152606401610515565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156105a1573d6000803e3d6000fd5b6001600160a01b03821661101157604051630b61174360e31b81526001600160a01b0383166004820152602401610515565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561058057826001600160a01b031663150b7a026110a5610e04565b8685856040518563ffffffff1660e01b81526004016110c79493929190611beb565b6020604051808303816000875af1925050508015611102575060408051601f3d908101601f191682019092526110ff91810190611c28565b60015b61116b573d808015611130576040519150601f19603f3d011682016040523d82523d6000602084013e611135565b606091505b50805160000361116357604051633250574960e11b81526001600160a01b0385166004820152602401610515565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146111a757604051633250574960e11b81526001600160a01b0385166004820152602401610515565b5050505050565b60606111b982610dcb565b50600082815260066020526040812080546111d390611b06565b80601f01602080910402602001604051908101604052809291908181526020018280546111ff90611b06565b801561124c5780601f106112215761010080835404028352916020019161124c565b820191906000526020600020905b81548152906001019060200180831161122f57829003601f168201915b50505050509050600061126a60408051602081019091526000815290565b9050805160000361127c575092915050565b8151156112ae578082604051602001611296929190611c45565b60405160208183030381529060405292505050919050565b6112b784611527565b949350505050565b60006001600160e01b031982166380ac58cd60e01b14806112f057506001600160e01b03198216635b5e139f60e01b145b8061041857506301ffc9a760e01b6001600160e01b0319831614610418565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361134e575060131936013560601c90565b503390565b808061136757506001600160a01b03821615155b1561142957600061137784610dcb565b90506001600160a01b038316158015906113a35750826001600160a01b0316816001600160a01b031614155b80156113b657506113b48184610cb4565b155b156113df5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610515565b81156114275783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b61146483838361159b565b6105a1576001600160a01b03831661149257604051637e27328960e01b815260048101829052602401610515565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610515565b6104eb8282604051806020016040528060008152506115fe565b60008281526006602052604090206114ef8282611cc4565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b606061153282610dcb565b50600061154a60408051602081019091526000815290565b9050600081511161156a5760405180602001604052806000815250610f50565b8061157484611615565b604051602001611585929190611c45565b6040516020818303038152906040529392505050565b60006001600160a01b038316158015906112b75750826001600160a01b0316846001600160a01b031614806115d557506115d58484610cb4565b806112b75750506000908152600460205260409020546001600160a01b03908116911614919050565b61160883836116a8565b6105a1600084848461107e565b606060006116228361170d565b600101905060008167ffffffffffffffff81111561164257611642611933565b6040519080825280601f01601f19166020018201604052801561166c576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461167657509392505050565b6001600160a01b0382166116d257604051633250574960e11b815260006004820152602401610515565b60006116e083836000610e1b565b90506001600160a01b038116156105a1576040516339e3563760e11b815260006004820152602401610515565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061174c5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611778576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061179657662386f26fc10000830492506010015b6305f5e10083106117ae576305f5e100830492506008015b61271083106117c257612710830492506004015b606483106117d4576064830492506002015b600a83106104185760010192915050565b6001600160e01b0319811681146105f457600080fd5b60006020828403121561180d57600080fd5b8135610f50816117e5565b60005b8381101561183357818101518382015260200161181b565b50506000910152565b60008151808452611854816020860160208601611818565b601f01601f19169290920160200192915050565b602081526000610f50602083018461183c565b60006020828403121561188d57600080fd5b5035919050565b6001600160a01b03811681146105f457600080fd5b600080604083850312156118bc57600080fd5b82356118c781611894565b946020939093013593505050565b6000806000606084860312156118ea57600080fd5b83356118f581611894565b9250602084013561190581611894565b929592945050506040919091013590565b60006020828403121561192857600080fd5b8135610f5081611894565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561196457611964611933565b604051601f8501601f19908116603f0116810190828211818310171561198c5761198c611933565b816040528093508581528686860111156119a557600080fd5b858560208301376000602087830101525050509392505050565b600080604083850312156119d257600080fd5b82359150602083013567ffffffffffffffff8111156119f057600080fd5b8301601f81018513611a0157600080fd5b611a1085823560208401611949565b9150509250929050565b60008060408385031215611a2d57600080fd5b8235611a3881611894565b915060208301358015158114611a4d57600080fd5b809150509250929050565b60008060008060808587031215611a6e57600080fd5b8435611a7981611894565b93506020850135611a8981611894565b925060408501359150606085013567ffffffffffffffff811115611aac57600080fd5b8501601f81018713611abd57600080fd5b611acc87823560208401611949565b91505092959194509250565b60008060408385031215611aeb57600080fd5b8235611af681611894565b91506020830135611a4d81611894565b600181811c90821680611b1a57607f821691505b602082108103611b3a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561041857610418611b40565b8082018082111561041857610418611b40565b808202811582820484141761041857610418611b40565b600082611bb057634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611bc757600080fd5b8151610f5081611894565b600060018201611be457611be4611b40565b5060010190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611c1e9083018461183c565b9695505050505050565b600060208284031215611c3a57600080fd5b8151610f50816117e5565b60008351611c57818460208801611818565b835190830190611c6b818360208801611818565b01949350505050565b601f8211156105a1576000816000526020600020601f850160051c81016020861015611c9d5750805b601f850160051c820191505b81811015611cbc57828155600101611ca9565b505050505050565b815167ffffffffffffffff811115611cde57611cde611933565b611cf281611cec8454611b06565b84611c74565b602080601f831160018114611d275760008415611d0f5750858301515b600019600386901b1c1916600185901b178555611cbc565b600085815260208120601f198616915b82811015611d5657888601518255948401946001909101908401611d37565b5085821015611d745787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220bb1e861a5a8ad60e9e93121b305964e71fb256d63295b2c0dd085b7f4d90861a64736f6c63430008180033", + "deployedBytecode": "0x60806040526004361061012e5760003560e01c8063701003d5116100ab578063b3b86d1c1161006f578063b3b86d1c14610363578063b88d4fde14610378578063c1fd55a514610398578063c87b56dd146103ad578063e985e9c5146103cd578063f1537686146103ed57600080fd5b8063701003d5146102d857806370a08231146102eb5780637f96934a1461031957806395d89b411461032e578063a22cb4651461034357600080fd5b806342842e0e116100f257806342842e0e1461020b57806342966c681461022b578063572b6c051461024b5780636352211e1461029857806365b8e524146102b857600080fd5b806301ffc9a71461013a57806306fdde031461016f578063081812fc14610191578063095ea7b3146101c957806323b872dd146101eb57600080fd5b3661013557005b600080fd5b34801561014657600080fd5b5061015a6101553660046117fb565b61040d565b60405190151581526020015b60405180910390f35b34801561017b57600080fd5b5061018461041e565b6040516101669190611868565b34801561019d57600080fd5b506101b16101ac36600461187b565b6104b0565b6040516001600160a01b039091168152602001610166565b3480156101d557600080fd5b506101e96101e43660046118a9565b6104d9565b005b3480156101f757600080fd5b506101e96102063660046118d5565b6104ef565b34801561021757600080fd5b506101e96102263660046118d5565b610586565b34801561023757600080fd5b506101e961024636600461187b565b6105a6565b34801561025757600080fd5b5061015a610266366004611916565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b3480156102a457600080fd5b506101b16102b336600461187b565b6105f7565b3480156102c457600080fd5b506101e96102d3366004611916565b610602565b6101e96102e63660046119bf565b6107de565b3480156102f757600080fd5b5061030b610306366004611916565b610a77565b604051908152602001610166565b34801561032557600080fd5b50610184610abf565b34801561033a57600080fd5b50610184610bff565b34801561034f57600080fd5b506101e961035e366004611a1a565b610c0e565b34801561036f57600080fd5b5061030b610c20565b34801561038457600080fd5b506101e9610393366004611a58565b610c85565b3480156103a457600080fd5b5061030b610c9c565b3480156103b957600080fd5b506101846103c836600461187b565b610ca9565b3480156103d957600080fd5b5061015a6103e8366004611ad8565b610cb4565b3480156103f957600080fd5b5061030b610408366004611916565b610ce2565b600061041882610da6565b92915050565b60606000805461042d90611b06565b80601f016020809104026020016040519081016040528092919081815260200182805461045990611b06565b80156104a65780601f1061047b576101008083540402835291602001916104a6565b820191906000526020600020905b81548152906001019060200180831161048957829003601f168201915b5050505050905090565b60006104bb82610dcb565b506000828152600460205260409020546001600160a01b0316610418565b6104eb82826104e6610e04565b610e0e565b5050565b6001600160a01b03821661051e57604051633250574960e11b8152600060048201526024015b60405180910390fd5b6000610532838361052d610e04565b610e1b565b9050836001600160a01b0316816001600160a01b031614610580576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610515565b50505050565b6105a183838360405180602001604052806000815250610c85565b505050565b6000818152600e6020526040812060010154600a8054919290916105cb908490611b56565b925050819055506001600b60008282546105e59190611b56565b909155506105f4905081610f14565b50565b600061041882610dcb565b61060a610e04565b6001600160a01b0316816001600160a01b03160361066a5760405162461bcd60e51b815260206004820152601a60248201527f596f752063616e6e6f7420726566657220796f757273656c66210000000000006044820152606401610515565b600c6000610676610e04565b6001600160a01b0316815260208101919091526040016000205460ff1661071e5760405162461bcd60e51b815260206004820152605060248201527f596f75206172656e277420656c696769626c6520666f7220726566657272696e60448201527f6720736f6d656f6e652c20796f75206d7573742075736520736f6d652066756e60648201526f18dd1a5bdb985b1a5d1e48199a5c9cdd60821b608482015260a401610515565b6001600160a01b038181166000908152600f6020526040902054161561077f5760405162461bcd60e51b81526020600482015260166024820152755573657220616c72656164792072656666657265642160501b6044820152606401610515565b6040518060400160405280610792610e04565b6001600160a01b039081168252600060209283018190529381168452600f825260409093208251815493909201511515600160a01b026001600160a81b03199093169190931617179055565b6107e6610c9c565b600019146108405760405162461bcd60e51b815260206004820152602160248201527f596f75206861766520616c7265616479207772697474656e20612072657669656044820152607760f81b6064820152608401610515565b600c600061084c610e04565b6001600160a01b0316815260208101919091526040016000205460ff166108ed5760405162461bcd60e51b815260206004820152604960248201527f596f75206172656e277420656c696769626c6520666f722077726974696e672060448201527f61207265766965772c20796f75206d7573742075736520736f6d652066756e6360648201526874696f6e616c69747960b81b608482015260a401610515565b600182101580156108ff5750600a8211155b61094b5760405162461bcd60e51b815260206004820152601f60248201527f526174696e67206d757374206265206265747765656e203120616e64203130006044820152606401610515565b600061095e610958610e04565b83610f22565b9050604051806060016040528082815260200184815260200161097f610e04565b6001600160a01b039081169091526000838152600e60209081526040808320855181559185015160018301559390930151600290930180546001600160a01b03191693909216929092179055600d906109d6610e04565b6001600160a01b0316815260208101919091526040016000205460ff16610a4157610a0a610a02610e04565b600854610f57565b6001600d6000610a18610e04565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790555b82600a6000828254610a539190611b69565b925050819055506001600b6000828254610a6d9190611b69565b9091555050505050565b60006001600160a01b038216610aa3576040516322718ad960e21b815260006004820152602401610515565b506001600160a01b031660009081526003602052604090205490565b60606001600c6000610acf610e04565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155600d81610b05610e04565b6001600160a01b0316815260208101919091526040016000908120805460ff191692151592909217909155610b38610e04565b6001600160a01b038082166000908152600f60205260409020549192501615801590610b8457506001600160a01b0381166000908152600f6020526040902054600160a01b900460ff16155b15610bde576001600160a01b038082166000908152600f6020526040902054600954610bb4929190911690610f57565b6001600160a01b0381166000908152600f60205260409020805460ff60a01b1916600160a01b1790555b505060408051808201909152600581526468656c6c6f60d81b602082015290565b60606001805461042d90611b06565b6104eb610c19610e04565b8383610fdf565b600080600b5411610c645760405162461bcd60e51b815260206004820152600e60248201526d139bc81c995d9a595ddcc81e595d60921b6044820152606401610515565b600b54600a54610c76906103e8611b7c565b610c809190611b93565b905090565b610c908484846104ef565b6105808484848461107e565b6000610c80610408610e04565b6060610418826111ae565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b600080610cee83610a77565b90508015610d9c5760005b6007548111610d9a576040516331a9108f60e11b8152600481018290523090636352211e90602401602060405180830381865afa925050508015610d5a575060408051601f3d908101601f19168201909252610d5791810190611bb5565b60015b15610d885750836001600160a01b0316610d73826105f7565b6001600160a01b031603610d88579392505050565b80610d9281611bd2565b915050610cf9565b505b5060001992915050565b60006001600160e01b03198216632483248360e11b14806104185750610418826112bf565b6000818152600260205260408120546001600160a01b03168061041857604051637e27328960e01b815260048101849052602401610515565b6000610c8061130f565b6105a18383836001611353565b6000828152600260205260408120546001600160a01b0390811690831615610e4857610e48818486611459565b6001600160a01b03811615610e8657610e65600085600080611353565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615610eb5576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6104eb60008261052d610e04565b6007805460009182919082610f3683611bd2565b919050559050610f4684826114bd565b610f5081846114d7565b9392505050565b600854471015610fa95760405162461bcd60e51b815260206004820181905260248201527f436f6e74726163742062616c616e636520697320696e73756666696369656e746044820152606401610515565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156105a1573d6000803e3d6000fd5b6001600160a01b03821661101157604051630b61174360e31b81526001600160a01b0383166004820152602401610515565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561058057826001600160a01b031663150b7a026110a5610e04565b8685856040518563ffffffff1660e01b81526004016110c79493929190611beb565b6020604051808303816000875af1925050508015611102575060408051601f3d908101601f191682019092526110ff91810190611c28565b60015b61116b573d808015611130576040519150601f19603f3d011682016040523d82523d6000602084013e611135565b606091505b50805160000361116357604051633250574960e11b81526001600160a01b0385166004820152602401610515565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146111a757604051633250574960e11b81526001600160a01b0385166004820152602401610515565b5050505050565b60606111b982610dcb565b50600082815260066020526040812080546111d390611b06565b80601f01602080910402602001604051908101604052809291908181526020018280546111ff90611b06565b801561124c5780601f106112215761010080835404028352916020019161124c565b820191906000526020600020905b81548152906001019060200180831161122f57829003601f168201915b50505050509050600061126a60408051602081019091526000815290565b9050805160000361127c575092915050565b8151156112ae578082604051602001611296929190611c45565b60405160208183030381529060405292505050919050565b6112b784611527565b949350505050565b60006001600160e01b031982166380ac58cd60e01b14806112f057506001600160e01b03198216635b5e139f60e01b145b8061041857506301ffc9a760e01b6001600160e01b0319831614610418565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361134e575060131936013560601c90565b503390565b808061136757506001600160a01b03821615155b1561142957600061137784610dcb565b90506001600160a01b038316158015906113a35750826001600160a01b0316816001600160a01b031614155b80156113b657506113b48184610cb4565b155b156113df5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610515565b81156114275783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b61146483838361159b565b6105a1576001600160a01b03831661149257604051637e27328960e01b815260048101829052602401610515565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610515565b6104eb8282604051806020016040528060008152506115fe565b60008281526006602052604090206114ef8282611cc4565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b606061153282610dcb565b50600061154a60408051602081019091526000815290565b9050600081511161156a5760405180602001604052806000815250610f50565b8061157484611615565b604051602001611585929190611c45565b6040516020818303038152906040529392505050565b60006001600160a01b038316158015906112b75750826001600160a01b0316846001600160a01b031614806115d557506115d58484610cb4565b806112b75750506000908152600460205260409020546001600160a01b03908116911614919050565b61160883836116a8565b6105a1600084848461107e565b606060006116228361170d565b600101905060008167ffffffffffffffff81111561164257611642611933565b6040519080825280601f01601f19166020018201604052801561166c576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461167657509392505050565b6001600160a01b0382166116d257604051633250574960e11b815260006004820152602401610515565b60006116e083836000610e1b565b90506001600160a01b038116156105a1576040516339e3563760e11b815260006004820152602401610515565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061174c5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611778576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061179657662386f26fc10000830492506010015b6305f5e10083106117ae576305f5e100830492506008015b61271083106117c257612710830492506004015b606483106117d4576064830492506002015b600a83106104185760010192915050565b6001600160e01b0319811681146105f457600080fd5b60006020828403121561180d57600080fd5b8135610f50816117e5565b60005b8381101561183357818101518382015260200161181b565b50506000910152565b60008151808452611854816020860160208601611818565b601f01601f19169290920160200192915050565b602081526000610f50602083018461183c565b60006020828403121561188d57600080fd5b5035919050565b6001600160a01b03811681146105f457600080fd5b600080604083850312156118bc57600080fd5b82356118c781611894565b946020939093013593505050565b6000806000606084860312156118ea57600080fd5b83356118f581611894565b9250602084013561190581611894565b929592945050506040919091013590565b60006020828403121561192857600080fd5b8135610f5081611894565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561196457611964611933565b604051601f8501601f19908116603f0116810190828211818310171561198c5761198c611933565b816040528093508581528686860111156119a557600080fd5b858560208301376000602087830101525050509392505050565b600080604083850312156119d257600080fd5b82359150602083013567ffffffffffffffff8111156119f057600080fd5b8301601f81018513611a0157600080fd5b611a1085823560208401611949565b9150509250929050565b60008060408385031215611a2d57600080fd5b8235611a3881611894565b915060208301358015158114611a4d57600080fd5b809150509250929050565b60008060008060808587031215611a6e57600080fd5b8435611a7981611894565b93506020850135611a8981611894565b925060408501359150606085013567ffffffffffffffff811115611aac57600080fd5b8501601f81018713611abd57600080fd5b611acc87823560208401611949565b91505092959194509250565b60008060408385031215611aeb57600080fd5b8235611af681611894565b91506020830135611a4d81611894565b600181811c90821680611b1a57607f821691505b602082108103611b3a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561041857610418611b40565b8082018082111561041857610418611b40565b808202811582820484141761041857610418611b40565b600082611bb057634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611bc757600080fd5b8151610f5081611894565b600060018201611be457611be4611b40565b5060010190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611c1e9083018461183c565b9695505050505050565b600060208284031215611c3a57600080fd5b8151610f50816117e5565b60008351611c57818460208801611818565b835190830190611c6b818360208801611818565b01949350505050565b601f8211156105a1576000816000526020600020601f850160051c81016020861015611c9d5750805b601f850160051c820191505b81811015611cbc57828155600101611ca9565b505050505050565b815167ffffffffffffffff811115611cde57611cde611933565b611cf281611cec8454611b06565b84611c74565b602080601f831160018114611d275760008415611d0f5750858301515b600019600386901b1c1916600185901b178555611cbc565b600085815260208120601f198616915b82811015611d5657888601518255948401946001909101908401611d37565b5085821015611d745787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220bb1e861a5a8ad60e9e93121b305964e71fb256d63295b2c0dd085b7f4d90861a64736f6c63430008180033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/web-app/pages/index.tsx b/web-app/pages/index.tsx index f3f8cbf..d6ccb7d 100644 --- a/web-app/pages/index.tsx +++ b/web-app/pages/index.tsx @@ -18,8 +18,7 @@ import { useState, useEffect } from "react"; const Home: NextPage = () => { const { mutateAsync: upload } = useStorageUpload(); - const target = "0x1B329aaB594AC443A85694D0FBA441022e3d352f"; - const contractTokenId = "0xEA4C26D469312A9BBC24bC89F6061ebC212fF37F"; + const target = "0x9C384C6676f60e7a6Ad4E13655aD1894a8453287"; const address = useAddress(); const chainId = useChainId(); const { contract } = useContract(target); @@ -106,7 +105,7 @@ const Home: NextPage = () => { useEffect(() => { const fetchData = async () => { try { - const response = await fetch('https://sepolia-blockscout.lisk.com/api/v2/tokens/' + contractTokenId); // todo + const response = await fetch('https://sepolia-blockscout.lisk.com/api/v2/tokens/' + target); const { holders } = await response.json(); setNumberOfUsers(holders); } catch (error) { @@ -227,13 +226,18 @@ const Home: NextPage = () => {

Welcome to{" "} - My Actually Awesome App + Credible Crypto

Reviews

-

{numberOfUsers} people say so with an avg rating of {avgRatings ? avgRatings.toNumber() / 1000 : "no reviews yet"}

+ {avgRatings && numberOfUsers != -1 ? ( +

{numberOfUsers} people say so with an avg rating of {avgRatings.toNumber() / 1000}/10

+ ) : ( +

There are no reviews yet.

+ )} +
diff --git a/web-app/pages/web2.tsx b/web-app/pages/web2.tsx index 2da9fae..3b9aa16 100644 --- a/web-app/pages/web2.tsx +++ b/web-app/pages/web2.tsx @@ -85,22 +85,10 @@ const Home: NextPage = () => {

Welcome to{" "} - My Actually Awesome App + My Awesome App

-
- -
- -
-

{owner}

- {owner === address ?

true

:

false

} - - - -
+

100 people gave it avg rating of 9.8/10!