[ { "inputs": [ { "internalType": "address", "name": "_engine", "type": "address" }, { "internalType": "address", "name": "_paymentToken", "type": "address" }, { "internalType": "address", "name": "_feeRecipient", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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" }, { "inputs": [], "name": "NotEngine", "type": "error" }, { "inputs": [], "name": "NotPositionOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [], "name": "PositionNotOpen", "type": "error" }, { "inputs": [], "name": "PositionNotUnfilledOrPendingChange", "type": "error" }, { "inputs": [], "name": "ZeroSize", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "engine", "type": "address" }, { "indexed": true, "internalType": "address", "name": "paymentToken", "type": "address" }, { "indexed": true, "internalType": "address", "name": "feeRecipient", "type": "address" } ], "name": "ConstructorSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "engine", "type": "address" } ], "name": "EngineSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "feeRecipient", "type": "address" } ], "name": "FeeRecipientSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "paymentToken", "type": "address" } ], "name": "PaymentTokenSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "positionId", "type": "uint256" }, { "indexed": false, "internalType": "bytes", "name": "request", "type": "bytes" } ], "name": "PositionChangeRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "positionId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "size", "type": "uint256" }, { "indexed": false, "internalType": "bytes", "name": "request", "type": "bytes" } ], "name": "PositionRequested", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "positionIds", "type": "uint256[]" }, { "indexed": false, "internalType": "bytes32[]", "name": "datas", "type": "bytes32[]" }, { "indexed": false, "internalType": "uint256[]", "name": "amountsToUsers", "type": "uint256[]" }, { "indexed": false, "internalType": "enum Parsa.PositionStatus[]", "name": "statuses", "type": "uint8[]" }, { "indexed": false, "internalType": "uint256", "name": "fee", "type": "uint256" } ], "name": "PositionsProcessed", "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": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "engine", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeRecipient", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "numPositions", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "paymentToken", "outputs": [ { "internalType": "contract ERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "positions", "outputs": [ { "internalType": "enum Parsa.PositionStatus", "name": "status", "type": "uint8" }, { "internalType": "bytes32", "name": "data", "type": "bytes32" }, { "internalType": "bytes", "name": "request", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "_positionIds", "type": "uint256[]" }, { "internalType": "bytes32[]", "name": "_datas", "type": "bytes32[]" }, { "internalType": "uint256[]", "name": "_amountsToUsers", "type": "uint256[]" }, { "internalType": "enum Parsa.PositionStatus[]", "name": "_statuses", "type": "uint8[]" }, { "internalType": "uint256", "name": "_fee", "type": "uint256" } ], "name": "processPositions", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_size", "type": "uint256" }, { "internalType": "bytes", "name": "_request", "type": "bytes" } ], "name": "requestPosition", "outputs": [ { "internalType": "uint256", "name": "_positionId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_positionId", "type": "uint256" }, { "internalType": "bytes", "name": "_request", "type": "bytes" } ], "name": "requestPositionChange", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_engine", "type": "address" } ], "name": "setEngine", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_feeRecipient", "type": "address" } ], "name": "setFeeRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_paymentToken", "type": "address" } ], "name": "setPaymentToken", "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": [], "name": "togglePause", "outputs": [], "stateMutability": "nonpayable", "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": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6080346103fb57601f19906001600160401b0390601f90611fdd38819003838101861683019190858311848410176103e5578084926060946040528339810103126103fb5761004d8161041f565b93602093610068604061006187860161041f565b940161041f565b93610071610400565b95600e87526d2830b939b0902837b9b4ba34b7b760911b81880152610094610400565b90600194858352600560fc1b8284015288518581116103e5576000998a548881811c911680156103db575b858210146103c757908187849311610379575b50849087831160011461031d578c92610312575b5050600019600383901b1c191690871b1789555b82519485116102fe5785548681811c911680156102f4575b838210146102e05790818587969594931161028c575b508193851160011461022c5750508792610221575b5050600019600383901b1c191690821b1790555b3315610208577f9a4ba4887257d84c344b463a21663fe7995c3d8e0f91dda1f7ffa260c791b157600754936006549560018060a01b0380809260018060a01b031998338a8c16176006556040519a833391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08880a360018060a81b0319166007558460085516948588600a541617600a5516948587600c541617600c55168095600b541617600b5580a4611ba990816104348239f35b604051631e4fbdf760e01b815260048101849052602490fd5b01519050388061013d565b86959392919316858a52838a20938a905b828210610273575050841161025a575b505050811b019055610151565b015160001960f88460031b161c1916905538808061024d565b848401518655889790950194938401939081019061023d565b909192939450868a52828a208580880160051c8201928589106102d7575b9188978a9297969594930160051c01915b8281106102c9575050610128565b8c81558897508991016102bb565b925081926102aa565b634e487b7160e01b8a52602260045260248afd5b90607f1690610112565b634e487b7160e01b89526041600452602489fd5b0151905038806100e6565b908c91858b9516838052878420935b88828210610363575050841161034a575b505050811b0189556100fa565b015160001960f88460031b161c1916905538808061033d565b8385015186558d9790950194938401930161032c565b9091508b8052848c208780850160051c8201928786106103be575b918b91869594930160051c01915b8281106103b05750506100d2565b8e81558594508b91016103a2565b92508192610394565b634e487b7160e01b8c52602260045260248cfd5b90607f16906100bf565b634e487b7160e01b600052604160045260246000fd5b600080fd5b60408051919082016001600160401b038111838210176103e557604052565b51906001600160a01b03821682036103fb5756fe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a7146114b35750806306fdde0314611408578063081812fc146113ca578063095ea7b3146112e35780630e830e491461127c57806323b872dd146112655780633013ce291461123c57806342842e0e14611214578063455fe4ff14610ec65780634690484014610e9d5780635c975abb14610e775780635e71823b14610e595780636352211e14610e295780636a326ab114610dc257806370a0823114610d69578063715018a614610d025780637622922f14610b3b57806379ba509714610ab2578063892bdc2b146107155780638da5cb5b146106ec57806395d89b411461060957806399fbab881461051d578063a22cb46514610478578063b88d4fde14610416578063c4ae31681461034c578063c87b56dd146102f5578063c9d4623f146102cc578063e30c3978146102a3578063e74b981b1461023c578063e985e9c5146101e65763f2fde38b1461017457600080fd5b346101e15760203660031901126101e15761018d61155e565b610195611b3e565b600780546001600160a01b0319166001600160a01b039283169081179091556006549091167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700600080a3005b600080fd5b346101e15760403660031901126101e1576101ff61155e565b610207611574565b9060018060a01b03809116600052600560205260406000209116600052602052602060ff604060002054166040519015158152f35b346101e15760203660031901126101e15761025561155e565b61025d611b3e565b600b80546001600160a01b0319166001600160a01b039290921691821790557fbf9a9534339a9d6b81696e05dcfb614b7dc518a31d48be3cfb757988381fb323600080a2005b346101e15760003660031901126101e1576007546040516001600160a01b039091168152602090f35b346101e15760003660031901126101e157600a546040516001600160a01b039091168152602090f35b346101e15760203660031901126101e157610311600435611b03565b50600060405161032081611677565b5261034860405161033081611677565b6000815260405191829160208352602083019061151e565b0390f35b346101e15760003660031901126101e157610365611b3e565b60075460ff8160a01c166000146103d0575060075460ff8160a01c16156103be5760ff60a01b19166007556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90602090a1005b604051638dfc202b60e01b8152600490fd5b6103d8611b52565b60ff60a01b1916600160a01b176007556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602090a1005b346101e15760803660031901126101e15761042f61155e565b610437611574565b6064359167ffffffffffffffff83116101e157366023840112156101e15761046c6104769336906024816004013591016116de565b91604435916119b0565b005b346101e15760403660031901126101e15761049161155e565b602435908115158092036101e1576001600160a01b031690811561050457336000526005602052604060002082600052602052604060002060ff1981541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b604051630b61174360e31b815260048101839052602490fd5b346101e1576020806003193601126101e15760043560005260098152604060002060ff8154169060019060026001820154910191604051926000918154916105648361163d565b80875292600181169081156105e957506001146105b2575b61059e8761034888888c610592838b0384611693565b604051958680966116b5565b84015260606040840152606083019061151e565b60009081528781209093505b8284106105d65750505082018401846105928461057c565b80548685018901529287019281016105be565b60ff191689880152505050151560051b830185019050846105928461057c565b346101e15760003660031901126101e15760405160006001826001549261062f8461163d565b92838352602094856001821691826000146106cc57505060011461066f575b5061065b92500383611693565b61034860405192828493845283019061151e565b84915060016000527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6906000915b8583106106b457505061065b93508201018561064e565b8054838901850152879450869390920191810161069d565b60ff19168582015261065b95151560051b850101925087915061064e9050565b346101e15760003660031901126101e1576006546040516001600160a01b039091168152602090f35b346101e15760a03660031901126101e15767ffffffffffffffff6004358181116101e15761074790369060040161160c565b90916024358181116101e15761076190369060040161160c565b90936044358381116101e15761077b90369060040161160c565b936064359081116101e15761079490369060040161160c565b600a5491979095916001600160a01b03163303610aa05760005b8781106108f15750600c54600b5460405163a9059cbb60e01b81526001600160a01b03918216600482015260843560248201526020979695949390929091889184916044918391600091165af19586156108e55761082a61084596610837948a996108b8575b5060409a999a519b60a08d5260a08d019161198c565b918a8303888c015261198c565b91878303604089015261198c565b848103606086015282815201939160005b82811061088d5760843560808601527fc1c98cb2ca4086b30e3a4f23af84406eba6f0f01799ee52f5c142978999ddf2685870386a1005b9091929485359060058210156101e15783816108ac82936001956116b5565b01960193929101610856565b6108d7908a3d8c116108de575b6108cf8183611693565b8101906118b7565b508d610814565b503d6108c5565b6040513d6000823e3d90fd5b6108fc818987611966565b356000526009602052604060002060ff8154166005811015610a8a5760018114159081610a7e575b50610a6c5761093482898c611966565b359060058210156101e15761094b600292826118cf565b610956838986611966565b35600182015501610967815461163d565b9081610a2d575b505061097b818486611966565b35610989575b6001016107ae565b600c546109f391906020906001600160a01b03166109b16109ab848d8b611966565b35611b03565b906109bd84888a611966565b60405163a9059cbb60e01b81526001600160a01b0390931660048401523560248301529093849190829060009082906044820190565b03925af19182156108e557600192610a0e575b509050610981565b610a269060203d6020116108de576108cf8183611693565b508a610a06565b600091601f808211600114610a47575050555b898061096e565b91610a6584929382845260208420940160051c8401600185016118e7565b5555610a40565b604051634ca2123d60e11b8152600490fd5b6003915014158b610924565b634e487b7160e01b600052602160045260246000fd5b60405163027da19960e41b8152600490fd5b346101e15760003660031901126101e1576007546001600160a01b033381831603610b23576bffffffffffffffffffffffff60a01b8092166007556006549133908316176006553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b60405163118cdaa760e01b8152336004820152602490fd5b346101e157610b49366115bf565b9190610b53611b52565b610b5c82611b03565b336001600160a01b0390911603610cf0578160005260209060098252604060002080549060ff82166005811015610a8a57600203610cde57600360029260ff1916178155019367ffffffffffffffff8111610cc857610bc581610bbf875461163d565b876118fe565b600094601f8211600114610c4157610c1882807fd748f674e07805fd44d065bc298e85a33daff735a78203a0a056261df8a4ba9e969798600091610c36575b508160011b916000199060031b1c19161790565b90555b610c316040519283928684523396840191611945565b0390a3005b905085013589610c04565b601f1982169581600052846000209660005b818110610cb1575090837fd748f674e07805fd44d065bc298e85a33daff735a78203a0a056261df8a4ba9e9697989210610c97575b5050600182811b019055610c1b565b840135600019600385901b60f8161c191690558680610c88565b858301358955600190980197918601918601610c53565b634e487b7160e01b600052604160045260246000fd5b6040516394e88a2160e01b8152600490fd5b6040516370d645e360e01b8152600490fd5b346101e15760003660031901126101e157610d1b611b3e565b600780546001600160a01b03199081169091556006805491821690556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b346101e15760203660031901126101e1576001600160a01b03610d8a61155e565b168015610da95760005260036020526020604060002054604051908152f35b6040516322718ad960e21b815260006004820152602490fd5b346101e15760203660031901126101e157610ddb61155e565b610de3611b3e565b600c80546001600160a01b0319166001600160a01b039290921691821790557fcb0aeffe884eb88fb2a31a2f3e4bd1d2763bdee48ba93b28c6e87501228cf743600080a2005b346101e15760203660031901126101e1576020610e47600435611b03565b6040516001600160a01b039091168152f35b346101e15760003660031901126101e1576020600854604051908152f35b346101e15760003660031901126101e157602060ff60075460a01c166040519015158152f35b346101e15760003660031901126101e157600b546040516001600160a01b039091168152602090f35b346101e157610ed4366115bf565b610edf929192611b52565b81156112025760009260018060a01b039283600c54166040516323b872dd60e01b815233600482015260249130838301528360448301528160648160209a8b945af180156108e5576111e5575b50600854600019908181146111d057600180910196876008556040516060810167ffffffffffffffff90828110828211176111a6576040528382528a82019160008352610f7a368b8b6116de565b92604082019384528b60005260098d526040600020915160058110156111bb5790610fa883926002946118cf565b51868201550191519081519081116111a657610fce81610fc8855461163d565b856118fe565b8b8c601f831160011461114457508190610fff93600092611139575b50508160011b916000199060031b1c19161790565b90555b3315611121579087918260005260028a52604060002054169081151593846110ec575b503360005260038a52604060002090815401905581600052600289526040600020336bffffffffffffffffffffffff60a01b82541617905533907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a46110d657508392917fc275726c8bd2a461e395ba8a86e1064393aaad073792022fa58a0548da393eeb916110cb604051928392835260408984015233956040840191611945565b0390a3604051908152f35b6040516339e3563760e11b815260006004820152fd5b600084815260046020526040902080546001600160a01b03191690558260005260038b5260406000209081540190558a611025565b604051633250574960e11b8152600060048201528490fd5b015190508d80610fea565b908693601f1984168660005283600020936000905b82821061118d5750508411611176575b505050811b019055611002565b01518760f88460031b161c191690558c8080611169565b8484015186558a97909501949384019390810190611159565b86634e487b7160e01b60005260416004526000fd5b88634e487b7160e01b60005260216004526000fd5b82634e487b7160e01b60005260116004526000fd5b6111fb90873d89116108de576108cf8183611693565b5086610f2c565b60405163c459d23f60e01b8152600490fd5b346101e1576104766112253661158a565b906040519261123384611677565b600084526119b0565b346101e15760003660031901126101e157600c546040516001600160a01b039091168152602090f35b346101e1576104766112763661158a565b91611715565b346101e15760203660031901126101e15761129561155e565b61129d611b3e565b600a80546001600160a01b0319166001600160a01b039290921691821790557fffdd1f97bc690cbcf97d0ea457d2e0913b439d14c33cde4b5ef892169f39f6b3600080a2005b346101e15760403660031901126101e1576112fc61155e565b60243561130881611b03565b331515806113b7575b8061138a575b611372576001600160a01b039283169282918491167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600080a4600090815260046020526040902080546001600160a01b0319169091179055005b60405163a9fbf51f60e01b8152336004820152602490fd5b5060018060a01b038116600052600560205260406000203360005260205260ff6040600020541615611317565b506001600160a01b038116331415611311565b346101e15760203660031901126101e1576004356113e781611b03565b506000526004602052602060018060a01b0360406000205416604051908152f35b346101e15760003660031901126101e15760405160008054908261142b8361163d565b91828252602093600190856001821691826000146106cc575050600114611459575061065b92500383611693565b6000808052859250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b85831061149b57505061065b93508201018561064e565b80548389018501528794508693909201918101611484565b346101e15760203660031901126101e1576004359063ffffffff60e01b82168092036101e1576020916380ac58cd60e01b811490811561150d575b81156114fc575b5015158152f35b6301ffc9a760e01b149050836114f5565b635b5e139f60e01b811491506114ee565b919082519283825260005b84811061154a575050826000602080949584010152601f8019910116010190565b602081830181015184830182015201611529565b600435906001600160a01b03821682036101e157565b602435906001600160a01b03821682036101e157565b60609060031901126101e1576001600160a01b039060043582811681036101e1579160243590811681036101e1579060443590565b60406003198201126101e1576004359160243567ffffffffffffffff928382116101e157806023830112156101e15781600401359384116101e157602484830101116101e1576024019190565b9181601f840112156101e15782359167ffffffffffffffff83116101e1576020808501948460051b0101116101e157565b90600182811c9216801561166d575b602083101461165757565b634e487b7160e01b600052602260045260246000fd5b91607f169161164c565b6020810190811067ffffffffffffffff821117610cc857604052565b90601f8019910116810190811067ffffffffffffffff821117610cc857604052565b906005821015610a8a5752565b67ffffffffffffffff8111610cc857601f01601f191660200190565b9291926116ea826116c2565b916116f86040519384611693565b8294818452818301116101e1578281602093846000960137010152565b6001600160a01b03918216929091831561189e57600092828452826020956002875260409684888820541696879133151580611805575b509060027fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92846117d2575b858352600381528b8320805460010190558683525289812080546001600160a01b0319168517905580a416928383036117b15750505050565b6064945051926364283d7b60e01b8452600484015260248301526044820152fd5b600087815260046020526040902080546001600160a01b0319169055848352600381528b83208054600019019055611778565b9193945091508061185d575b156118215785929187913861174c565b87868861183e576024915190637e27328960e01b82526004820152fd5b905163177e802f60e01b81523360048201526024810191909152604490fd5b503387148015611882575b806118115750858252600481523385898420541614611811565b5086825260058152878220338352815260ff8883205416611868565b604051633250574960e11b815260006004820152602490fd5b908160209103126101e1575180151581036101e15790565b906005811015610a8a5760ff80198354169116179055565b8181106118f2575050565b600081556001016118e7565b9190601f811161190d57505050565b611939926000526020600020906020601f840160051c8301931061193b575b601f0160051c01906118e7565b565b909150819061192c565b908060209392818452848401376000828201840152601f01601f1916010190565b91908110156119765760051b0190565b634e487b7160e01b600052603260045260246000fd5b81835290916001600160fb1b0383116101e15760209260051b809284830137010190565b6119bb838383611715565b813b6119c8575b50505050565b604051630a85bd0160e11b8082523360048301526001600160a01b03928316602483015260448201949094526080606482015260209592909116939092908390611a1690608483019061151e565b039285816000958187895af1849181611abf575b50611a8a575050503d600014611a82573d611a44816116c2565b90611a526040519283611693565b81528091843d92013e5b80519283611a7d57604051633250574960e11b815260048101849052602490fd5b019050fd5b506060611a5c565b919450915063ffffffff60e01b1603611aa75750388080806119c2565b60249060405190633250574960e11b82526004820152fd5b9091508681813d8311611afc575b611ad78183611693565b81010312611af857516001600160e01b031981168103611af8579038611a2a565b8480fd5b503d611acd565b6000818152600260205260409020546001600160a01b0316908115611b26575090565b60249060405190637e27328960e01b82526004820152fd5b6006546001600160a01b03163303610b2357565b60ff60075460a01c16611b6157565b60405163d93c066560e01b8152600490fdfea2646970667358221220e8a3372aa938b64a6ac9f7d77505938984aace2f93037fa196d0cd8f01bf403264736f6c63430008190033000000000000000000000000910a6ce42f7e5292b1d5fb3230f0ec1f9c87e82a000000000000000000000000efb96ef8a7b6e6b117c786d0d74673e956fba232000000000000000000000000910a6ce42f7e5292b1d5fb3230f0ec1f9c87e82a