0 txs
1 call
constructor
constructor((address orderBook, ((address interpreter, address store, bytes bytecode) evaluable, (address signer, bytes32[] context, bytes signature)[] signedContext) task, bytes implementationData) config)
functions
iTaskHash
viewfunction iTaskHash() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
arb3
payablefunction arb3(address orderBook, tuple takeOrders, bytes exchangeData, tuple task) payable
onFlashLoan
nonpayablefunction onFlashLoan(address initiator, address, uint256, uint256, bytes data) returns (bytes32)
events
Construct
event Construct(address sender, (address orderBook, ((address interpreter, address store, bytes bytecode) evaluable, (address signer, bytes32[] context, bytes signature)[] signedContext) task, bytes implementationData) config)
errors
BadInitiator
error BadInitiator(address badInitiator)
CoefficientOverflow
error CoefficientOverflow(int256 signedCoefficient, int256 exponent)
ExponentOverflow
error ExponentOverflow(int256 signedCoefficient, int256 exponent)
FlashLoanFailed
error FlashLoanFailed()
InvalidSignature
error InvalidSignature(uint256 i)
LossyConversionFromFloat
error LossyConversionFromFloat(int256 signedCoefficient, int256 exponent)
NegativeFixedDecimalConversion
error NegativeFixedDecimalConversion(int256 signedCoefficient, int256 exponent)
NoOrders
error NoOrders()
TokenDecimalsReadFailure
error TokenDecimalsReadFailure(address token, uint8 tofuOutcome)
WrongTask
error WrongTask()
creation bytecode
0x60a0604052600060805234801561001557600080fd5b50604051613e69380380613e698339810160408190526100349161036e565b808060016000819055507f3a5f92e1700a303557ddae1bed800da2d50036e5b24950a948611540f0928e79338260405161006f9291906105e7565b60405180910390a16020810151516040015151156100b65760208082015160405161009a9201610647565b60408051601f1981840301815291905280516020909101206080525b505050610661565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156100f6576100f66100be565b60405290565b604080519081016001600160401b03811182821017156100f6576100f66100be565b604051601f8201601f191681016001600160401b0381118282101715610146576101466100be565b604052919050565b6001600160a01b038116811461016357600080fd5b50565b60005b83811015610181578181015183820152602001610169565b50506000910152565b600082601f83011261019b57600080fd5b81516001600160401b038111156101b4576101b46100be565b6101c7601f8201601f191660200161011e565b8181528460208386010111156101dc57600080fd5b6101ed826020830160208701610166565b949350505050565b60006001600160401b0382111561020e5761020e6100be565b5060051b60200190565b600082601f83011261022957600080fd5b8151602061023e610239836101f5565b61011e565b82815260059290921b8401810191818101908684111561025d57600080fd5b8286015b848110156103635780516001600160401b038082111561028057600080fd5b908801906060828b03601f190112156102995760008081fd5b6102a16100d4565b868301516102ae8161014e565b8152604083810151838111156102c45760008081fd5b8401603f81018d136102d65760008081fd5b888101516102e6610239826101f5565b81815260059190911b82018301908a8101908f8311156103065760008081fd5b928401925b828410156103245783518252928b0192908b019061030b565b858c015250505060608401518381111561033e5760008081fd5b61034c8d8a8388010161018a565b918301919091525085525050918301918301610261565b509695505050505050565b6000602080838503121561038157600080fd5b82516001600160401b038082111561039857600080fd5b90840190606082870312156103ac57600080fd5b6103b46100d4565b82516103bf8161014e565b815282840151828111156103d257600080fd5b8301604081890312156103e457600080fd5b6103ec6100fc565b8151848111156103fb57600080fd5b82016060818b03121561040d57600080fd5b6104156100d4565b81516104208161014e565b81528188015161042f8161014e565b8189015260408201518681111561044557600080fd5b6104518c82850161018a565b604083015250825250818601518481111561046b57600080fd5b6104778a828501610218565b878301525080868401525050604083015193508184111561049757600080fd5b6104a38785850161018a565b60408201529695505050505050565b600081518084526104ca816020860160208601610166565b601f01601f19169290920160200192915050565b6000604082516040855260018060a01b03808251166040870152602080830151606083821660608a015260408501519450606060808a015261052360a08a01866104b2565b888401518a82038b86015280518083529196508401925083860190600581901b870185016000805b838110156105d557898303601f19018552865180518a168452888101518985018890528051888601819052908a0190849060808701905b808310156105a25783518252928c019260019290920191908c0190610582565b508e84015193508681038f8801526105ba81856104b2565b9650505050508787019650878501945060018101905061054b565b50909c9b505050505050505050505050565b6001600160a01b0383811682526040602080840182905284519092169083015282015160608083015260009061062060a08401826104de565b90506040840151603f1984830301608085015261063d82826104b2565b9695505050505050565b60208152600061065a60208301846104de565b9392505050565b6080516137e06106896000396000818160d5015281816102c9015261031a01526137e06000f3fe60806040526004361061003f5760003560e01c806301ffc9a71461004d57806323e30c8b14610082578063640b48c3146100b057806393be095e146100c3575b34801561004b57600080fd5b005b34801561005957600080fd5b5061006d610068366004611fac565b6100f7565b60405190151581526020015b60405180910390f35b34801561008e57600080fd5b506100a261009d36600461205f565b610190565b604051908152602001610079565b61004b6100be3660046120db565b6102b6565b3480156100cf57600080fd5b506100a27f000000000000000000000000000000000000000000000000000000000000000081565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f23e30c8b00000000000000000000000000000000000000000000000000000000148061018a57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006001600160a01b03871630146101e4576040517f8b1f7c640000000000000000000000000000000000000000000000000000000081526001600160a01b03881660048201526024015b60405180910390fd5b6000806101f384860186612567565b9150915061020182826106aa565b6040517fd0f7a8620000000000000000000000000000000000000000000000000000000081526000908190339063d0f7a86290610242908790600401612983565b60408051808303816000875af1158015610260573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102849190612b11565b507f439148f0bbc682ca079e46d6e2c2f0c1e3b820f1a291b069d8882abf8cf18dd99c9b505050505050505050505050565b6102be6107b2565b6102c781612b35565b7f00000000000000000000000000000000000000000000000000000000000000001580159061033c5750806040516020016103029190612ba2565b604051602081830303815290604052805190602001207f000000000000000000000000000000000000000000000000000000000000000014155b15610373576040517f8812562900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103806060860186612bdb565b90506000036103bb576040517f9c95219f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008585856040516020016103d293929190612e97565b60408051601f19818403018152919052905060006103f36060880188612bdb565b600081811061040457610404613121565b90506020028101906104169190613150565b610420908061318e565b61042e9060608101906131c2565b61043b60608a018a612bdb565b600081811061044c5761044c613121565b905060200281019061045e9190613150565b6040013581811061047157610471613121565b610487926020604090920201908101915061320c565b905060006104986060890189612bdb565b60008181106104a9576104a9613121565b90506020028101906104bb9190613150565b6104c5908061318e565b6104d39060408101906131c2565b6104e060608b018b612bdb565b60008181106104f1576104f1613121565b90506020028101906105039190613150565b6020013581811061051657610516613121565b61052c926020604090920201908101915061320c565b9050600061053b600183610825565b9050600061054a600185610825565b905060006105598b35846108b0565b90506105706001600160a01b0385168d60006108ed565b6105a46001600160a01b0385168d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108ed565b6040517f5cffe9de0000000000000000000000000000000000000000000000000000000081526001600160a01b038d1690635cffe9de906105ef903090899086908c90600401613229565b6020604051808303816000875af115801561060e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610632919061325b565b610668576040517f92111eb200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61067d6001600160a01b0385168d60006108ed565b61069261068989612b35565b85858886610aba565b505050505050506106a36001600055565b5050505050565b6000806000838060200190518101906106c3919061327d565b925092509250600085606001516000815181106106e2576106e2613121565b60200260200101516000015160600151866060015160008151811061070957610709613121565b6020026020010151604001518151811061072557610725613121565b60209081029190910101515190506107486001600160a01b0382168560006108ed565b61077c6001600160a01b038216857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108ed565b60006107926001600160a01b0385168447610db4565b90506107a96001600160a01b0383168660006108ed565b50505050505050565b60026000540361081e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101db565b6002600055565b60008060006108348585610dda565b9092509050600182600381111561084d5761084d61331d565b1415801561086d5750600082600381111561086a5761086a61331d565b14155b156108a85783826040517fee07877f0000000000000000000000000000000000000000000000000000000081526004016101db92919061334c565b949350505050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8316601b0b60e084901d6108e4828286610ea8565b95945050505050565b80158061098057506040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801561095a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097e91906133a0565b155b610a0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084016101db565b6040516001600160a01b038316602482015260448101829052610ab59084907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610f06565b505050565b604080516001808252818301909252600091816020015b6060815260200190600190039081610ad1575050604080516003808252608082019092529192506000919060208201606080368337019050506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091506000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610b6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9191906133a0565b90508015610bad57610bad6001600160a01b0388163383611008565b600080610bba8389611051565b915091508184600081518110610bd257610bd2613121565b602090810291909101015250506040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091506001600160a01b038616906370a0823190602401602060405180830381865afa158015610c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6491906133a0565b90508015610c8057610c806001600160a01b0386163383611008565b600080610c8d8387611051565b915091508184600181518110610ca557610ca5613121565b602090810291909101015250479150610cc090503382611095565b610cea817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee6111e2565b82600281518110610cfd57610cfd613121565b602002602001018181525050508082600081518110610d1e57610d1e613121565b6020908102919091010152604080516001808252818301909252600091816020015b6040805160a08101825260009181018281526060808301939093526080820183905281526020810191909152815260200190600190039081610d405790505090508781600081518110610d9557610d95613121565b6020026020010181905250610daa838261123e565b5050505050505050565b60606108a88484846040518060600160405280602981526020016137b76029913961142f565b600080600080610dea868661153b565b90925090506000826003811115610e0357610e0361331d565b03610e9b576040805180820182526001815260ff83811660208084019182526001600160a01b038a166000908152908b9052939093209151825493517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00009094169015157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff161761010093909116929092029190911790555b90925090505b9250929050565b6000806000610eb886868661169d565b9150915080610efd576040517f05e4767800000000000000000000000000000000000000000000000000000000815260048101879052602481018690526044016101db565b50949350505050565b6000610f5b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166117f59092919063ffffffff16565b9050805160001480610f7c575080806020019051810190610f7c919061325b565b610ab5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101db565b6040516001600160a01b038316602482015260448101829052610ab59084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610a51565b60008060008060006110638787611804565b9250925092506000806110768585611862565b91509150818380156110855750815b9650965050505050509250929050565b804710156110ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016101db565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461114c576040519150601f19603f3d011682016040523d82523d6000602084013e611151565b606091505b5050905080610ab5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016101db565b60008060006111f18585611862565b9150915080611236576040517f22c9f7bb00000000000000000000000000000000000000000000000000000000815260048101869052602481018590526044016101db565b509392505050565b3360008181523060209081526040808320815160a0810183528083018581526060808301879052608083018190529082528185015282518581529384018581528484019093529093909291905b8651811015610daa578681815181106112a6576112a6613121565b602002602001015193506000846000015160400151511115611427576000808560000151600001516001600160a01b031663d04dfe236040518060e001604052808960000151602001516001600160a01b031681526020018a81526020018960000151604001518152602001600081526020016113278e8b60200151611936565b8152602001888152602001878152506040518263ffffffff1660e01b81526004016113529190613406565b600060405180830381865afa15801561136f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113979190810190613502565b8051919350915015611424578551602001516040517f04b19db40000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906304b19db4906113f1908b9085906004016135be565b600060405180830381600087803b15801561140b57600080fd5b505af115801561141f573d6000803e3d6000fd5b505050505b50505b60010161128b565b6060824710156114c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101db565b600080866001600160a01b031685876040516114dd91906135d7565b60006040518083038185875af1925050503d806000811461151a576040519150601f19603f3d011682016040523d82523d6000602084013e61151f565b606091505b509150915061153087838387611c3c565b979650505050505050565b6001600160a01b03811660008181526020848152604080832081518083018352905460ff80821615158352610100909104168184015281518083018352600481527f313ce5670000000000000000000000000000000000000000000000000000000093810193909352905192938493919284928392916115ba916135d7565b600060405180830381855afa9150503d80600081146115f5576040519150601f19603f3d011682016040523d82523d6000602084013e6115fa565b606091505b509150915081158061160e57508051602014155b1561162457505060200151600392509050610ea1565b60008180602001905181019061163a91906133a0565b905060ff8111156116575750505060200151600392509050610ea1565b8351819061166f57600096509450610ea19350505050565b846020015160ff168160ff161461168757600261168a565b60015b8560200151965096505050505050610ea1565b60008060008512156116e5576040517f4a7d166b00000000000000000000000000000000000000000000000000000000815260048101869052602481018590526044016101db565b846000036116f957506000905060016117ed565b8460ff8416850185811215611744576040517fd556b11100000000000000000000000000000000000000000000000000000000815260048101889052602481018790526044016101db565b60008060008312156117b2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb38312156117885760008095509550505050506117ed565b82600003600a0a91508184816117a0576117a06135e9565b04955050840290911491506117ed9050565b60008313156117e2576117c683600a613767565b91506117d28285613773565b9550600194506117ed9350505050565b509193506001925050505b935093915050565b60606108a8848460008561142f565b6000808060ff841681037f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86111561185157600a860460018201600a88066000149350935093505061185b565b8593509150600190505b9250925092565b6000601b83900b8314806118c0577d90e40fbeea1d3a4abc8955e946fe31cdcf66f634e10000000000000000008405156118a557620186a0840593506005830192505b8384601b0b146118c057600a840593508260010192506118a5565b828360030b14611906576040517fd556b11100000000000000000000000000000000000000000000000000000000815260048101859052602481018490526044016101db565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9390931660e09290921b91909117929050565b60606000825167ffffffffffffffff8111156119545761195461218b565b60405190808252806020026020018201604052801561197d578160200160208202803683370190505b509050600080845111611991576000611997565b83516001015b855160010101905060008167ffffffffffffffff8111156119ba576119ba61218b565b6040519080825280602002602001820160405280156119ed57816020015b60608152602001906001900390816119d85790505b5090506000611a12604080516002815233602082015230818301526060810190915290565b828281518110611a2457611a24613121565b602002602001018190525060005b8751811015611a82578180600101925050878181518110611a5557611a55613121565b6020026020010151838381518110611a6f57611a6f613121565b6020908102919091010152600101611a32565b50855115611c3257808060010191505083828281518110611aa557611aa5613121565b602002602001018190525060005b8651811015611c3057611b64878281518110611ad157611ad1613121565b602002602001015160000151611b41611b0e8a8581518110611af557611af5613121565b6020026020010151602001518051602090810291012090565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b898481518110611b5357611b53613121565b602002602001015160400151611ccf565b611b9d576040517f52bf9848000000000000000000000000000000000000000000000000000000008152600481018290526024016101db565b868181518110611baf57611baf613121565b6020026020010151600001516001600160a01b031660001b858281518110611bd957611bd9613121565b6020026020010181815250508180600101925050868181518110611bff57611bff613121565b602002602001015160200151838381518110611c1d57611c1d613121565b6020908102919091010152600101611ab3565b505b5095945050505050565b60608315611cc5578251600003611cbe576001600160a01b0385163b611cbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101db565b50816108a8565b6108a88383611d30565b6000806000611cde8585611d74565b90925090506000816004811115611cf757611cf761331d565b148015611d155750856001600160a01b0316826001600160a01b0316145b80611d265750611d26868686611db6565b9695505050505050565b815115611d405781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101db919061378a565b6000808251604103611daa5760208301516040840151606085015160001a611d9e87828585611ee8565b94509450505050610ea1565b50600090506002610ea1565b6000806000856001600160a01b0316631626ba7e60e01b8686604051602401611de092919061379d565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051611e4b91906135d7565b600060405180830381855afa9150503d8060008114611e86576040519150601f19603f3d011682016040523d82523d6000602084013e611e8b565b606091505b5091509150818015611e9f57506020815110155b8015611d26575080517f1626ba7e0000000000000000000000000000000000000000000000000000000090611edd90830160209081019084016133a0565b149695505050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611f1f5750600090506003611fa3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611f73573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611f9c57600060019250925050611fa3565b9150600090505b94509492505050565b600060208284031215611fbe57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611fee57600080fd5b9392505050565b6001600160a01b038116811461200a57600080fd5b50565b803561201881611ff5565b919050565b60008083601f84011261202f57600080fd5b50813567ffffffffffffffff81111561204757600080fd5b602083019150836020828501011115610ea157600080fd5b60008060008060008060a0878903121561207857600080fd5b863561208381611ff5565b9550602087013561209381611ff5565b94506040870135935060608701359250608087013567ffffffffffffffff8111156120bd57600080fd5b6120c989828a0161201d565b979a9699509497509295939492505050565b6000806000806000608086880312156120f357600080fd5b85356120fe81611ff5565b9450602086013567ffffffffffffffff8082111561211b57600080fd5b9087019060a0828a03121561212f57600080fd5b9094506040870135908082111561214557600080fd5b61215189838a0161201d565b9095509350606088013591508082111561216a57600080fd5b5086016040818903121561217d57600080fd5b809150509295509295909350565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156121dd576121dd61218b565b60405290565b6040805190810167ffffffffffffffff811182821017156121dd576121dd61218b565b60405160a0810167ffffffffffffffff811182821017156121dd576121dd61218b565b6040516080810167ffffffffffffffff811182821017156121dd576121dd61218b565b604051601f8201601f1916810167ffffffffffffffff811182821017156122755761227561218b565b604052919050565b600067ffffffffffffffff8211156122975761229761218b565b5060051b60200190565b600067ffffffffffffffff8211156122bb576122bb61218b565b50601f01601f191660200190565b600082601f8301126122da57600080fd5b81356122ed6122e8826122a1565b61224c565b81815284602083860101111561230257600080fd5b816020850160208301376000918101602001919091529392505050565b60006060828403121561233157600080fd5b6123396121ba565b9050813561234681611ff5565b8152602082013561235681611ff5565b6020820152604082013567ffffffffffffffff81111561237557600080fd5b612381848285016122c9565b60408301525092915050565b600082601f83011261239e57600080fd5b813560206123ae6122e88361227d565b82815260069290921b840181019181810190868411156123cd57600080fd5b8286015b8481101561241557604081890312156123ea5760008081fd5b6123f26121e3565b81356123fd81611ff5565b815281850135858201528352918301916040016123d1565b509695505050505050565b600082601f83011261243157600080fd5b813560206124416122e88361227d565b82815260059290921b8401810191818101908684111561246057600080fd5b8286015b8481101561241557803567ffffffffffffffff8082111561248457600080fd5b908801906060828b03601f1901121561249d5760008081fd5b6124a56121ba565b868301356124b281611ff5565b8152604083810135838111156124c85760008081fd5b8401603f81018d136124da5760008081fd5b888101356124ea6122e88261227d565b81815260059190911b82018301908a8101908f83111561250a5760008081fd5b928401925b828410156125285783358252928b0192908b019061250f565b858c01525050506060840135838111156125425760008081fd5b6125508d8a838801016122c9565b918301919091525085525050918301918301612464565b6000806040838503121561257a57600080fd5b67ffffffffffffffff808435111561259157600080fd5b60a084358501860312156125a457600080fd5b6125ac612206565b84358501803582526020808201359083015260408082013590830152606001358210156125d857600080fd5b84358501606081013501601f810187136125f157600080fd5b6125fe6122e8823561227d565b81358082526020808301929160051b84010189101561261c57600080fd5b602083015b6020843560051b85010181101561278957858135111561264057600080fd5b601f19608081833587018d0301121561265857600080fd5b612660612229565b876020843588010135111561267457600080fd5b8235860160208101350160a0818e038401121561269057600080fd5b612698612206565b92506126a66020820161200d565b835288604082013511156126b957600080fd5b6126cc8d6020604084013584010161231f565b602084015288606082013511156126e257600080fd5b6126f58d6020606084013584010161238d565b6040840152886080820135111561270b57600080fd5b61271e8d6020608084013584010161238d565b606084015260a08101356080840152508181526040833587010135602082015260608335870101356040820152876080843588010135111561275f57600080fd5b6127758c84358801608081013501602001612420565b606082015284525060209283019201612621565b506060840152505084358501608001358210156127a557600080fd5b6127b886863587016080810135016122c9565b6080820152925060208401358110156127d057600080fd5b506127e184602085013585016122c9565b90509250929050565b60005b838110156128055781810151838201526020016127ed565b50506000910152565b600081518084526128268160208601602086016127ea565b601f01601f19169290920160200192915050565b60006001600160a01b03808351168452806020840151166020850152506040820151606060408501526108a8606085018261280e565b60008151808452602080850194506020840160005b838110156128b557815180516001600160a01b031688528301518388015260409096019590820190600101612885565b509495945050505050565b60008151808452602080850194506020840160005b838110156128b5578151875295820195908201906001016128d5565b600082825180855260208086019550808260051b84010181860160005b8481101561297657601f19868403018952815160606001600160a01b038251168552858201518187870152612945828701826128c0565b91505060408083015192508582038187015250612962818361280e565b9a86019a945050509083019060010161290e565b5090979650505050505050565b6000602080835260c083018451828501528185015160408160408701526040870151915060608260608801526060880151925060a0608060a060808a015285855180885260e0975060e08b01915060e08160051b8c0101898801975060005b82811015612ae2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208d8303018452885180518684526001600160a01b03815116878501528c8101518889860152612a3e61012086018261283a565b90508a8201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80808784030160c0880152612a798383612870565b92508b840151915080878403018f88015250612a958282612870565b915050878201516101008601528d8301518e8601528a8301518b8601528983015192508481038a860152612ac981846128f1565b9b8e019b968e01969450505060019190910190506129e2565b5060808d01519950601f198c82030160a08d0152612b00818b61280e565b9d9c50505050505050505050505050565b60008060408385031215612b2457600080fd5b505080516020909101519092909150565b600060408236031215612b4757600080fd5b612b4f6121e3565b823567ffffffffffffffff80821115612b6757600080fd5b612b733683870161231f565b83526020850135915080821115612b8957600080fd5b50612b9636828601612420565b60208301525092915050565b602081526000825160406020840152612bbe606084018261283a565b90506020840151601f198483030160408501526108e482826128f1565b6000808335601e19843603018112612bf257600080fd5b83018035915067ffffffffffffffff821115612c0d57600080fd5b6020019150600581901b3603821315610ea157600080fd5b6000808335601e19843603018112612c3c57600080fd5b830160208101925035905067ffffffffffffffff811115612c5c57600080fd5b8060051b3603821315610ea157600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112612ca257600080fd5b90910192915050565b6000808335601e19843603018112612cc257600080fd5b830160208101925035905067ffffffffffffffff811115612ce257600080fd5b803603821315610ea157600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6000808335601e19843603018112612d3357600080fd5b830160208101925035905067ffffffffffffffff811115612d5357600080fd5b8060061b3603821315610ea157600080fd5b8183526000602080850194508260005b858110156128b5578135612d8881611ff5565b6001600160a01b03168752818301358388015260409687019690910190600101612d75565b818352602080840193600091600585811b830182018585805b89811015612e8857601f19878503018b52612de1838a612c6e565b60608135612dee81611ff5565b6001600160a01b03168652612e0582890183612c25565b828a8901528083890152608092507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115612e3f578586fd5b881b808289850137870190506040612e5984820185612cab565b94508389840301828a0152612e718484018683612cf1565b9f8b019f9850505094880194505050600101612dc6565b50919998505050505050505050565b6000604080835260e08301863582850152602060608189013581870152838901356080870152612ec9818a018a612c25565b60a0888101529384905261010093848801600582901b890186018360005b848110156130be577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008c840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81873603018112612f4857600080fd5b86018035368290037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61018112612f7d57600080fd5b6080855281018035612f8e81611ff5565b6001600160a01b038082166080880152612faa8c840184612c6e565b915060a0808801528135612fbd81611ff5565b8116610120880152818c0135612fd281611ff5565b16610140870152612fe5818e0182612cab565b91508a610160880152612ffd61018088018383612cf1565b91505061300c8d830183612d1c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80808985030160c08a0152613042848385612d65565b93506130508d860186612d1c565b93509150808985030160e08a01525061306a838383612d65565b9250505060808201358c8701528a8301358b8701528c8301358d8701526130938a840184612c25565b935091508581038a8701526130a9818484612dad565b968b0196955050509188019150600101612ee7565b50506130cd60808e018e612cab565b985096507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08a82030160c08b0152613106818989612cf1565b97505050505050848303818601525050611d26818587612cf1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261318457600080fd5b9190910192915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6183360301811261318457600080fd5b6000808335601e198436030181126131d957600080fd5b83018035915067ffffffffffffffff8211156131f457600080fd5b6020019150600681901b3603821315610ea157600080fd5b60006020828403121561321e57600080fd5b8135611fee81611ff5565b60006001600160a01b03808716835280861660208401525083604083015260806060830152611d26608083018461280e565b60006020828403121561326d57600080fd5b81518015158114611fee57600080fd5b60008060006060848603121561329257600080fd5b835161329d81611ff5565b60208501519093506132ae81611ff5565b604085015190925067ffffffffffffffff8111156132cb57600080fd5b8401601f810186136132dc57600080fd5b80516132ea6122e8826122a1565b8181528760208385010111156132ff57600080fd5b6133108260208301602086016127ea565b8093505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6001600160a01b03831681526040810160048310613393577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b8260208301529392505050565b6000602082840312156133b257600080fd5b5051919050565b60008282518085526020808601955060208260051b8401016020860160005b8481101561297657601f198684030189526133f48383516128c0565b988401989250908301906001016133d8565b602081526001600160a01b038251166020820152602082015160408201526000604083015160e0606084015261344061010084018261280e565b9050606084015160808401526080840151601f19808584030160a086015261346883836133b9565b925060a08601519150808584030160c086015261348583836128c0565b925060c08601519150808584030160e0860152506108e482826128c0565b600082601f8301126134b457600080fd5b815160206134c46122e88361227d565b8083825260208201915060208460051b8701019350868411156134e657600080fd5b602086015b8481101561241557805183529183019183016134eb565b6000806040838503121561351557600080fd5b825167ffffffffffffffff8082111561352d57600080fd5b818501915085601f83011261354157600080fd5b815160206135516122e88361227d565b82815260059290921b8401810191818101908984111561357057600080fd5b948201945b8386101561358e57855182529482019490820190613575565b918801519196509093505050808211156135a757600080fd5b506135b4858286016134a3565b9150509250929050565b8281526040602082015260006108a860408301846128c0565b600082516131848184602087016127ea565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b808511156136a057817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561368657613686613618565b8085161561369357918102915b93841c939080029061364c565b509250929050565b6000826136b75750600161018a565b816136c45750600061018a565b81600181146136da57600281146136e457613700565b600191505061018a565b60ff8411156136f5576136f5613618565b50506001821b61018a565b5060208310610133831016604e8410600b8410161715613723575081810a61018a565b61372d8383613647565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561375f5761375f613618565b029392505050565b6000611fee83836136a8565b808202811582820484141761018a5761018a613618565b602081526000611fee602083018461280e565b8281526040602082015260006108a8604083018461280e56fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c656400000000000000000000000000000000000000000000000000000000000000200000000000000000000000002f209e5b67a33b8fe96e28f24628df6da301c8eb00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000