0 txs
3 calls
constructor
constructor(address initialOwner, address _auctioneer)
functions
auctioneer
viewfunction auctioneer() view returns (address)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
fulfilledOrder
viewfunction fulfilledOrder(string orderId) view returns (uint128 blockNumber, uint128 mainAmountOut)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
emergencyRecoverTokens
nonpayablefunction emergencyRecoverTokens(address token, address receiver)
executeCall_Internal
nonpayablefunction executeCall_Internal(address token, address destinationAddress, uint256 balance, address callTarget, bytes callData, uint8 callMode)
fulfillOrder
payablefunction fulfillOrder(tuple requestedFulfillment, bytes auctioneerSignature, address fulfillerContract, bytes callBackData) payable returns (uint256 mainAmountOut)
fulfillOrderWithExternalCall
payablefunction fulfillOrderWithExternalCall(uint256[] extraTransferAmounts, tuple requestedFulfillment, bytes auctioneerSignature) payable returns (uint256 mainAmountOut)
renounceOwnership
nonpayablefunction renounceOwnership()
setAuctioneer
nonpayablefunction setAuctioneer(address newAuctioneer)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
AuctioneerSet
event AuctioneerSet(address)
EIP712DomainChanged
event EIP712DomainChanged()
EmergencyTokenRecover
event EmergencyTokenRecover(address token, address receiver, uint256 amount)
FailedExternalCall
event FailedExternalCall(string orderId)
OrderFulfilled
event OrderFulfilled(string orderId, uint256 mainAmountOut)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
errors
AlreadyFulfilled
error AlreadyFulfilled()
BelowRequestedAmount
error BelowRequestedAmount(uint256)
BelowRequestedExtraTransferAmount
error BelowRequestedExtraTransferAmount(uint256 index, uint256 received)
CallFailed
error CallFailed()
ExtraTransfersAmountsArrayMismatch
error ExtraTransfersAmountsArrayMismatch()
InternalCallOnly
error InternalCallOnly()
InvalidAuctioneerSignature
error InvalidAuctioneerSignature()
InvalidShortString
error InvalidShortString()
OverdueDeadline
error OverdueDeadline()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
RequestedTransferNotFulfilled
error RequestedTransferNotFulfilled(address token, address account, uint256 minAmount, uint256 received)
RequestedTransfersLengthMismatch
error RequestedTransfersLengthMismatch()
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
StringTooLong
error StringTooLong(string str)
ZeroAddress
error ZeroAddress()
creation bytecode
0x61016060405234801561001157600080fd5b50604051613c13380380613c13833981016040819052610030916102c3565b604080518082018252601581527f44657374696e6174696f6e436861696e47756172640000000000000000000000602080830191909152825180840190935260018352603160f81b9083015283916100898260006101c8565b610120526100988160016101c8565b61014052815160208084019190912060e052815190820120610100524660a05261012560e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526001600160a01b03811661015d57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610166816101fb565b506001600160a01b038216158061018457506001600160a01b038116155b156101a25760405163d92e233d60e01b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055506104c5565b60006020835110156101e4576101dd83610217565b90506101f5565b816101ef8482610395565b5060ff90505b92915050565b600380546001600160a01b031916905561021481610255565b50565b600080829050601f81511115610242578260405163305a27a960e01b81526004016101549190610453565b805161024d826104a1565b179392505050565b600280546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80516001600160a01b03811681146102be57600080fd5b919050565b600080604083850312156102d657600080fd5b6102df836102a7565b91506102ed602084016102a7565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061032057607f821691505b60208210810361034057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561039057806000526020600020601f840160051c8101602085101561036d5750805b601f840160051c820191505b8181101561038d5760008155600101610379565b50505b505050565b81516001600160401b038111156103ae576103ae6102f6565b6103c2816103bc845461030c565b84610346565b6020601f8211600181146103f657600083156103de5750848201515b600019600385901b1c1916600184901b17845561038d565b600084815260208120601f198516915b828110156104265787850151825560209485019460019092019101610406565b50848210156104445786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b602081526000825180602084015260005b818110156104815760208186018101516040868401015201610464565b506000604082850101526040601f19601f83011684010191505092915050565b805160208083015191908110156103405760001960209190910360031b1b16919050565b60805160a05160c05160e0516101005161012051610140516136f461051f600039600061198c0152600061195a0152600061238801526000612360015260006122bb015260006122e50152600061230f01526136f46000f3fe6080604052600436106100d55760003560e01c80638da5cb5b1161007f578063ca31eb8611610059578063ca31eb86146102a3578063e30c3978146102b6578063f2fde38b146102e1578063fb1f95c71461030157600080fd5b80638da5cb5b146101cd578063aff44a0d146101f8578063b7e26a2e1461028357600080fd5b8063715018a6116100b0578063715018a61461017b57806379ba50971461019057806384b0196e146101a557600080fd5b8062ede7e4146100e15780632da05298146101035780635ec2c7bf1461012957600080fd5b366100dc57005b600080fd5b3480156100ed57600080fd5b506101016100fc36600461283f565b610321565b005b6101166101113660046128be565b6103ef565b6040519081526020015b60405180910390f35b34801561013557600080fd5b506004546101569073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610120565b34801561018757600080fd5b50610101610a39565b34801561019c57600080fd5b50610101610a4d565b3480156101b157600080fd5b506101ba610ac4565b60405161012097969594939291906129ff565b3480156101d957600080fd5b5060025473ffffffffffffffffffffffffffffffffffffffff16610156565b34801561020457600080fd5b5061025a610213366004612b3e565b80516020818301810180516005825292820191909301209152546fffffffffffffffffffffffffffffffff8082169170010000000000000000000000000000000090041682565b604080516fffffffffffffffffffffffffffffffff938416815292909116602083015201610120565b34801561028f57600080fd5b5061010161029e366004612bf6565b610b26565b6101166102b1366004612c2f565b610ba4565b3480156102c257600080fd5b5060035473ffffffffffffffffffffffffffffffffffffffff16610156565b3480156102ed57600080fd5b506101016102fc36600461283f565b610ef9565b34801561030d57600080fd5b5061010161031c366004612cf6565b610fa9565b6103296111f0565b73ffffffffffffffffffffffffffffffffffffffff8116610376576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f4ee0985a129917c72eab0afe7ec6060bf6c6e0796bedc42de903d9dbbadfc51d9060200160405180910390a150565b600080600061044461040861040388611243565b6114a3565b86868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114f192505050565b509092509050600081600381111561045e5761045e612d8c565b141580610486575060045473ffffffffffffffffffffffffffffffffffffffff838116911614155b156104bd576040517f070f548200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505042846020013510156104fd576040517fa99f132a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61050b610120850185612dbb565b86149050610545576040517f0cb7d4b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610555610120860186612dbb565b61056191506001612e51565b67ffffffffffffffff81111561057957610579612ac0565b6040519080825280602002602001820160405280156105a2578160200160208202803683370190505b5090506105b5606086016040870161283f565b816000815181106105c8576105c8612e64565b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600160005b610600610120880188612dbb565b905081101561082857600061067d61061c6101208a018a612dbb565b8481811061062c5761062c612e64565b610642926020606090920201908101915061283f565b6106506101208b018b612dbb565b8581811061066057610660612e64565b9050606002016020016020810190610678919061283f565b61153e565b905061070a6106906101208a018a612dbb565b848181106106a0576106a0612e64565b90506060020160200160208101906106b8919061283f565b6106c66101208b018b612dbb565b858181106106d6576106d6612e64565b6106ec926020606090920201908101915061283f565b8c8c868181106106fe576106fe612e64565b90506020020135611611565b60008161076261071e6101208c018c612dbb565b8681811061072e5761072e612e64565b610744926020606090920201908101915061283f565b6107526101208d018d612dbb565b8781811061066057610660612e64565b61076c9190612e93565b905061077c6101208a018a612dbb565b8481811061078c5761078c612e64565b905060600201604001358110156107de576040517f2ac9676e00000000000000000000000000000000000000000000000000000000815260048101849052602481018290526044015b60405180910390fd5b61081c6107ef6101208b018b612dbb565b858181106107ff576107ff612e64565b610815926020606090920201908101915061283f565b8686611722565b935050506001016105f2565b50600061084361083e6060890160408a0161283f565b6117d7565b90508093508660800135811015610889576040517fcd760f12000000000000000000000000000000000000000000000000000000008152600481018290526024016107d5565b3063fb1f95c761089f60608a0160408b0161283f565b6108af60808b0160608c0161283f565b846108c060c08d0160a08e0161283f565b6108cd60c08e018e612ea6565b8e60e00160208101906108e09190612f0b565b6040518863ffffffff1660e01b81526004016109029796959493929190612faa565b600060405180830381600087803b15801561091c57600080fd5b505af192505050801561092d575060015b6109a4573d80801561095b576040519150601f19603f3d011682016040523d82523d6000602084013e610960565b606091505b507fe3b3e6da1bb572036b091b0c3693699d827011ad664e52b936ff13f43a5e673c61098c8980612ea6565b60405161099a929190613033565b60405180910390a1505b5060005b81811015610a1a5760006109d48483815181106109c7576109c7612e64565b60200260200101516117d7565b90508015610a1157610a116109f16101208a016101008b0161283f565b858481518110610a0357610a03612e64565b602002602001015183611611565b506001016109a8565b50610a2e610a288780612ea6565b856117e3565b505095945050505050565b610a416111f0565b610a4b6000611922565b565b600354339073ffffffffffffffffffffffffffffffffffffffff168114610ab8576040517f118cdaa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024016107d5565b610ac181611922565b50565b600060608060008060006060610ad8611953565b610ae0611985565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b610b2e6111f0565b6000610b39836117d7565b9050610b46828483611611565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f6b9c95f0ce1bdf8c5ad61e30a61e3141566a692638458cf42324d16ee021d1d6906060015b60405180910390a1505050565b6000806000610bf4610bb86104038b6119b2565b89898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114f192505050565b5090925090506000816003811115610c0e57610c0e612d8c565b141580610c36575060045473ffffffffffffffffffffffffffffffffffffffff838116911614155b15610c6d576040517f070f548200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50504287602001351015610cad576040517fa99f132a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610cbc60a0890189612dbb565b610cc891506001612e51565b67ffffffffffffffff811115610ce057610ce0612ac0565b604051908082528060200260200182016040528015610d4957816020015b60408051606081018252600080825260208083018290529282015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610cfe5790505b5090506000610dc68160405180606001604052808c6040016020810190610d70919061283f565b73ffffffffffffffffffffffffffffffffffffffff168152602001610d9b60808e0160608f0161283f565b73ffffffffffffffffffffffffffffffffffffffff16815260808d0135602090910152849190611ca5565b905060005b610dd860a08b018b612dbb565b9050811015610e2a57610e2082610df260a08d018d612dbb565b84818110610e0257610e02612e64565b905060600201803603810190610e189190613047565b859190611ca5565b9150600101610dcb565b508082526000610e3983611e1b565b6040517fc5dce0a600000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff88169063c5dce0a690610e92908d908a908a906004016131a4565b600060405180830381600087803b158015610eac57600080fd5b505af1158015610ec0573d6000803e3d6000fd5b50505050610ed78184611ee190919063ffffffff16565b9350610eec610ee68b80612ea6565b866117e3565b5050509695505050505050565b610f016111f0565b6003805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff00000000000000000000000000000000000000009091168117909155610f6460025473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b333014610fe2576040517f9eb36e6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080826001811115610ff757610ff7612d8c565b0361103f5773ffffffffffffffffffffffffffffffffffffffff881661101e57508461103f565b61103f73ffffffffffffffffffffffffffffffffffffffff89168888612085565b600182600181111561105357611053612d8c565b0361106357611063878988611611565b6000808673ffffffffffffffffffffffffffffffffffffffff1683878760405161108e9291906132df565b60006040518083038185875af1925050503d80600081146110cb576040519150601f19603f3d011682016040523d82523d6000602084013e6110d0565b606091505b5091509150816110e3576110e3816121a0565b60008460018111156110f7576110f7612d8c565b148015611119575073ffffffffffffffffffffffffffffffffffffffff8a1615155b156111e4576040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8a81166024830152600091908c169063dd62ed3e90604401602060405180830381865afa158015611194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b891906132ef565b905080156111e2576111e273ffffffffffffffffffffffffffffffffffffffff8c168b6000612085565b505b50505050505050505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610a4b576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016107d5565b600080611254610120840184612dbb565b905067ffffffffffffffff81111561126e5761126e612ac0565b604051908082528060200260200182016040528015611297578160200160208202803683370190505b50905060005b8151811015611307576112e26112b7610120860186612dbb565b838181106112c7576112c7612e64565b9050606002018036038101906112dd9190613047565b6121e2565b8282815181106112f4576112f4612e64565b602090810291909101015260010161129d565b5060405160200161131790613308565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815260608301909152603b808352909190613684602083013960405160200161136a9291906134da565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101206113aa8480612ea6565b6040516113b89291906132df565b604051809103902084602001358560400160208101906113d8919061283f565b6113e8608088016060890161283f565b60808801356113fd60c08a0160a08b0161283f565b61140a60c08b018b612ea6565b6040516114189291906132df565b6040519081900390206114326101008c0160e08d01612f0b565b6114446101208d016101008e0161283f565b8a6040516020016114559190613509565b604051602081830303815290604052805190602001206040516020016114859b9a9998979695949392919061353f565b60405160208183030381529060405280519060200120915050919050565b60006114eb6114b06122a1565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b92915050565b6000806000835160410361152b5760208401516040850151606086015160001a61151d888285856123d9565b955095509550505050611537565b50508151600091506002905b9250925092565b600073ffffffffffffffffffffffffffffffffffffffff8316156115f1576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906370a0823190602401602060405180830381865afa1580156115c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ec91906132ef565b61160a565b8173ffffffffffffffffffffffffffffffffffffffff16315b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166116fc5760008373ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611686576040519150601f19603f3d011682016040523d82523d6000602084013e61168b565b606091505b50509050806116f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4e6174697665207472616e73666572206661696c65640000000000000000000060448201526064016107d5565b50505050565b61171d73ffffffffffffffffffffffffffffffffffffffff831684836124d3565b505050565b6000805b8281101561178b578473ffffffffffffffffffffffffffffffffffffffff1684828151811061175757611757612e64565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603611783578291505061160a565b600101611726565b508383838151811061179f5761179f612e64565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101526117cf826001612e51565b949350505050565b60006114eb823061153e565b600583836040516117f59291906132df565b908152604051908190036020019020546fffffffffffffffffffffffffffffffff161561184e576040517f4a4117f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604051806040016040528061186243612511565b6fffffffffffffffffffffffffffffffff16815260200161188283612511565b6fffffffffffffffffffffffffffffffff16815250600584846040516118a99291906132df565b9081526040519081900360209081018220835193909101516fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000029316929092179091557f7e1f0837359c1f22422425d4a705a3353d20d1ecc0dc80aefb7c7f8c1009642e90610b97908590859085906135f6565b600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055610ac18161256b565b60606119807f000000000000000000000000000000000000000000000000000000000000000060006125e2565b905090565b60606119807f000000000000000000000000000000000000000000000000000000000000000060016125e2565b6000806119c260a0840184612dbb565b905067ffffffffffffffff8111156119dc576119dc612ac0565b604051908082528060200260200182016040528015611a05578160200160208202803683370190505b50905060005b8151811015611a4957611a246112b760a0860186612dbb565b828281518110611a3657611a36612e64565b6020908102919091010152600101611a0b565b50604080517f52657175657374656446756c66696c6c6d656e7428000000000000000000000060208201527f737472696e67206f7264657249642c000000000000000000000000000000000060358201527f75696e7432353620646561646c696e652c00000000000000000000000000000060448201527f6164647265737320746f6b656e2c00000000000000000000000000000000000060558201527f616464726573732072656365697665722c00000000000000000000000000000060638201527f75696e7432353620726571756573746564416d6f756e742c000000000000000060748201527f5472616e73666572446174615b5d2065787472615472616e7366657273290000608c8201528151608a81830301815261010a8201909252603b60aa8201818152916136849060ca0139604051602001611b8d9291906134da565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120611bcd8480612ea6565b604051611bdb9291906132df565b60405180910390208460200135856040016020810190611bfb919061283f565b611c0b608088016060890161283f565b876080013586604051602001611c219190613509565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012090830198909852810195909552606085019390935273ffffffffffffffffffffffffffffffffffffffff91821660808501521660a083015260c082015260e081019190915261010001611485565b60008160400151600003611cba57508161160a565b8351831115611cf5576040517f2116eb0400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b83811015611df157826000015173ffffffffffffffffffffffffffffffffffffffff16858281518110611d2d57611d2d612e64565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16148015611da85750826020015173ffffffffffffffffffffffffffffffffffffffff16858281518110611d8457611d84612e64565b60200260200101516020015173ffffffffffffffffffffffffffffffffffffffff16145b15611de9578260400151858281518110611dc457611dc4612e64565b6020026020010151604001818151611ddc9190612e51565b90525083915061160a9050565b600101611cf8565b5081848481518110611e0557611e05612e64565b60209081029190910101526117cf836001612e51565b60606000825167ffffffffffffffff811115611e3957611e39612ac0565b604051908082528060200260200182016040528015611e62578160200160208202803683370190505b50905060005b8351811015611eda57611eb5848281518110611e8657611e86612e64565b602002602001015160000151858381518110611ea457611ea4612e64565b60200260200101516020015161153e565b828281518110611ec757611ec7612e64565b6020908102919091010152600101611e68565b5092915050565b60008251825114611f1e576040517f2116eb0400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506000805b8351811015611eda576000611f61858381518110611f4357611f43612e64565b602002602001015160000151868481518110611ea457611ea4612e64565b90506000848381518110611f7757611f77612e64565b602002602001015182611f8a9190612e93565b905082600003611f98578093505b858381518110611faa57611faa612e64565b60200260200101516040015181101561207b57858381518110611fcf57611fcf612e64565b602002602001015160000151868481518110611fed57611fed612e64565b60200260200101516020015187858151811061200b5761200b612e64565b602090810291909101015160409081015190517f1f00e79900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526044820152606481018290526084016107d5565b5050600101611f23565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000179052612111848261268d565b6116f65760405173ffffffffffffffffffffffffffffffffffffffff84811660248301526000604483015261219691869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506126e9565b6116f684826126e9565b8051156121b05780518082602001fd5b6040517f3204506f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060600160405280603b8152602001613684603b913960405160200161220d919061361a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120855186830151878501519386019290925273ffffffffffffffffffffffffffffffffffffffff90811693850193909352919091166060830152608082015260a001604051602081830303815290604052805190602001209050919050565b60003073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614801561230757507f000000000000000000000000000000000000000000000000000000000000000046145b1561233157507f000000000000000000000000000000000000000000000000000000000000000090565b611980604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561241457506000915060039050826124c9565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612468573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166124bf575060009250600191508290506124c9565b9250600091508190505b9450945094915050565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261171d91859182169063a9059cbb9060640161214f565b60006fffffffffffffffffffffffffffffffff821115612567576040517f6dfcc65000000000000000000000000000000000000000000000000000000000815260806004820152602481018390526044016107d5565b5090565b6002805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606060ff83146125fc576125f58361278d565b90506114eb565b81805461260890613636565b80601f016020809104026020016040519081016040528092919081815260200182805461263490613636565b80156126815780601f1061265657610100808354040283529160200191612681565b820191906000526020600020905b81548152906001019060200180831161266457829003601f168201915b505050505090506114eb565b6000806000806020600086516020880160008a5af192503d915060005190508280156126df575081156126c357806001146126df565b60008673ffffffffffffffffffffffffffffffffffffffff163b115b9695505050505050565b600080602060008451602086016000885af18061270c576040513d6000823e3d81fd5b50506000513d9150811561272457806001141561273e565b73ffffffffffffffffffffffffffffffffffffffff84163b155b156116f6576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016107d5565b6060600061279a836127cc565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600060ff8216601f8111156114eb576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81168114610ac157600080fd5b803561283a8161280d565b919050565b60006020828403121561285157600080fd5b813561160a8161280d565b6000610140828403121561286f57600080fd5b50919050565b60008083601f84011261288757600080fd5b50813567ffffffffffffffff81111561289f57600080fd5b6020830191508360208285010111156128b757600080fd5b9250929050565b6000806000806000606086880312156128d657600080fd5b853567ffffffffffffffff8111156128ed57600080fd5b8601601f810188136128fe57600080fd5b803567ffffffffffffffff81111561291557600080fd5b8860208260051b840101111561292a57600080fd5b60209182019650945086013567ffffffffffffffff81111561294b57600080fd5b6129578882890161285c565b935050604086013567ffffffffffffffff81111561297457600080fd5b61298088828901612875565b969995985093965092949392505050565b60005b838110156129ac578181015183820152602001612994565b50506000910152565b600081518084526129cd816020860160208601612991565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201526000612a3a60e08301896129b5565b8281036040840152612a4c81896129b5565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b81811015612aaf578351835260209384019390920191600101612a91565b50909b9a5050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612b3657612b36612ac0565b604052919050565b600060208284031215612b5057600080fd5b813567ffffffffffffffff811115612b6757600080fd5b8201601f81018413612b7857600080fd5b803567ffffffffffffffff811115612b9257612b92612ac0565b612bc360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612aef565b818152856020838501011115612bd857600080fd5b81602084016020830137600091810160200191909152949350505050565b60008060408385031215612c0957600080fd5b8235612c148161280d565b91506020830135612c248161280d565b809150509250929050565b60008060008060008060808789031215612c4857600080fd5b863567ffffffffffffffff811115612c5f57600080fd5b870160c0818a031215612c7157600080fd5b9550602087013567ffffffffffffffff811115612c8d57600080fd5b612c9989828a01612875565b9096509450506040870135612cad8161280d565b9250606087013567ffffffffffffffff811115612cc957600080fd5b612cd589828a01612875565b979a9699509497509295939492505050565b80356002811061283a57600080fd5b600080600080600080600060c0888a031215612d1157600080fd5b8735612d1c8161280d565b96506020880135612d2c8161280d565b9550604088013594506060880135612d438161280d565b9350608088013567ffffffffffffffff811115612d5f57600080fd5b612d6b8a828b01612875565b9094509250612d7e905060a08901612ce7565b905092959891949750929550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612df057600080fd5b83018035915067ffffffffffffffff821115612e0b57600080fd5b60200191506060810236038213156128b757600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156114eb576114eb612e22565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b818103818111156114eb576114eb612e22565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612edb57600080fd5b83018035915067ffffffffffffffff821115612ef657600080fd5b6020019150368190038213156128b757600080fd5b600060208284031215612f1d57600080fd5b61160a82612ce7565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60028110612fa6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b73ffffffffffffffffffffffffffffffffffffffff8816815273ffffffffffffffffffffffffffffffffffffffff8716602082015285604082015273ffffffffffffffffffffffffffffffffffffffff8516606082015260c06080820152600061301860c083018587612f26565b905061302760a0830184612f6f565b98975050505050505050565b6020815260006117cf602083018486612f26565b6000606082840312801561305a57600080fd5b506040516060810167ffffffffffffffff8111828210171561307e5761307e612ac0565b604052823561308c8161280d565b8152602083013561309c8161280d565b60208201526040928301359281019290925250919050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126130e957600080fd5b830160208101925035905067ffffffffffffffff81111561310957600080fd5b6060810236038213156128b757600080fd5b81835260208301925060008160005b8481101561319a57813561313d8161280d565b73ffffffffffffffffffffffffffffffffffffffff16865260208201356131638161280d565b73ffffffffffffffffffffffffffffffffffffffff166020870152604082810135908701526060958601959091019060010161312a565b5093949350505050565b60408152600084357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126131dc57600080fd5b850160208101903567ffffffffffffffff8111156131f957600080fd5b80360382131561320857600080fd5b60c0604085015261321e61010085018284612f26565b60208801356060860152915061323890506040870161282f565b73ffffffffffffffffffffffffffffffffffffffff16608084015261325f6060870161282f565b73ffffffffffffffffffffffffffffffffffffffff811660a085015250608086013560c084015261329360a08701876130b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160e08601526132c883828461311b565b9250505082810360208401526126df818587612f26565b8183823760009101908152919050565b60006020828403121561330157600080fd5b5051919050565b7f52657175657374656446756c66696c6c6d656e745769746845787465726e616c81527f43616c6c2800000000000000000000000000000000000000000000000000000060208201527f737472696e67206f7264657249642c000000000000000000000000000000000060258201527f75696e7432353620646561646c696e652c00000000000000000000000000000060348201527f6164647265737320746f6b656e2c00000000000000000000000000000000000060458201527f6164647265737320746f6b656e44657374696e6174696f6e2c0000000000000060538201527f75696e7432353620726571756573746564416d6f756e742c0000000000000000606c8201527f616464726573732063616c6c5461726765742c0000000000000000000000000060848201527f62797465732063616c6c446174612c000000000000000000000000000000000060978201527f75696e74382063616c6c4d6f64652c000000000000000000000000000000000060a68201527f616464726573732066616c6c6261636b416464726573732c000000000000000060b5820152600060cd820161160a817f5472616e73666572446174615b5d2065787472615472616e73666572732900008152601e0190565b600083516134ec818460208801612991565b835190830190613500818360208801612991565b01949350505050565b8151600090829060208501835b82811015613534578151845260209384019390910190600101613516565b509195945050505050565b6000610160820190508c82528b60208301528a604083015273ffffffffffffffffffffffffffffffffffffffff8a16606083015273ffffffffffffffffffffffffffffffffffffffff891660808301528760a083015273ffffffffffffffffffffffffffffffffffffffff871660c08301528560e08301526135c5610100830186612f6f565b73ffffffffffffffffffffffffffffffffffffffff9390931661012082015261014001529998505050505050505050565b60408152600061360a604083018587612f26565b9050826020830152949350505050565b6000825161362c818460208701612991565b9190910192915050565b600181811c9082168061364a57607f821691505b60208210810361286f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fdfe5472616e7366657244617461286164647265737320746f6b656e2c616464726573732072656365697665722c75696e7432353620616d6f756e7429a2646970667358221220be9a9e382e4bf21a4d3b0692affae3b14d351686d68830bc59176c2345ae228164736f6c634300081c0033000000000000000000000000d8655d1154a74748ac48f673264efba5c369f4bd000000000000000000000000c89ce8ce46946432afc55b867af58cb211adcd9a