{ "_format": "hh3-artifact-1", "contractName": "EasyTokenDocument", "sourceName": "contracts/EasyTokenDocument.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "admin", "type": "address" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "AppraisalUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_fromTokenId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_toTokenId", "type": "uint256" } ], "name": "BatchMetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isBlacklisted", "type": "bool" } ], "name": "BlacklistUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "string", "name": "content", "type": "string" } ], "name": "ContentMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "string", "name": "uri", "type": "string" }, { "indexed": false, "internalType": "bytes32", "name": "documentHash", "type": "bytes32" }, { "indexed": false, "internalType": "uint256", "name": "appraisalValue", "type": "uint256" } ], "name": "DocumentMinted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "uri", "type": "string" } ], "name": "TokenURIUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "APPRAISER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "COMPLIANCE_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "METADATA_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PAUSER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "appraisalOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "contentOf", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "documentHashOf", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantComplianceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isBlacklisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "string", "name": "content", "type": "string" } ], "name": "mintContent", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "callerConfirmation", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "string", "name": "uri", "type": "string" }, { "internalType": "bytes32", "name": "documentHash", "type": "bytes32" }, { "internalType": "uint256", "name": "appraisalValue", "type": "uint256" } ], "name": "safeMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "setAppraisal", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "status", "type": "bool" } ], "name": "setBlacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "uri", "type": "string" } ], "name": "setTokenURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "valueDecimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "pure", "type": "function" } ], "bytecode": "0x608060405234801561000f575f5ffd5b5060405161284238038061284283398101604081905261002e91610281565b81815f61003b8382610387565b5060016100488282610387565b5061005791505f905084610137565b506100827f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a84610137565b506100ad7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a684610137565b506100d87f6bd6b5318a46e5fff572d5e4258a20774aab40cc35ac7680654b9081fcc82f8084610137565b506101037f8f831c56b3d9bf5e541f4e1b3b7f898cdb4b80ba7a4af71f8797c706fd21674e84610137565b5061012e7f442a94f1a1fac79af32856af2a64f63648cfa2ef3b98610a5bb7cbec4cee698584610137565b50505050610441565b5f8281526008602090815260408083206001600160a01b038516845290915281205460ff166101db575f8381526008602090815260408083206001600160a01b03861684529091529020805460ff191660011790556101933390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016101de565b505f5b92915050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610207575f5ffd5b81516001600160401b03811115610220576102206101e4565b604051601f8201601f19908116603f011681016001600160401b038111828210171561024e5761024e6101e4565b604052818152838201602001851015610265575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f60608486031215610293575f5ffd5b83516001600160a01b03811681146102a9575f5ffd5b60208501519093506001600160401b038111156102c4575f5ffd5b6102d0868287016101f8565b604086015190935090506001600160401b038111156102ed575f5ffd5b6102f9868287016101f8565b9150509250925092565b600181811c9082168061031757607f821691505b60208210810361033557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561038257805f5260205f20601f840160051c810160208510156103605750805b601f840160051c820191505b8181101561037f575f815560010161036c565b50505b505050565b81516001600160401b038111156103a0576103a06101e4565b6103b4816103ae8454610303565b8461033b565b6020601f8211600181146103e6575f83156103cf5750848201515b5f19600385901b1c1916600184901b17845561037f565b5f84815260208120601f198516915b8281101561041557878501518255602094850194600190920191016103f5565b508482101561043257868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6123f48061044e5f395ff3fe608060405234801561000f575f5ffd5b5060043610610234575f3560e01c80635c975abb11610135578063a7250552116100b4578063d539139311610079578063d539139314610527578063d547741f1461054e578063e63ab1e914610561578063e985e9c514610588578063fe575a871461059b575f5ffd5b8063a7250552146104b4578063aa0ab9b4146104c7578063acdd7c7e146104da578063b88d4fde14610501578063c87b56dd14610514575f5ffd5b806391d14854116100fa57806391d148541461046057806395d89b4114610473578063a217fddf1461047b578063a22cb46514610482578063a2a8516214610495575f5ffd5b80635c975abb146104145780636352211e1461041f57806370a0823114610432578063716a1dfd146104455780638456cb5914610458575f5ffd5b8063248a9ca3116101c1578063388417821161018657806338841782146103b05780633e7e8669146103d75780633f4ba83a146103e657806342842e0e146103ee57806342966c6814610401575f5ffd5b8063248a9ca31461034257806327427e31146103645780632d7d6de3146103775780632f2ff15d1461038a57806336568abe1461039d575f5ffd5b8063095ea7b311610207578063095ea7b3146102d557806311053490146102ea578063153b0d1e14610309578063162094c41461031c57806323b872dd1461032f575f5ffd5b806301ffc9a714610238578063062d3bd71461026057806306fdde0314610295578063081812fc146102aa575b5f5ffd5b61024b610246366004611c9a565b6105c6565b60405190151581526020015b60405180910390f35b6102877f442a94f1a1fac79af32856af2a64f63648cfa2ef3b98610a5bb7cbec4cee698581565b604051908152602001610257565b61029d6105d6565b6040516102579190611ce3565b6102bd6102b8366004611cf5565b610665565b6040516001600160a01b039091168152602001610257565b6102e86102e3366004611d27565b61068c565b005b6102876102f8366004611cf5565b5f908152600b602052604090205490565b6102e8610317366004611d4f565b610719565b6102e861032a366004611e31565b6107a3565b6102e861033d366004611e75565b61083a565b610287610350366004611cf5565b5f9081526008602052604090206001015490565b61029d610372366004611cf5565b6108c3565b6102e8610385366004611eaf565b610994565b6102e8610398366004611ec8565b6109cd565b6102e86103ab366004611ec8565b6109f1565b6102877f6bd6b5318a46e5fff572d5e4258a20774aab40cc35ac7680654b9081fcc82f8081565b60405160068152602001610257565b6102e8610a24565b6102e86103fc366004611e75565b610a59565b6102e861040f366004611cf5565b610a73565b60075460ff1661024b565b6102bd61042d366004611cf5565b610a7e565b610287610440366004611eaf565b610a88565b610287610453366004611ef2565b610acd565b6102e8610cc0565b61024b61046e366004611ec8565b610cf2565b61029d610d1c565b6102875f81565b6102e8610490366004611d4f565b610d2b565b6102876104a3366004611cf5565b5f908152600a602052604090205490565b6102e86104c2366004611f70565b610da2565b6102876104d5366004611f90565b610e55565b6102877f8f831c56b3d9bf5e541f4e1b3b7f898cdb4b80ba7a4af71f8797c706fd21674e81565b6102e861050f366004611fea565b610f40565b61029d610522366004611cf5565b610f58565b6102877f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102e861055c366004611ec8565b610f63565b6102877f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61024b610596366004612061565b610f87565b61024b6105a9366004611eaf565b6001600160a01b03165f9081526009602052604090205460ff1690565b5f6105d082610fb4565b92915050565b60605f80546105e490612089565b80601f016020809104026020016040519081016040528092919081815260200182805461061090612089565b801561065b5780601f106106325761010080835404028352916020019161065b565b820191905f5260205f20905b81548152906001019060200180831161063e57829003601f168201915b5050505050905090565b5f61066f82610fd8565b505f828152600460205260409020546001600160a01b03166105d0565b335f9081526009602052604090205460ff16156106c45760405162461bcd60e51b81526004016106bb906120c1565b60405180910390fd5b6001600160a01b0382161561070b576001600160a01b0382165f9081526009602052604090205460ff161561070b5760405162461bcd60e51b81526004016106bb906120c1565b6107158282611010565b5050565b7f442a94f1a1fac79af32856af2a64f63648cfa2ef3b98610a5bb7cbec4cee69856107438161101b565b6001600160a01b0383165f81815260096020908152604091829020805460ff191686151590811790915591519182527f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac91015b60405180910390a2505050565b7f6bd6b5318a46e5fff572d5e4258a20774aab40cc35ac7680654b9081fcc82f806107cd8161101b565b5f838152600260205260409020546001600160a01b03166108005760405162461bcd60e51b81526004016106bb906120e6565b61080a8383611025565b827f931f495b9a8e5d8e61946ea5d61e021f636cfe213a801f97589c18c152e408bd836040516107969190611ce3565b6001600160a01b03821661086357604051633250574960e11b81525f60048201526024016106bb565b5f61086f838333611074565b9050836001600160a01b0316816001600160a01b0316146108bd576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016106bb565b50505050565b5f818152600260205260409020546060906001600160a01b03166108f95760405162461bcd60e51b81526004016106bb906120e6565b5f828152600c60205260409020805461091190612089565b80601f016020809104026020016040519081016040528092919081815260200182805461093d90612089565b80156109885780601f1061095f57610100808354040283529160200191610988565b820191905f5260205f20905b81548152906001019060200180831161096b57829003601f168201915b50505050509050919050565b5f61099e8161101b565b6109c87f442a94f1a1fac79af32856af2a64f63648cfa2ef3b98610a5bb7cbec4cee69858361119a565b505050565b5f828152600860205260409020600101546109e78161101b565b6108bd838361119a565b6001600160a01b0381163314610a1a5760405163334bd91960e11b815260040160405180910390fd5b6109c8828261122b565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a4e8161101b565b610a56611296565b50565b6109c883838360405180602001604052805f815250610f40565b6107155f8233611074565b5f6105d082610fd8565b5f6001600160a01b038216610ab2576040516322718ad960e21b81525f60048201526024016106bb565b506001600160a01b03165f9081526003602052604090205490565b5f7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610af88161101b565b6001600160a01b038516610b425760405162461bcd60e51b8152602060048201526011602482015270125b9d985b1a59081c9958da5c1a595b9d607a1b60448201526064016106bb565b6001600160a01b0385165f9081526009602052604090205460ff1615610b7a5760405162461bcd60e51b81526004016106bb906120c1565b5f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505082519293505050610bf45760405162461bcd60e51b815260206004820152601060248201526f10dbdb9d195b9d081c995c5d5a5c995960821b60448201526064016106bb565b601481511115610c395760405162461bcd60e51b815260206004820152601060248201526f436f6e74656e7420746f6f206c6f6e6760801b60448201526064016106bb565b5f600d5f8154610c489061210d565b91829055509050610c5987826112e8565b5f818152600c60205260409020610c71868883612175565b50866001600160a01b0316817ff05e67c3de67821ff2e563e324d41dcef5ba2e5e67cf17d2940c299f246115958888604051610cae92919061222f565b60405180910390a39695505050505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610cea8161101b565b610a56611301565b5f9182526008602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600180546105e490612089565b335f9081526009602052604090205460ff1615610d5a5760405162461bcd60e51b81526004016106bb906120c1565b8015610d98576001600160a01b0382165f9081526009602052604090205460ff1615610d985760405162461bcd60e51b81526004016106bb906120c1565b610715828261133e565b7f8f831c56b3d9bf5e541f4e1b3b7f898cdb4b80ba7a4af71f8797c706fd21674e610dcc8161101b565b5f838152600260205260409020546001600160a01b0316610dff5760405162461bcd60e51b81526004016106bb906120e6565b5f838152600b602090815260409182902080549085905582518181529182018590529185917f055b6ecdc3a759107dd03f782e78b1bef12002fb27ffddb3a020554573abdc90910160405180910390a250505050565b5f7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610e808161101b565b6001600160a01b0386165f9081526009602052604090205460ff1615610eb85760405162461bcd60e51b81526004016106bb906120c1565b5f600d5f8154610ec79061210d565b91829055509050610ed887826112e8565b610ee28187611025565b5f818152600a60209081526040808320889055600b90915290819020859055516001600160a01b0388169082907f5d58de27b660562743bb3387ee08155a84e64dccc56b63d96ac6d6a563b7e3a990610cae908a908a908a9061225d565b610f4b84848461083a565b6108bd3385858585611349565b60606105d082611471565b5f82815260086020526040902060010154610f7d8161101b565b6108bd838361122b565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f6001600160e01b03198216637965db0b60e01b14806105d057506105d08261157c565b5f818152600260205260408120546001600160a01b0316806105d057604051637e27328960e01b8152600481018490526024016106bb565b6107158282336115a0565b610a5681336115ad565b5f82815260066020526040902061103c8282612281565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b5f828152600260205260408120546001600160a01b031680156110c9576001600160a01b0381165f9081526009602052604090205460ff16156110c95760405162461bcd60e51b81526004016106bb906120c1565b6001600160a01b03851615611110576001600160a01b0385165f9081526009602052604090205460ff16156111105760405162461bcd60e51b81526004016106bb906120c1565b6001600160a01b0383165f9081526009602052604090205460ff16156111485760405162461bcd60e51b81526004016106bb906120c1565b5f6111548686866115e6565b90506001600160a01b038616611191575f858152600a60209081526040808320839055600b8252808320839055600c909152812061119191611c3b565b95945050505050565b5f6111a58383610cf2565b611224575f8381526008602090815260408083206001600160a01b03861684529091529020805460ff191660011790556111dc3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016105d0565b505f6105d0565b5f6112368383610cf2565b15611224575f8381526008602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016105d0565b61129e6115fa565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b610715828260405180602001604052805f81525061161f565b611309611636565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586112cb3390565b61071533838361165a565b6001600160a01b0383163b1561146a57604051630a85bd0160e11b81526001600160a01b0384169063150b7a029061138b90889088908790879060040161233c565b6020604051808303815f875af19250505080156113c5575060408051601f3d908101601f191682019092526113c291810190612378565b60015b61142c573d8080156113f2576040519150601f19603f3d011682016040523d82523d5f602084013e6113f7565b606091505b5080515f0361142457604051633250574960e11b81526001600160a01b03851660048201526024016106bb565b805160208201fd5b6001600160e01b03198116630a85bd0160e11b1461146857604051633250574960e11b81526001600160a01b03851660048201526024016106bb565b505b5050505050565b606061147c82610fd8565b505f828152600660205260408120805461149590612089565b80601f01602080910402602001604051908101604052809291908181526020018280546114c190612089565b801561150c5780601f106114e35761010080835404028352916020019161150c565b820191905f5260205f20905b8154815290600101906020018083116114ef57829003601f168201915b505050505090505f61152860408051602081019091525f815290565b905080515f03611539575092915050565b81511561156b5780826040516020016115539291906123aa565b60405160208183030381529060405292505050919050565b611574846116f8565b949350505050565b5f6001600160e01b03198216632483248360e11b14806105d057506105d082611769565b6109c883838360016117b8565b6115b78282610cf2565b6107155760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016106bb565b5f6115ef611636565b6115748484846118bc565b60075460ff1661161d57604051638dfc202b60e01b815260040160405180910390fd5b565b61162983836119ae565b6109c8335f858585611349565b60075460ff161561161d5760405163d93c066560e01b815260040160405180910390fd5b6001600160a01b03821661168c57604051630b61174360e31b81526001600160a01b03831660048201526024016106bb565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b606061170382610fd8565b505f61171960408051602081019091525f815290565b90505f8151116117375760405180602001604052805f815250611762565b8061174184611a0f565b6040516020016117529291906123aa565b6040516020818303038152906040525b9392505050565b5f6001600160e01b031982166380ac58cd60e01b148061179957506001600160e01b03198216635b5e139f60e01b145b806105d057506301ffc9a760e01b6001600160e01b03198316146105d0565b80806117cc57506001600160a01b03821615155b1561188d575f6117db84610fd8565b90506001600160a01b038316158015906118075750826001600160a01b0316816001600160a01b031614155b801561181a57506118188184610f87565b155b156118435760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016106bb565b811561188b5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b5f828152600260205260408120546001600160a01b03908116908316156118e8576118e8818486611a9f565b6001600160a01b03811615611922576119035f855f5f6117b8565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615611950576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6001600160a01b0382166119d757604051633250574960e11b81525f60048201526024016106bb565b5f6119e383835f611074565b90506001600160a01b038116156109c8576040516339e3563760e11b81525f60048201526024016106bb565b60605f611a1b83611b03565b60010190505f8167ffffffffffffffff811115611a3a57611a3a611d88565b6040519080825280601f01601f191660200182016040528015611a64576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611a6e57509392505050565b611aaa838383611bda565b6109c8576001600160a01b038316611ad857604051637e27328960e01b8152600481018290526024016106bb565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016106bb565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611b415772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611b6d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611b8b57662386f26fc10000830492506010015b6305f5e1008310611ba3576305f5e100830492506008015b6127108310611bb757612710830492506004015b60648310611bc9576064830492506002015b600a83106105d05760010192915050565b5f6001600160a01b038316158015906115745750826001600160a01b0316846001600160a01b03161480611c135750611c138484610f87565b806115745750505f908152600460205260409020546001600160a01b03908116911614919050565b508054611c4790612089565b5f825580601f10611c56575050565b601f0160209004905f5260205f2090810190610a5691905b80821115611c81575f8155600101611c6e565b5090565b6001600160e01b031981168114610a56575f5ffd5b5f60208284031215611caa575f5ffd5b813561176281611c85565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6117626020830184611cb5565b5f60208284031215611d05575f5ffd5b5035919050565b80356001600160a01b0381168114611d22575f5ffd5b919050565b5f5f60408385031215611d38575f5ffd5b611d4183611d0c565b946020939093013593505050565b5f5f60408385031215611d60575f5ffd5b611d6983611d0c565b915060208301358015158114611d7d575f5ffd5b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f67ffffffffffffffff841115611db657611db6611d88565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715611de557611de5611d88565b604052838152905080828401851015611dfc575f5ffd5b838360208301375f60208583010152509392505050565b5f82601f830112611e22575f5ffd5b61176283833560208501611d9c565b5f5f60408385031215611e42575f5ffd5b82359150602083013567ffffffffffffffff811115611e5f575f5ffd5b611e6b85828601611e13565b9150509250929050565b5f5f5f60608486031215611e87575f5ffd5b611e9084611d0c565b9250611e9e60208501611d0c565b929592945050506040919091013590565b5f60208284031215611ebf575f5ffd5b61176282611d0c565b5f5f60408385031215611ed9575f5ffd5b82359150611ee960208401611d0c565b90509250929050565b5f5f5f60408486031215611f04575f5ffd5b611f0d84611d0c565b9250602084013567ffffffffffffffff811115611f28575f5ffd5b8401601f81018613611f38575f5ffd5b803567ffffffffffffffff811115611f4e575f5ffd5b866020828401011115611f5f575f5ffd5b939660209190910195509293505050565b5f5f60408385031215611f81575f5ffd5b50508035926020909101359150565b5f5f5f5f60808587031215611fa3575f5ffd5b611fac85611d0c565b9350602085013567ffffffffffffffff811115611fc7575f5ffd5b611fd387828801611e13565b949794965050505060408301359260600135919050565b5f5f5f5f60808587031215611ffd575f5ffd5b61200685611d0c565b935061201460208601611d0c565b925060408501359150606085013567ffffffffffffffff811115612036575f5ffd5b8501601f81018713612046575f5ffd5b61205587823560208401611d9c565b91505092959194509250565b5f5f60408385031215612072575f5ffd5b61207b83611d0c565b9150611ee960208401611d0c565b600181811c9082168061209d57607f821691505b6020821081036120bb57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600b908201526a109b1858dadb1a5cdd195960aa1b604082015260600190565b6020808252600d908201526c24b73b30b634b2103a37b5b2b760991b604082015260600190565b5f6001820161212a57634e487b7160e01b5f52601160045260245ffd5b5060010190565b601f8211156109c857805f5260205f20601f840160051c810160208510156121565750805b601f840160051c820191505b8181101561146a575f8155600101612162565b67ffffffffffffffff83111561218d5761218d611d88565b6121a18361219b8354612089565b83612131565b5f601f8411600181146121d2575f85156121bb5750838201355b5f19600387901b1c1916600186901b17835561146a565b5f83815260208120601f198716915b8281101561220157868501358255602094850194600190920191016121e1565b508682101561221d575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b606081525f61226f6060830186611cb5565b60208301949094525060400152919050565b815167ffffffffffffffff81111561229b5761229b611d88565b6122af816122a98454612089565b84612131565b6020601f8211600181146122e1575f83156122ca5750848201515b5f19600385901b1c1916600184901b17845561146a565b5f84815260208120601f198516915b8281101561231057878501518255602094850194600190920191016122f0565b508482101561232d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061236e90830184611cb5565b9695505050505050565b5f60208284031215612388575f5ffd5b815161176281611c85565b5f81518060208401855e5f93019283525090919050565b5f6115746123b88386612393565b8461239356fea2646970667358221220bdf147980c2d74a92adb32c5a6d4e23d5ca821620101dc19f301301acc24d96864736f6c634300081c0033", "deployedBytecode": "0x608060405234801561000f575f5ffd5b5060043610610234575f3560e01c80635c975abb11610135578063a7250552116100b4578063d539139311610079578063d539139314610527578063d547741f1461054e578063e63ab1e914610561578063e985e9c514610588578063fe575a871461059b575f5ffd5b8063a7250552146104b4578063aa0ab9b4146104c7578063acdd7c7e146104da578063b88d4fde14610501578063c87b56dd14610514575f5ffd5b806391d14854116100fa57806391d148541461046057806395d89b4114610473578063a217fddf1461047b578063a22cb46514610482578063a2a8516214610495575f5ffd5b80635c975abb146104145780636352211e1461041f57806370a0823114610432578063716a1dfd146104455780638456cb5914610458575f5ffd5b8063248a9ca3116101c1578063388417821161018657806338841782146103b05780633e7e8669146103d75780633f4ba83a146103e657806342842e0e146103ee57806342966c6814610401575f5ffd5b8063248a9ca31461034257806327427e31146103645780632d7d6de3146103775780632f2ff15d1461038a57806336568abe1461039d575f5ffd5b8063095ea7b311610207578063095ea7b3146102d557806311053490146102ea578063153b0d1e14610309578063162094c41461031c57806323b872dd1461032f575f5ffd5b806301ffc9a714610238578063062d3bd71461026057806306fdde0314610295578063081812fc146102aa575b5f5ffd5b61024b610246366004611c9a565b6105c6565b60405190151581526020015b60405180910390f35b6102877f442a94f1a1fac79af32856af2a64f63648cfa2ef3b98610a5bb7cbec4cee698581565b604051908152602001610257565b61029d6105d6565b6040516102579190611ce3565b6102bd6102b8366004611cf5565b610665565b6040516001600160a01b039091168152602001610257565b6102e86102e3366004611d27565b61068c565b005b6102876102f8366004611cf5565b5f908152600b602052604090205490565b6102e8610317366004611d4f565b610719565b6102e861032a366004611e31565b6107a3565b6102e861033d366004611e75565b61083a565b610287610350366004611cf5565b5f9081526008602052604090206001015490565b61029d610372366004611cf5565b6108c3565b6102e8610385366004611eaf565b610994565b6102e8610398366004611ec8565b6109cd565b6102e86103ab366004611ec8565b6109f1565b6102877f6bd6b5318a46e5fff572d5e4258a20774aab40cc35ac7680654b9081fcc82f8081565b60405160068152602001610257565b6102e8610a24565b6102e86103fc366004611e75565b610a59565b6102e861040f366004611cf5565b610a73565b60075460ff1661024b565b6102bd61042d366004611cf5565b610a7e565b610287610440366004611eaf565b610a88565b610287610453366004611ef2565b610acd565b6102e8610cc0565b61024b61046e366004611ec8565b610cf2565b61029d610d1c565b6102875f81565b6102e8610490366004611d4f565b610d2b565b6102876104a3366004611cf5565b5f908152600a602052604090205490565b6102e86104c2366004611f70565b610da2565b6102876104d5366004611f90565b610e55565b6102877f8f831c56b3d9bf5e541f4e1b3b7f898cdb4b80ba7a4af71f8797c706fd21674e81565b6102e861050f366004611fea565b610f40565b61029d610522366004611cf5565b610f58565b6102877f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102e861055c366004611ec8565b610f63565b6102877f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b61024b610596366004612061565b610f87565b61024b6105a9366004611eaf565b6001600160a01b03165f9081526009602052604090205460ff1690565b5f6105d082610fb4565b92915050565b60605f80546105e490612089565b80601f016020809104026020016040519081016040528092919081815260200182805461061090612089565b801561065b5780601f106106325761010080835404028352916020019161065b565b820191905f5260205f20905b81548152906001019060200180831161063e57829003601f168201915b5050505050905090565b5f61066f82610fd8565b505f828152600460205260409020546001600160a01b03166105d0565b335f9081526009602052604090205460ff16156106c45760405162461bcd60e51b81526004016106bb906120c1565b60405180910390fd5b6001600160a01b0382161561070b576001600160a01b0382165f9081526009602052604090205460ff161561070b5760405162461bcd60e51b81526004016106bb906120c1565b6107158282611010565b5050565b7f442a94f1a1fac79af32856af2a64f63648cfa2ef3b98610a5bb7cbec4cee69856107438161101b565b6001600160a01b0383165f81815260096020908152604091829020805460ff191686151590811790915591519182527f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac91015b60405180910390a2505050565b7f6bd6b5318a46e5fff572d5e4258a20774aab40cc35ac7680654b9081fcc82f806107cd8161101b565b5f838152600260205260409020546001600160a01b03166108005760405162461bcd60e51b81526004016106bb906120e6565b61080a8383611025565b827f931f495b9a8e5d8e61946ea5d61e021f636cfe213a801f97589c18c152e408bd836040516107969190611ce3565b6001600160a01b03821661086357604051633250574960e11b81525f60048201526024016106bb565b5f61086f838333611074565b9050836001600160a01b0316816001600160a01b0316146108bd576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016106bb565b50505050565b5f818152600260205260409020546060906001600160a01b03166108f95760405162461bcd60e51b81526004016106bb906120e6565b5f828152600c60205260409020805461091190612089565b80601f016020809104026020016040519081016040528092919081815260200182805461093d90612089565b80156109885780601f1061095f57610100808354040283529160200191610988565b820191905f5260205f20905b81548152906001019060200180831161096b57829003601f168201915b50505050509050919050565b5f61099e8161101b565b6109c87f442a94f1a1fac79af32856af2a64f63648cfa2ef3b98610a5bb7cbec4cee69858361119a565b505050565b5f828152600860205260409020600101546109e78161101b565b6108bd838361119a565b6001600160a01b0381163314610a1a5760405163334bd91960e11b815260040160405180910390fd5b6109c8828261122b565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610a4e8161101b565b610a56611296565b50565b6109c883838360405180602001604052805f815250610f40565b6107155f8233611074565b5f6105d082610fd8565b5f6001600160a01b038216610ab2576040516322718ad960e21b81525f60048201526024016106bb565b506001600160a01b03165f9081526003602052604090205490565b5f7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610af88161101b565b6001600160a01b038516610b425760405162461bcd60e51b8152602060048201526011602482015270125b9d985b1a59081c9958da5c1a595b9d607a1b60448201526064016106bb565b6001600160a01b0385165f9081526009602052604090205460ff1615610b7a5760405162461bcd60e51b81526004016106bb906120c1565b5f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505082519293505050610bf45760405162461bcd60e51b815260206004820152601060248201526f10dbdb9d195b9d081c995c5d5a5c995960821b60448201526064016106bb565b601481511115610c395760405162461bcd60e51b815260206004820152601060248201526f436f6e74656e7420746f6f206c6f6e6760801b60448201526064016106bb565b5f600d5f8154610c489061210d565b91829055509050610c5987826112e8565b5f818152600c60205260409020610c71868883612175565b50866001600160a01b0316817ff05e67c3de67821ff2e563e324d41dcef5ba2e5e67cf17d2940c299f246115958888604051610cae92919061222f565b60405180910390a39695505050505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610cea8161101b565b610a56611301565b5f9182526008602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600180546105e490612089565b335f9081526009602052604090205460ff1615610d5a5760405162461bcd60e51b81526004016106bb906120c1565b8015610d98576001600160a01b0382165f9081526009602052604090205460ff1615610d985760405162461bcd60e51b81526004016106bb906120c1565b610715828261133e565b7f8f831c56b3d9bf5e541f4e1b3b7f898cdb4b80ba7a4af71f8797c706fd21674e610dcc8161101b565b5f838152600260205260409020546001600160a01b0316610dff5760405162461bcd60e51b81526004016106bb906120e6565b5f838152600b602090815260409182902080549085905582518181529182018590529185917f055b6ecdc3a759107dd03f782e78b1bef12002fb27ffddb3a020554573abdc90910160405180910390a250505050565b5f7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610e808161101b565b6001600160a01b0386165f9081526009602052604090205460ff1615610eb85760405162461bcd60e51b81526004016106bb906120c1565b5f600d5f8154610ec79061210d565b91829055509050610ed887826112e8565b610ee28187611025565b5f818152600a60209081526040808320889055600b90915290819020859055516001600160a01b0388169082907f5d58de27b660562743bb3387ee08155a84e64dccc56b63d96ac6d6a563b7e3a990610cae908a908a908a9061225d565b610f4b84848461083a565b6108bd3385858585611349565b60606105d082611471565b5f82815260086020526040902060010154610f7d8161101b565b6108bd838361122b565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b5f6001600160e01b03198216637965db0b60e01b14806105d057506105d08261157c565b5f818152600260205260408120546001600160a01b0316806105d057604051637e27328960e01b8152600481018490526024016106bb565b6107158282336115a0565b610a5681336115ad565b5f82815260066020526040902061103c8282612281565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b5f828152600260205260408120546001600160a01b031680156110c9576001600160a01b0381165f9081526009602052604090205460ff16156110c95760405162461bcd60e51b81526004016106bb906120c1565b6001600160a01b03851615611110576001600160a01b0385165f9081526009602052604090205460ff16156111105760405162461bcd60e51b81526004016106bb906120c1565b6001600160a01b0383165f9081526009602052604090205460ff16156111485760405162461bcd60e51b81526004016106bb906120c1565b5f6111548686866115e6565b90506001600160a01b038616611191575f858152600a60209081526040808320839055600b8252808320839055600c909152812061119191611c3b565b95945050505050565b5f6111a58383610cf2565b611224575f8381526008602090815260408083206001600160a01b03861684529091529020805460ff191660011790556111dc3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016105d0565b505f6105d0565b5f6112368383610cf2565b15611224575f8381526008602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016105d0565b61129e6115fa565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b610715828260405180602001604052805f81525061161f565b611309611636565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586112cb3390565b61071533838361165a565b6001600160a01b0383163b1561146a57604051630a85bd0160e11b81526001600160a01b0384169063150b7a029061138b90889088908790879060040161233c565b6020604051808303815f875af19250505080156113c5575060408051601f3d908101601f191682019092526113c291810190612378565b60015b61142c573d8080156113f2576040519150601f19603f3d011682016040523d82523d5f602084013e6113f7565b606091505b5080515f0361142457604051633250574960e11b81526001600160a01b03851660048201526024016106bb565b805160208201fd5b6001600160e01b03198116630a85bd0160e11b1461146857604051633250574960e11b81526001600160a01b03851660048201526024016106bb565b505b5050505050565b606061147c82610fd8565b505f828152600660205260408120805461149590612089565b80601f01602080910402602001604051908101604052809291908181526020018280546114c190612089565b801561150c5780601f106114e35761010080835404028352916020019161150c565b820191905f5260205f20905b8154815290600101906020018083116114ef57829003601f168201915b505050505090505f61152860408051602081019091525f815290565b905080515f03611539575092915050565b81511561156b5780826040516020016115539291906123aa565b60405160208183030381529060405292505050919050565b611574846116f8565b949350505050565b5f6001600160e01b03198216632483248360e11b14806105d057506105d082611769565b6109c883838360016117b8565b6115b78282610cf2565b6107155760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016106bb565b5f6115ef611636565b6115748484846118bc565b60075460ff1661161d57604051638dfc202b60e01b815260040160405180910390fd5b565b61162983836119ae565b6109c8335f858585611349565b60075460ff161561161d5760405163d93c066560e01b815260040160405180910390fd5b6001600160a01b03821661168c57604051630b61174360e31b81526001600160a01b03831660048201526024016106bb565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b606061170382610fd8565b505f61171960408051602081019091525f815290565b90505f8151116117375760405180602001604052805f815250611762565b8061174184611a0f565b6040516020016117529291906123aa565b6040516020818303038152906040525b9392505050565b5f6001600160e01b031982166380ac58cd60e01b148061179957506001600160e01b03198216635b5e139f60e01b145b806105d057506301ffc9a760e01b6001600160e01b03198316146105d0565b80806117cc57506001600160a01b03821615155b1561188d575f6117db84610fd8565b90506001600160a01b038316158015906118075750826001600160a01b0316816001600160a01b031614155b801561181a57506118188184610f87565b155b156118435760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016106bb565b811561188b5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b5f828152600260205260408120546001600160a01b03908116908316156118e8576118e8818486611a9f565b6001600160a01b03811615611922576119035f855f5f6117b8565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b03851615611950576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6001600160a01b0382166119d757604051633250574960e11b81525f60048201526024016106bb565b5f6119e383835f611074565b90506001600160a01b038116156109c8576040516339e3563760e11b81525f60048201526024016106bb565b60605f611a1b83611b03565b60010190505f8167ffffffffffffffff811115611a3a57611a3a611d88565b6040519080825280601f01601f191660200182016040528015611a64576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611a6e57509392505050565b611aaa838383611bda565b6109c8576001600160a01b038316611ad857604051637e27328960e01b8152600481018290526024016106bb565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016106bb565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611b415772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611b6d576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611b8b57662386f26fc10000830492506010015b6305f5e1008310611ba3576305f5e100830492506008015b6127108310611bb757612710830492506004015b60648310611bc9576064830492506002015b600a83106105d05760010192915050565b5f6001600160a01b038316158015906115745750826001600160a01b0316846001600160a01b03161480611c135750611c138484610f87565b806115745750505f908152600460205260409020546001600160a01b03908116911614919050565b508054611c4790612089565b5f825580601f10611c56575050565b601f0160209004905f5260205f2090810190610a5691905b80821115611c81575f8155600101611c6e565b5090565b6001600160e01b031981168114610a56575f5ffd5b5f60208284031215611caa575f5ffd5b813561176281611c85565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6117626020830184611cb5565b5f60208284031215611d05575f5ffd5b5035919050565b80356001600160a01b0381168114611d22575f5ffd5b919050565b5f5f60408385031215611d38575f5ffd5b611d4183611d0c565b946020939093013593505050565b5f5f60408385031215611d60575f5ffd5b611d6983611d0c565b915060208301358015158114611d7d575f5ffd5b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f67ffffffffffffffff841115611db657611db6611d88565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715611de557611de5611d88565b604052838152905080828401851015611dfc575f5ffd5b838360208301375f60208583010152509392505050565b5f82601f830112611e22575f5ffd5b61176283833560208501611d9c565b5f5f60408385031215611e42575f5ffd5b82359150602083013567ffffffffffffffff811115611e5f575f5ffd5b611e6b85828601611e13565b9150509250929050565b5f5f5f60608486031215611e87575f5ffd5b611e9084611d0c565b9250611e9e60208501611d0c565b929592945050506040919091013590565b5f60208284031215611ebf575f5ffd5b61176282611d0c565b5f5f60408385031215611ed9575f5ffd5b82359150611ee960208401611d0c565b90509250929050565b5f5f5f60408486031215611f04575f5ffd5b611f0d84611d0c565b9250602084013567ffffffffffffffff811115611f28575f5ffd5b8401601f81018613611f38575f5ffd5b803567ffffffffffffffff811115611f4e575f5ffd5b866020828401011115611f5f575f5ffd5b939660209190910195509293505050565b5f5f60408385031215611f81575f5ffd5b50508035926020909101359150565b5f5f5f5f60808587031215611fa3575f5ffd5b611fac85611d0c565b9350602085013567ffffffffffffffff811115611fc7575f5ffd5b611fd387828801611e13565b949794965050505060408301359260600135919050565b5f5f5f5f60808587031215611ffd575f5ffd5b61200685611d0c565b935061201460208601611d0c565b925060408501359150606085013567ffffffffffffffff811115612036575f5ffd5b8501601f81018713612046575f5ffd5b61205587823560208401611d9c565b91505092959194509250565b5f5f60408385031215612072575f5ffd5b61207b83611d0c565b9150611ee960208401611d0c565b600181811c9082168061209d57607f821691505b6020821081036120bb57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600b908201526a109b1858dadb1a5cdd195960aa1b604082015260600190565b6020808252600d908201526c24b73b30b634b2103a37b5b2b760991b604082015260600190565b5f6001820161212a57634e487b7160e01b5f52601160045260245ffd5b5060010190565b601f8211156109c857805f5260205f20601f840160051c810160208510156121565750805b601f840160051c820191505b8181101561146a575f8155600101612162565b67ffffffffffffffff83111561218d5761218d611d88565b6121a18361219b8354612089565b83612131565b5f601f8411600181146121d2575f85156121bb5750838201355b5f19600387901b1c1916600186901b17835561146a565b5f83815260208120601f198716915b8281101561220157868501358255602094850194600190920191016121e1565b508682101561221d575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b606081525f61226f6060830186611cb5565b60208301949094525060400152919050565b815167ffffffffffffffff81111561229b5761229b611d88565b6122af816122a98454612089565b84612131565b6020601f8211600181146122e1575f83156122ca5750848201515b5f19600385901b1c1916600184901b17845561146a565b5f84815260208120601f198516915b8281101561231057878501518255602094850194600190920191016122f0565b508482101561232d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061236e90830184611cb5565b9695505050505050565b5f60208284031215612388575f5ffd5b815161176281611c85565b5f81518060208401855e5f93019283525090919050565b5f6115746123b88386612393565b8461239356fea2646970667358221220bdf147980c2d74a92adb32c5a6d4e23d5ca821620101dc19f301301acc24d96864736f6c634300081c0033", "linkReferences": {}, "deployedLinkReferences": {}, "immutableReferences": {}, "inputSourceName": "project/contracts/EasyTokenDocument.sol", "buildInfoId": "solc-0_8_28-3c1fd04852d45635fdc94cd1db24408c9378c555" }