diff --git a/deploy.zsh b/deploy.zsh index 1cdb983..616dcd0 100755 --- a/deploy.zsh +++ b/deploy.zsh @@ -5,7 +5,7 @@ config=script/input/config.json trap chain EXIT -chains=(eth arb bnb matic ftm op linea blast base zkevm manta sei) +chains=(eth arb bnb matic ftm op linea blast base zkevm manta sei sonic) echo $chains | tr ' ' '\n' | parallel --keep-order " echo \"\nšŸ”—šŸ”—šŸ”—šŸ”—šŸ”—šŸ”—šŸ”—šŸ”—šŸ”—šŸ”—šŸ”—šŸ”— {} šŸš€šŸš€šŸš€šŸš€šŸš€šŸš€šŸš€šŸš€šŸš€šŸš€šŸš€šŸš€\n\"; diff --git a/out/LiquidityHub.sol/LiquidityHub.json b/out/LiquidityHub.sol/LiquidityHub.json index 4a129e5..7878026 100644 --- a/out/LiquidityHub.sol/LiquidityHub.json +++ b/out/LiquidityHub.sol/LiquidityHub.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_reactor","type":"address","internalType":"contract IReactor"},{"name":"_allowed","type":"address","internalType":"contract IAllowed"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"INVALID_ADDRESS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"allowed","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IAllowed"}],"stateMutability":"view"},{"type":"function","name":"execute","inputs":[{"name":"order","type":"tuple","internalType":"struct SignedOrder","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]},{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]},{"name":"outAmountSwapper","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reactor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IReactor"}],"stateMutability":"view"},{"type":"function","name":"reactorCallback","inputs":[{"name":"orders","type":"tuple[]","internalType":"struct ResolvedOrder[]","components":[{"name":"info","type":"tuple","internalType":"struct OrderInfo","components":[{"name":"reactor","type":"address","internalType":"contract IReactor"},{"name":"swapper","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"additionalValidationContract","type":"address","internalType":"contract IValidationCallback"},{"name":"additionalValidationData","type":"bytes","internalType":"bytes"}]},{"name":"input","type":"tuple","internalType":"struct InputToken","components":[{"name":"token","type":"address","internalType":"contract ERC20"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"maxAmount","type":"uint256","internalType":"uint256"}]},{"name":"outputs","type":"tuple[]","internalType":"struct OutputToken[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"recipient","type":"address","internalType":"address"}]},{"name":"sig","type":"bytes","internalType":"bytes"},{"name":"hash","type":"bytes32","internalType":"bytes32"}]},{"name":"callbackData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validate","inputs":[{"name":"filler","type":"address","internalType":"address"},{"name":"","type":"tuple","internalType":"struct ResolvedOrder","components":[{"name":"info","type":"tuple","internalType":"struct OrderInfo","components":[{"name":"reactor","type":"address","internalType":"contract IReactor"},{"name":"swapper","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"additionalValidationContract","type":"address","internalType":"contract IValidationCallback"},{"name":"additionalValidationData","type":"bytes","internalType":"bytes"}]},{"name":"input","type":"tuple","internalType":"struct InputToken","components":[{"name":"token","type":"address","internalType":"contract ERC20"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"maxAmount","type":"uint256","internalType":"uint256"}]},{"name":"outputs","type":"tuple[]","internalType":"struct OutputToken[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"recipient","type":"address","internalType":"address"}]},{"name":"sig","type":"bytes","internalType":"bytes"},{"name":"hash","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"view"},{"type":"event","name":"ExtraOut","inputs":[{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Resolved","inputs":[{"name":"orderHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"swapper","type":"address","indexed":true,"internalType":"address"},{"name":"ref","type":"address","indexed":true,"internalType":"address"},{"name":"inToken","type":"address","indexed":false,"internalType":"address"},{"name":"outToken","type":"address","indexed":false,"internalType":"address"},{"name":"inAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"outAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Surplus","inputs":[{"name":"ref","type":"address","indexed":true,"internalType":"address"},{"name":"swapper","type":"address","indexed":false,"internalType":"address"},{"name":"token","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"refshare","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"InvalidOrder","inputs":[]},{"type":"error","name":"InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60c06040523480156200001157600080fd5b50604051620023eb380380620023eb833981016040819052620000349162000065565b6001600160a01b039182166080521660a052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a0516122f1620000fa60003960008181609201526101de0152600081816101670152818161029d0152818161042101528181610b1d01528181610b8501528181610c1a0152610c4501526122f16000f3fe6080604052600436106100745760003560e01c80635963709b1161004e5780635963709b146101205780636e84ba2b14610135578063ab57265014610155578063ffa1ad741461018957600080fd5b806319e1fca414610080578063489f9902146100de578063585da6281461010057600080fd5b3661007b57005b600080fd5b34801561008c57600080fd5b506100b47f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100ea57600080fd5b506100fe6100f93660046113e4565b6101b0565b005b34801561010c57600080fd5b506100fe61011b366004611859565b610409565b34801561012c57600080fd5b506100b4600181565b34801561014157600080fd5b506100fe6101503660046119e6565b610598565b34801561016157600080fd5b506100b47f000000000000000000000000000000000000000000000000000000000000000081565b34801561019557600080fd5b5061019e600681565b60405160ff90911681526020016100d5565b6040517fd63a8e110000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d63a8e1190602401602060405180830381865afa15801561023a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025e9190611a3d565b61029b576040517f4c14f64c0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d335884858585856040516020016102ed93929190611b1a565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610319929190611c7a565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b506000925061035a915086905080611d02565b8101906103679190611e17565b9050600080826000015160a001518060200190518101906103889190611eeb565b915091506103a8828460000151602001518560a001516000015184610603565b60005b8360c00151518110156103ff576103ed838560000151602001518660c0015184815181106103db576103db611f20565b60200260200101516000015185610603565b806103f781611f7e565b9150506103ab565b5050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461047a576040517f4c14f64c000000000000000000000000000000000000000000000000000000008152336004820152602401610292565b60008260008151811061048f5761048f611f20565b60200260200101519050600080838060200190518101906104b09190611fb6565b915091506104bd826106eb565b6000806104c98561079e565b91509150808311156104f0578451602001516104f09083906104eb848761210f565b6109b8565b6000856000015160a0015180602001905181019061050e9190612122565b86516020908101516080808a0151838b01518051908501516040805173ffffffffffffffffffffffffffffffffffffffff93841681528b8416978101979097528601526060850188905294955085851694909216927f848cc5ed1484f306a3369f20f8d5c1c291e44ddd16dd5f14c106effc790dc11f910160405180910390a45050505050505050565b73ffffffffffffffffffffffffffffffffffffffff821630146105ff576040517f4c14f64c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610292565b5050565b600061060f8330610a03565b90508060000361061f57506106e5565b600073ffffffffffffffffffffffffffffffffffffffff861661064357600061065c565b606461065260ff85168461213f565b61065c9190612156565b9050801561066f5761066f8487836109b8565b61067e84866104eb848661210f565b6040805173ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015291810184905260608101839052908716907fdcbeb523eb476416bee3486d82b37ae932021e9e9822c32c1ae986f97d2685df9060800160405180910390a250505b50505050565b6105ff73ca11bde05977b3631167028862be2a173976ca1163252dba4260e01b8360405160240161071c9190612191565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610ad8565b60016000805b8360400151518110156109b2576000846040015182815181106107c9576107c9611f20565b6020026020010151602001519050600081111561099f576000856040015183815181106107f8576107f8611f20565b60200260200101516000015190506108108183610afd565b85600001516020015173ffffffffffffffffffffffffffffffffffffffff168660400151848151811061084557610845611f20565b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff160361090a5773ffffffffffffffffffffffffffffffffffffffff85166001148015906108bf57508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156108f6576040517faf61069300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9350836109038285612239565b935061099d565b8560400151838151811061092057610920611f20565b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff167fccfa7da1b610c73a66316e176cd35aadc378051b68b1c29ded1b2d36418728ed828460405161099492919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60405180910390a25b505b50806109aa81611f7e565b9150506107a4565b50915091565b73ffffffffffffffffffffffffffffffffffffffff83166109e2576109dd8282610c8c565b505050565b6109dd73ffffffffffffffffffffffffffffffffffffffff84168383610de6565b600073ffffffffffffffffffffffffffffffffffffffff831615610ab6576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906370a0823190602401602060405180830381865afa158015610a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab1919061224c565b610acf565b8173ffffffffffffffffffffffffffffffffffffffff16315b90505b92915050565b6060610acf838360405180606001604052806027815260200161229560279139610eba565b73ffffffffffffffffffffffffffffffffffffffff8216610b42576105ff7f000000000000000000000000000000000000000000000000000000000000000082610c8c565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660248301526000919084169063dd62ed3e90604401602060405180830381865afa158015610bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfc919061224c565b9050610c4073ffffffffffffffffffffffffffffffffffffffff84167f00000000000000000000000000000000000000000000000000000000000000006000610f3f565b6109dd7f0000000000000000000000000000000000000000000000000000000000000000610c6e8484612239565b73ffffffffffffffffffffffffffffffffffffffff86169190610f3f565b80471015610cf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610292565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610d50576040519150601f19603f3d011682016040523d82523d6000602084013e610d55565b606091505b50509050806109dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610292565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109dd9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526110c1565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610ee49190612265565b600060405180830381855af49150503d8060008114610f1f576040519150601f19603f3d011682016040523d82523d6000602084013e610f24565b606091505b5091509150610f35868383876111d0565b9695505050505050565b801580610fdf57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015610fb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdd919061224c565b155b61106b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610292565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109dd9084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401610e38565b6000611123826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166112789092919063ffffffff16565b90508051600014806111445750808060200190518101906111449190611a3d565b6109dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610292565b6060831561126657825160000361125f5773ffffffffffffffffffffffffffffffffffffffff85163b61125f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610292565b5081611270565b6112708383611287565b949350505050565b606061127084846000856112cb565b8151156112975781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102929190612281565b60608247101561135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610292565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516113869190612265565b60006040518083038185875af1925050503d80600081146113c3576040519150601f19603f3d011682016040523d82523d6000602084013e6113c8565b606091505b50915091506113d9878383876111d0565b979650505050505050565b600080600080606085870312156113fa57600080fd5b843567ffffffffffffffff8082111561141257600080fd5b908601906040828903121561142657600080fd5b9094506020860135908082111561143c57600080fd5b818701915087601f83011261145057600080fd5b81358181111561145f57600080fd5b8860208260051b850101111561147457600080fd5b95986020929092019750949560400135945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156114de576114de61148c565b60405290565b60405160a0810167ffffffffffffffff811182821017156114de576114de61148c565b6040516080810167ffffffffffffffff811182821017156114de576114de61148c565b60405160e0810167ffffffffffffffff811182821017156114de576114de61148c565b6040805190810167ffffffffffffffff811182821017156114de576114de61148c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156115b7576115b761148c565b604052919050565b600067ffffffffffffffff8211156115d9576115d961148c565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461160557600080fd5b50565b8035611613816115e3565b919050565b600067ffffffffffffffff8211156116325761163261148c565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261166f57600080fd5b813561168261167d82611618565b611570565b81815284602083860101111561169757600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156116c657600080fd5b60405160c0810167ffffffffffffffff82821081831117156116ea576116ea61148c565b81604052829350843591506116fe826115e3565b908252602084013590611710826115e3565b81602084015260408501356040840152606085013560608401526080850135915061173a826115e3565b81608084015260a085013591508082111561175457600080fd5b506117618582860161165e565b60a0830152505092915050565b60006060828403121561178057600080fd5b6117886114bb565b90508135611795816115e3565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126117c457600080fd5b813560206117d461167d836115bf565b828152606092830285018201928282019190878511156117f357600080fd5b8387015b8581101561184c5781818a03121561180f5760008081fd5b6118176114bb565b8135611822816115e3565b8152818601358682015260408083013561183b816115e3565b9082015284529284019281016117f7565b5090979650505050505050565b6000806040838503121561186c57600080fd5b823567ffffffffffffffff8082111561188457600080fd5b818501915085601f83011261189857600080fd5b813560206118a861167d836115bf565b82815260059290921b840181019181810190898411156118c757600080fd5b8286015b848110156119b8578035868111156118e35760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156119195760008081fd5b6119216114e4565b86830135898111156119335760008081fd5b6119418f89838701016116b4565b8252506119518e6040850161176e565b8782015260a0830135898111156119685760008081fd5b6119768f89838701016117b3565b60408301525060c08301358981111561198f5760008081fd5b61199d8f898387010161165e565b606083015250910135608082015283529183019183016118cb565b50965050860135925050808211156119cf57600080fd5b506119dc8582860161165e565b9150509250929050565b600080604083850312156119f957600080fd5b8235611a04816115e3565b9150602083013567ffffffffffffffff811115611a2057600080fd5b830160e08186031215611a3257600080fd5b809150509250929050565b600060208284031215611a4f57600080fd5b81518015158114611a5f57600080fd5b9392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611a9b57600080fd5b830160208101925035905067ffffffffffffffff811115611abb57600080fd5b803603821315611aca57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60408082528181018490526000906060600586901b840181019084018784805b89811015611bf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c3603018112611b9a578283fd5b8b018035611ba7816115e3565b73ffffffffffffffffffffffffffffffffffffffff1686526020611bcd82820183611a66565b92508882890152611be18989018483611ad1565b97505094850194939093019250600101611b3a565b5050505060209390930193909352509392505050565b60005b83811015611c27578181015183820152602001611c0f565b50506000910152565b60008151808452611c48816020860160208601611c0c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b604081526000611c8a8485611a66565b604080850152611c9e608085018284611ad1565b915050611cae6020860186611a66565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0858403016060860152611ce3838284611ad1565b925050508281036020840152611cf98185611c30565b95945050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611d3757600080fd5b83018035915067ffffffffffffffff821115611d5257600080fd5b602001915036819003821315611aca57600080fd5b600082601f830112611d7857600080fd5b81356020611d8861167d836115bf565b82815260079290921b84018101918181019086841115611da757600080fd5b8286015b84811015611e0c5760808189031215611dc45760008081fd5b611dcc611507565b8135611dd7816115e3565b8152818501358582015260408083013590820152606080830135611dfa816115e3565b90820152835291830191608001611dab565b509695505050505050565b600060208284031215611e2957600080fd5b813567ffffffffffffffff80821115611e4157600080fd5b908301906101208286031215611e5657600080fd5b611e5e61152a565b823582811115611e6d57600080fd5b611e79878286016116b4565b8252506020830135602082015260408301356040820152611e9c60608401611608565b606082015260808301356080820152611eb88660a0850161176e565b60a082015261010083013582811115611ed057600080fd5b611edc87828601611d67565b60c08301525095945050505050565b60008060408385031215611efe57600080fd5b8251611f09816115e3565b602084015190925060ff81168114611a3257600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611faf57611faf611f4f565b5060010190565b6000806040808486031215611fca57600080fd5b835167ffffffffffffffff80821115611fe257600080fd5b818601915086601f830112611ff657600080fd5b8151602061200661167d836115bf565b82815260059290921b8401810191818101908a84111561202557600080fd5b8286015b848110156120fb578051868111156120415760008081fd5b8701808d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018913156120755760008081fd5b61207d61154d565b8582015161208a816115e3565b8152818a01518881111561209e5760008081fd5b8083019250508d603f8301126120b45760008081fd5b858201516120c461167d82611618565b8181528f8c8386010111156120d95760008081fd5b6120e8828983018e8701611c0c565b8288015250845250918301918301612029565b509890910151979997985050505050505050565b81810381811115610ad257610ad2611f4f565b60006020828403121561213457600080fd5b8151611a5f816115e3565b8082028115828204841417610ad257610ad2611f4f565b60008261218c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561222b578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff16845287015187840187905261221887850182611c30565b95880195935050908601906001016121b8565b509098975050505050505050565b80820180821115610ad257610ad2611f4f565b60006020828403121561225e57600080fd5b5051919050565b60008251612277818460208701611c0c565b9190910192915050565b602081526000610acf6020830184611c3056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122002b1a9237ec859b48a4b914b165b9a062696aa305c06c4645c0727ecc472983264736f6c63430008130033","sourceMap":"743:5198:68:-:0;;;1504:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1564:18:68;;;;;1592;;;743:5198;;14:141:75;-1:-1:-1;;;;;99:31:75;;89:42;;79:70;;145:1;142;135:12;79:70;14:141;:::o;160:439::-;273:6;281;334:2;322:9;313:7;309:23;305:32;302:52;;;350:1;347;340:12;302:52;382:9;376:16;401:41;436:5;401:41;:::i;:::-;511:2;496:18;;490:25;461:5;;-1:-1:-1;524:43:75;490:25;524:43;:::i;:::-;586:7;576:17;;;160:439;;;;;:::o;:::-;743:5198:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106100745760003560e01c80635963709b1161004e5780635963709b146101205780636e84ba2b14610135578063ab57265014610155578063ffa1ad741461018957600080fd5b806319e1fca414610080578063489f9902146100de578063585da6281461010057600080fd5b3661007b57005b600080fd5b34801561008c57600080fd5b506100b47f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100ea57600080fd5b506100fe6100f93660046113e4565b6101b0565b005b34801561010c57600080fd5b506100fe61011b366004611859565b610409565b34801561012c57600080fd5b506100b4600181565b34801561014157600080fd5b506100fe6101503660046119e6565b610598565b34801561016157600080fd5b506100b47f000000000000000000000000000000000000000000000000000000000000000081565b34801561019557600080fd5b5061019e600681565b60405160ff90911681526020016100d5565b6040517fd63a8e110000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d63a8e1190602401602060405180830381865afa15801561023a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025e9190611a3d565b61029b576040517f4c14f64c0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d335884858585856040516020016102ed93929190611b1a565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610319929190611c7a565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b506000925061035a915086905080611d02565b8101906103679190611e17565b9050600080826000015160a001518060200190518101906103889190611eeb565b915091506103a8828460000151602001518560a001516000015184610603565b60005b8360c00151518110156103ff576103ed838560000151602001518660c0015184815181106103db576103db611f20565b60200260200101516000015185610603565b806103f781611f7e565b9150506103ab565b5050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461047a576040517f4c14f64c000000000000000000000000000000000000000000000000000000008152336004820152602401610292565b60008260008151811061048f5761048f611f20565b60200260200101519050600080838060200190518101906104b09190611fb6565b915091506104bd826106eb565b6000806104c98561079e565b91509150808311156104f0578451602001516104f09083906104eb848761210f565b6109b8565b6000856000015160a0015180602001905181019061050e9190612122565b86516020908101516080808a0151838b01518051908501516040805173ffffffffffffffffffffffffffffffffffffffff93841681528b8416978101979097528601526060850188905294955085851694909216927f848cc5ed1484f306a3369f20f8d5c1c291e44ddd16dd5f14c106effc790dc11f910160405180910390a45050505050505050565b73ffffffffffffffffffffffffffffffffffffffff821630146105ff576040517f4c14f64c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610292565b5050565b600061060f8330610a03565b90508060000361061f57506106e5565b600073ffffffffffffffffffffffffffffffffffffffff861661064357600061065c565b606461065260ff85168461213f565b61065c9190612156565b9050801561066f5761066f8487836109b8565b61067e84866104eb848661210f565b6040805173ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015291810184905260608101839052908716907fdcbeb523eb476416bee3486d82b37ae932021e9e9822c32c1ae986f97d2685df9060800160405180910390a250505b50505050565b6105ff73ca11bde05977b3631167028862be2a173976ca1163252dba4260e01b8360405160240161071c9190612191565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610ad8565b60016000805b8360400151518110156109b2576000846040015182815181106107c9576107c9611f20565b6020026020010151602001519050600081111561099f576000856040015183815181106107f8576107f8611f20565b60200260200101516000015190506108108183610afd565b85600001516020015173ffffffffffffffffffffffffffffffffffffffff168660400151848151811061084557610845611f20565b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff160361090a5773ffffffffffffffffffffffffffffffffffffffff85166001148015906108bf57508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156108f6576040517faf61069300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9350836109038285612239565b935061099d565b8560400151838151811061092057610920611f20565b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff167fccfa7da1b610c73a66316e176cd35aadc378051b68b1c29ded1b2d36418728ed828460405161099492919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60405180910390a25b505b50806109aa81611f7e565b9150506107a4565b50915091565b73ffffffffffffffffffffffffffffffffffffffff83166109e2576109dd8282610c8c565b505050565b6109dd73ffffffffffffffffffffffffffffffffffffffff84168383610de6565b600073ffffffffffffffffffffffffffffffffffffffff831615610ab6576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906370a0823190602401602060405180830381865afa158015610a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab1919061224c565b610acf565b8173ffffffffffffffffffffffffffffffffffffffff16315b90505b92915050565b6060610acf838360405180606001604052806027815260200161229560279139610eba565b73ffffffffffffffffffffffffffffffffffffffff8216610b42576105ff7f000000000000000000000000000000000000000000000000000000000000000082610c8c565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660248301526000919084169063dd62ed3e90604401602060405180830381865afa158015610bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfc919061224c565b9050610c4073ffffffffffffffffffffffffffffffffffffffff84167f00000000000000000000000000000000000000000000000000000000000000006000610f3f565b6109dd7f0000000000000000000000000000000000000000000000000000000000000000610c6e8484612239565b73ffffffffffffffffffffffffffffffffffffffff86169190610f3f565b80471015610cf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610292565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610d50576040519150601f19603f3d011682016040523d82523d6000602084013e610d55565b606091505b50509050806109dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610292565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109dd9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526110c1565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610ee49190612265565b600060405180830381855af49150503d8060008114610f1f576040519150601f19603f3d011682016040523d82523d6000602084013e610f24565b606091505b5091509150610f35868383876111d0565b9695505050505050565b801580610fdf57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015610fb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdd919061224c565b155b61106b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610292565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109dd9084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401610e38565b6000611123826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166112789092919063ffffffff16565b90508051600014806111445750808060200190518101906111449190611a3d565b6109dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610292565b6060831561126657825160000361125f5773ffffffffffffffffffffffffffffffffffffffff85163b61125f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610292565b5081611270565b6112708383611287565b949350505050565b606061127084846000856112cb565b8151156112975781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102929190612281565b60608247101561135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610292565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516113869190612265565b60006040518083038185875af1925050503d80600081146113c3576040519150601f19603f3d011682016040523d82523d6000602084013e6113c8565b606091505b50915091506113d9878383876111d0565b979650505050505050565b600080600080606085870312156113fa57600080fd5b843567ffffffffffffffff8082111561141257600080fd5b908601906040828903121561142657600080fd5b9094506020860135908082111561143c57600080fd5b818701915087601f83011261145057600080fd5b81358181111561145f57600080fd5b8860208260051b850101111561147457600080fd5b95986020929092019750949560400135945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156114de576114de61148c565b60405290565b60405160a0810167ffffffffffffffff811182821017156114de576114de61148c565b6040516080810167ffffffffffffffff811182821017156114de576114de61148c565b60405160e0810167ffffffffffffffff811182821017156114de576114de61148c565b6040805190810167ffffffffffffffff811182821017156114de576114de61148c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156115b7576115b761148c565b604052919050565b600067ffffffffffffffff8211156115d9576115d961148c565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461160557600080fd5b50565b8035611613816115e3565b919050565b600067ffffffffffffffff8211156116325761163261148c565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261166f57600080fd5b813561168261167d82611618565b611570565b81815284602083860101111561169757600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156116c657600080fd5b60405160c0810167ffffffffffffffff82821081831117156116ea576116ea61148c565b81604052829350843591506116fe826115e3565b908252602084013590611710826115e3565b81602084015260408501356040840152606085013560608401526080850135915061173a826115e3565b81608084015260a085013591508082111561175457600080fd5b506117618582860161165e565b60a0830152505092915050565b60006060828403121561178057600080fd5b6117886114bb565b90508135611795816115e3565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126117c457600080fd5b813560206117d461167d836115bf565b828152606092830285018201928282019190878511156117f357600080fd5b8387015b8581101561184c5781818a03121561180f5760008081fd5b6118176114bb565b8135611822816115e3565b8152818601358682015260408083013561183b816115e3565b9082015284529284019281016117f7565b5090979650505050505050565b6000806040838503121561186c57600080fd5b823567ffffffffffffffff8082111561188457600080fd5b818501915085601f83011261189857600080fd5b813560206118a861167d836115bf565b82815260059290921b840181019181810190898411156118c757600080fd5b8286015b848110156119b8578035868111156118e35760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156119195760008081fd5b6119216114e4565b86830135898111156119335760008081fd5b6119418f89838701016116b4565b8252506119518e6040850161176e565b8782015260a0830135898111156119685760008081fd5b6119768f89838701016117b3565b60408301525060c08301358981111561198f5760008081fd5b61199d8f898387010161165e565b606083015250910135608082015283529183019183016118cb565b50965050860135925050808211156119cf57600080fd5b506119dc8582860161165e565b9150509250929050565b600080604083850312156119f957600080fd5b8235611a04816115e3565b9150602083013567ffffffffffffffff811115611a2057600080fd5b830160e08186031215611a3257600080fd5b809150509250929050565b600060208284031215611a4f57600080fd5b81518015158114611a5f57600080fd5b9392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611a9b57600080fd5b830160208101925035905067ffffffffffffffff811115611abb57600080fd5b803603821315611aca57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60408082528181018490526000906060600586901b840181019084018784805b89811015611bf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c3603018112611b9a578283fd5b8b018035611ba7816115e3565b73ffffffffffffffffffffffffffffffffffffffff1686526020611bcd82820183611a66565b92508882890152611be18989018483611ad1565b97505094850194939093019250600101611b3a565b5050505060209390930193909352509392505050565b60005b83811015611c27578181015183820152602001611c0f565b50506000910152565b60008151808452611c48816020860160208601611c0c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b604081526000611c8a8485611a66565b604080850152611c9e608085018284611ad1565b915050611cae6020860186611a66565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0858403016060860152611ce3838284611ad1565b925050508281036020840152611cf98185611c30565b95945050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611d3757600080fd5b83018035915067ffffffffffffffff821115611d5257600080fd5b602001915036819003821315611aca57600080fd5b600082601f830112611d7857600080fd5b81356020611d8861167d836115bf565b82815260079290921b84018101918181019086841115611da757600080fd5b8286015b84811015611e0c5760808189031215611dc45760008081fd5b611dcc611507565b8135611dd7816115e3565b8152818501358582015260408083013590820152606080830135611dfa816115e3565b90820152835291830191608001611dab565b509695505050505050565b600060208284031215611e2957600080fd5b813567ffffffffffffffff80821115611e4157600080fd5b908301906101208286031215611e5657600080fd5b611e5e61152a565b823582811115611e6d57600080fd5b611e79878286016116b4565b8252506020830135602082015260408301356040820152611e9c60608401611608565b606082015260808301356080820152611eb88660a0850161176e565b60a082015261010083013582811115611ed057600080fd5b611edc87828601611d67565b60c08301525095945050505050565b60008060408385031215611efe57600080fd5b8251611f09816115e3565b602084015190925060ff81168114611a3257600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611faf57611faf611f4f565b5060010190565b6000806040808486031215611fca57600080fd5b835167ffffffffffffffff80821115611fe257600080fd5b818601915086601f830112611ff657600080fd5b8151602061200661167d836115bf565b82815260059290921b8401810191818101908a84111561202557600080fd5b8286015b848110156120fb578051868111156120415760008081fd5b8701808d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018913156120755760008081fd5b61207d61154d565b8582015161208a816115e3565b8152818a01518881111561209e5760008081fd5b8083019250508d603f8301126120b45760008081fd5b858201516120c461167d82611618565b8181528f8c8386010111156120d95760008081fd5b6120e8828983018e8701611c0c565b8288015250845250918301918301612029565b509890910151979997985050505050505050565b81810381811115610ad257610ad2611f4f565b60006020828403121561213457600080fd5b8151611a5f816115e3565b8082028115828204841417610ad257610ad2611f4f565b60008261218c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561222b578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff16845287015187840187905261221887850182611c30565b95880195935050908601906001016121b8565b509098975050505050505050565b80820180821115610ad257610ad2611f4f565b60006020828403121561225e57600080fd5b5051919050565b60008251612277818460208701611c0c565b9190910192915050565b602081526000610acf6020830184611c3056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122002b1a9237ec859b48a4b914b165b9a062696aa305c06c4645c0727ecc472983264736f6c63430008130033","sourceMap":"743:5198:68:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1464:33;;;;;;;;;;;;;;;;;;208:42:75;196:55;;;178:74;;166:2;151:18;1464:33:68;;;;;;;;1906:640;;;;;;;;;;-1:-1:-1;1906:640:68;;;;;:::i;:::-;;:::i;:::-;;2597:768;;;;;;;;;;-1:-1:-1;2597:768:68;;;;;:::i;:::-;;:::i;1366:52::-;;;;;;;;;;;;1416:1;1366:52;;5722:155;;;;;;;;;;-1:-1:-1;5722:155:68;;;;;:::i;:::-;;:::i;1425:33::-;;;;;;;;;;;;;;;1327;;;;;;;;;;;;1359:1;1327:33;;;;;10920:4:75;10908:17;;;10890:36;;10878:2;10863:18;1327:33:68;10748:184:75;1906:640:68;1661:27;;;;;1677:10;1661:27;;;178:74:75;1661:7:68;:15;;;;;151:18:75;;1661:27:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1656:66;;1697:25;;;;;1711:10;1697:25;;;178:74:75;151:18;;1697:25:68;;;;;;;;1656:66;2063:7:::1;:27;;;2091:5;2109;;2116:16;2098:35;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2063:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;2145:28:68::1;::::0;-1:-1:-1;2187:11:68::1;::::0;-1:-1:-1;2187:5:68;;-1:-1:-1;2187:5:68;:11:::1;:::i;:::-;2176:46;;;;;;;:::i;:::-;2145:77;;2233:11;2246::::0;2272:1:::1;:6;;;:31;;;2261:61;;;;;;;;;;;;:::i;:::-;2232:90;;;;2333:60;2342:3;2347:1;:6;;;:14;;;2371:1;:7;;;:13;;;2387:5;2333:8;:60::i;:::-;2408:9;2403:137;2427:1;:9;;;:16;2423:1;:20;2403:137;;;2464:65;2473:3;2478:1;:6;;;:14;;;2502:1;:9;;;2512:1;2502:12;;;;;;;;:::i;:::-;;;;;;;:18;;;2523:5;2464:8;:65::i;:::-;2445:3:::0;::::1;::::0;::::1;:::i;:::-;;;;2403:137;;;;2053:493;;;1906:640:::0;;;;:::o;2597:768::-;1783:10;:30;1805:7;1783:30;;1779:68;;1822:25;;;;;1836:10;1822:25;;;178:74:75;151:18;;1822:25:68;14:244:75;1779:68:68;2720:26:::1;2749:6;2756:1;2749:9;;;;;;;;:::i;:::-;;;;;;;2720:38;;2770:31;2803:24:::0;2854:12:::1;2843:55;;;;;;;;;;;;:::i;:::-;2769:129;;;;2909:24;2927:5;2909:17;:24::i;:::-;2945:16;2963:17:::0;2984:26:::1;3004:5;2984:19;:26::i;:::-;2944:66;;;;3043:9;3024:16;:28;3020:103;;;3074:10:::0;;:18:::1;;::::0;3054:69:::1;::::0;3064:8;;3094:28:::1;3113:9:::0;3094:16;:28:::1;:::i;:::-;3054:9;:69::i;:::-;3134:11;3159:5;:10;;;:35;;;3148:58;;;;;;;;;;;;:::i;:::-;3256:10:::0;;:18:::1;::::0;;::::1;::::0;3244:10:::1;::::0;;::::1;::::0;3289:11;;::::1;::::0;:17;;3319:18;;::::1;::::0;3222:136:::1;::::0;;::::1;22397:15:75::0;;;22379:34;;22449:15;;;22429:18;;;22422:43;;;;22481:18;;22474:34;22539:2;22524:18;;22517:34;;;3134:72:68;;-1:-1:-1;3222:136:68;;::::1;::::0;;;::::1;::::0;::::1;::::0;22290:19:75;3222:136:68::1;;;;;;;2710:655;;;;;;2597:768:::0;;:::o;5722:155::-;5817:23;;;5835:4;5817:23;5813:57;;5849:21;;;;;208:42:75;196:55;;5849:21:68;;;178:74:75;151:18;;5849:21:68;14:244:75;5813:57:68;5722:155;;:::o;4413:440::-;4507:15;4525:32;4536:5;4551:4;4525:10;:32::i;:::-;4507:50;;4571:7;4582:1;4571:12;4567:25;;4585:7;;;4567:25;4602:16;4622:17;;;4621:47;;4667:1;4621:47;;;4661:3;4643:15;;;;:7;:15;:::i;:::-;:21;;;;:::i;:::-;4602:66;-1:-1:-1;4683:12:68;;4679:49;;4697:31;4707:5;4714:3;4719:8;4697:9;:31::i;:::-;4738:45;4748:5;4755:7;4764:18;4774:8;4764:7;:18;:::i;4738:45::-;4799:47;;;;22397:15:75;;;22379:34;;22449:15;;;22444:2;22429:18;;22422:43;22481:18;;;22474:34;;;22539:2;22524:18;;22517:34;;;4799:47:68;;;;;;22305:3:75;22290:19;4799:47:68;;;;;;;4497:356;;4413:440;;;;;:::o;3371:224::-;3449:139;121:42:65;3540:30:68;;;3572:5;3517:61;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3449:28;:139::i;3601:806::-;1416:1;3675:16;;3758:643;3782:5;:13;;;:20;3778:1;:24;3758:643;;;3823:14;3840:5;:13;;;3854:1;3840:16;;;;;;;;:::i;:::-;;;;;;;:23;;;3823:40;;3891:1;3882:6;:10;3878:513;;;3912:13;3936:5;:13;;;3950:1;3936:16;;;;;;;;:::i;:::-;;;;;;;:22;;;3912:47;;3977:29;3992:5;3999:6;3977:14;:29::i;:::-;4059:5;:10;;;:18;;;4029:48;;:5;:13;;;4043:1;4029:16;;;;;;;;:::i;:::-;;;;;;;:26;;;:48;;;4025:352;;4105:27;;;1416:1;4105:27;;;;:48;;;4148:5;4136:17;;:8;:17;;;;4105:48;4101:75;;;4162:14;;;;;;;;;;;;;;4101:75;4209:5;-1:-1:-1;4209:5:68;4236:19;4249:6;4236:19;;:::i;:::-;;;4025:352;;;4316:5;:13;;;4330:1;4316:16;;;;;;;;:::i;:::-;;;;;;;:26;;;4307:51;;;4344:5;4351:6;4307:51;;;;;;24483:42:75;24471:55;;;;24453:74;;24558:2;24543:18;;24536:34;24441:2;24426:18;;24279:297;4307:51:68;;;;;;;;4025:352;3894:497;3878:513;-1:-1:-1;3804:3:68;;;;:::i;:::-;;;;3758:643;;;;3601:806;;;:::o;5290:203::-;5374:19;;;5370:116;;5395:38;5421:2;5426:6;5395:17;:38::i;:::-;5290:203;;;:::o;5370:116::-;5448:38;:26;;;5475:2;5479:6;5448:26;:38::i;5499:169::-;5569:7;5596:19;;;;5595:66;;5633:28;;;;;:23;196:55:75;;;5633:28:68;;;178:74:75;5633:23:68;;;;;151:18:75;;5633:28:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5595:66;;;5619:3;:11;;;5595:66;5588:73;;5499:169;;;;;:::o;6674:198:47:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;4859:425:68:-;4936:19;;;4932:346;;4971:52;5005:7;5016:6;4971:17;:52::i;4932:346::-;5074:56;;;;;5106:4;5074:56;;;25005:34:75;5074:23:68;5121:7;25075:15:75;;25055:18;;;25048:43;-1:-1:-1;;5074:23:68;;;;;;24917:18:75;;5074:56:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5054:76;-1:-1:-1;5144:46:68;:25;;;5178:7;5188:1;5144:25;:46::i;:::-;5204:63;5238:7;5248:18;5260:6;5248:9;:18;:::i;:::-;5204:25;;;;:63;:25;:63::i;2647:312:47:-;2761:6;2736:21;:31;;2728:73;;;;;;;25304:2:75;2728:73:47;;;25286:21:75;25343:2;25323:18;;;25316:30;25382:31;25362:18;;;25355:59;25431:18;;2728:73:47;25102:353:75;2728:73:47;2813:12;2831:9;:14;;2853:6;2831:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2812:52;;;2882:7;2874:78;;;;;;;25872:2:75;2874:78:47;;;25854:21:75;25911:2;25891:18;;;25884:30;25950:34;25930:18;;;25923:62;26021:28;26001:18;;;25994:56;26067:19;;2874:78:47;25670:422:75;941:175:46;1050:58;;24483:42:75;24471:55;;1050:58:46;;;24453:74:75;24543:18;;;24536:34;;;1023:86:46;;1043:5;;1073:23;;24426:18:75;;1050:58:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1023:19;:86::i;7058:325:47:-;7199:12;7224;7238:23;7265:6;:19;;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:47:o;1818:573:46:-;2143:10;;;2142:62;;-1:-1:-1;2159:39:46;;;;;2183:4;2159:39;;;25005:34:75;2159:15:46;25075::75;;;25055:18;;;25048:43;2159:15:46;;;;;24917:18:75;;2159:39:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;2142:62;2121:163;;;;;;;26591:2:75;2121:163:46;;;26573:21:75;26630:2;26610:18;;;26603:30;26669:34;26649:18;;;26642:62;26740:24;26720:18;;;26713:52;26782:19;;2121:163:46;26389:418:75;2121:163:46;2321:62;;24483:42:75;24471:55;;2321:62:46;;;24453:74:75;24543:18;;;24536:34;;;2294:90:46;;2314:5;;2344:22;;24426:18:75;;2321:62:46;24279:297:75;5196:642:46;5615:23;5641:69;5669:4;5641:69;;;;;;;;;;;;;;;;;5649:5;5641:27;;;;:69;;;;;:::i;:::-;5615:95;;5728:10;:17;5749:1;5728:22;:56;;;;5765:10;5754:30;;;;;;;;;;;;:::i;:::-;5720:111;;;;;;;27014:2:75;5720:111:46;;;26996:21:75;27053:2;27033:18;;;27026:30;27092:34;27072:18;;;27065:62;27163:12;27143:18;;;27136:40;27193:19;;5720:111:46;26812:406:75;7671:628:47;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;1702:19;;;;8113:60;;;;;;;27425:2:75;8113:60:47;;;27407:21:75;27464:2;27444:18;;;27437:30;27503:31;27483:18;;;27476:59;27552:18;;8113:60:47;27223:353:75;8113:60:47;-1:-1:-1;8208:10:47;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;4108:223::-;4241:12;4272:52;4294:6;4302:4;4308:1;4311:12;4272:21;:52::i;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;;;;;;;;;;:::i;5165:446::-;5330:12;5387:5;5362:21;:30;;5354:81;;;;;;;28007:2:75;5354:81:47;;;27989:21:75;28046:2;28026:18;;;28019:30;28085:34;28065:18;;;28058:62;28156:8;28136:18;;;28129:36;28182:19;;5354:81:47;27805:402:75;5354:81:47;5446:12;5460:23;5487:6;:11;;5506:5;5513:4;5487:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:73;;;;5535:69;5562:6;5570:7;5579:10;5591:12;5535:26;:69::i;:::-;5528:76;5165:446;-1:-1:-1;;;;;;;5165:446:47:o;263:975:75:-;422:6;430;438;446;499:2;487:9;478:7;474:23;470:32;467:52;;;515:1;512;505:12;467:52;555:9;542:23;584:18;625:2;617:6;614:14;611:34;;;641:1;638;631:12;611:34;664:22;;;;720:2;702:16;;;698:25;695:45;;;736:1;733;726:12;695:45;759:2;;-1:-1:-1;814:2:75;799:18;;786:32;;830:16;;;827:36;;;859:1;856;849:12;827:36;897:8;886:9;882:24;872:34;;944:7;937:4;933:2;929:13;925:27;915:55;;966:1;963;956:12;915:55;1006:2;993:16;1032:2;1024:6;1021:14;1018:34;;;1048:1;1045;1038:12;1018:34;1101:7;1096:2;1086:6;1083:1;1079:14;1075:2;1071:23;1067:32;1064:45;1061:65;;;1122:1;1119;1112:12;1061:65;263:975;;1153:2;1145:11;;;;;-1:-1:-1;1175:6:75;;1228:2;1213:18;1200:32;;-1:-1:-1;263:975:75;-1:-1:-1;;;263:975:75:o;1243:184::-;1295:77;1292:1;1285:88;1392:4;1389:1;1382:15;1416:4;1413:1;1406:15;1432:253;1504:2;1498:9;1546:4;1534:17;;1581:18;1566:34;;1602:22;;;1563:62;1560:88;;;1628:18;;:::i;:::-;1664:2;1657:22;1432:253;:::o;1690:::-;1762:2;1756:9;1804:4;1792:17;;1839:18;1824:34;;1860:22;;;1821:62;1818:88;;;1886:18;;:::i;1948:253::-;2020:2;2014:9;2062:4;2050:17;;2097:18;2082:34;;2118:22;;;2079:62;2076:88;;;2144:18;;:::i;2206:253::-;2278:2;2272:9;2320:4;2308:17;;2355:18;2340:34;;2376:22;;;2337:62;2334:88;;;2402:18;;:::i;2464:251::-;2536:2;2530:9;;;2566:15;;2611:18;2596:34;;2632:22;;;2593:62;2590:88;;;2658:18;;:::i;2720:334::-;2791:2;2785:9;2847:2;2837:13;;2852:66;2833:86;2821:99;;2950:18;2935:34;;2971:22;;;2932:62;2929:88;;;2997:18;;:::i;:::-;3033:2;3026:22;2720:334;;-1:-1:-1;2720:334:75:o;3059:196::-;3132:4;3165:18;3157:6;3154:30;3151:56;;;3187:18;;:::i;:::-;-1:-1:-1;3232:1:75;3228:14;3244:4;3224:25;;3059:196::o;3260:164::-;3356:42;3349:5;3345:54;3338:5;3335:65;3325:93;;3414:1;3411;3404:12;3325:93;3260:164;:::o;3429:144::-;3497:20;;3526:41;3497:20;3526:41;:::i;:::-;3429:144;;;:::o;3578:245::-;3626:4;3659:18;3651:6;3648:30;3645:56;;;3681:18;;:::i;:::-;-1:-1:-1;3738:2:75;3726:15;3743:66;3722:88;3812:4;3718:99;;3578:245::o;3828:462::-;3870:5;3923:3;3916:4;3908:6;3904:17;3900:27;3890:55;;3941:1;3938;3931:12;3890:55;3977:6;3964:20;4008:48;4024:31;4052:2;4024:31;:::i;:::-;4008:48;:::i;:::-;4081:2;4072:7;4065:19;4127:3;4120:4;4115:2;4107:6;4103:15;4099:26;4096:35;4093:55;;;4144:1;4141;4134:12;4093:55;4209:2;4202:4;4194:6;4190:17;4183:4;4174:7;4170:18;4157:55;4257:1;4232:16;;;4250:4;4228:27;4221:38;;;;4236:7;3828:462;-1:-1:-1;;;3828:462:75:o;4295:1123::-;4351:5;4399:4;4387:9;4382:3;4378:19;4374:30;4371:50;;;4417:1;4414;4407:12;4371:50;4450:2;4444:9;4492:4;4484:6;4480:17;4516:18;4584:6;4572:10;4569:22;4564:2;4552:10;4549:18;4546:46;4543:72;;;4595:18;;:::i;:::-;4635:10;4631:2;4624:22;4664:6;4655:15;;4707:9;4694:23;4679:38;;4726:43;4761:7;4726:43;:::i;:::-;4778:23;;;4853:2;4838:18;;4825:32;;4866:43;4825:32;4866:43;:::i;:::-;4942:7;4937:2;4929:6;4925:15;4918:32;5011:2;5000:9;4996:18;4983:32;4978:2;4970:6;4966:15;4959:57;5077:2;5066:9;5062:18;5049:32;5044:2;5036:6;5032:15;5025:57;5134:3;5123:9;5119:19;5106:33;5091:48;;5148:43;5183:7;5148:43;:::i;:::-;5225:7;5219:3;5211:6;5207:16;5200:33;5284:3;5273:9;5269:19;5256:33;5242:47;;5312:2;5304:6;5301:14;5298:34;;;5328:1;5325;5318:12;5298:34;;5366:45;5407:3;5398:6;5387:9;5383:22;5366:45;:::i;:::-;5360:3;5352:6;5348:16;5341:71;;;4295:1123;;;;:::o;5423:433::-;5480:5;5528:4;5516:9;5511:3;5507:19;5503:30;5500:50;;;5546:1;5543;5536:12;5500:50;5568:22;;:::i;:::-;5559:31;;5627:9;5614:23;5646:43;5681:7;5646:43;:::i;:::-;5712:7;5705:5;5698:22;;5780:2;5769:9;5765:18;5752:32;5747:2;5740:5;5736:14;5729:56;5845:2;5834:9;5830:18;5817:32;5812:2;5805:5;5801:14;5794:56;5423:433;;;;:::o;5861:1249::-;5926:5;5979:3;5972:4;5964:6;5960:17;5956:27;5946:55;;5997:1;5994;5987:12;5946:55;6033:6;6020:20;6059:4;6083:73;6099:56;6152:2;6099:56;:::i;6083:73::-;6190:15;;;6252:4;6295:11;;;6283:24;;6279:33;;;6221:12;;;;6178:3;6324:15;;;6321:35;;;6352:1;6349;6342:12;6321:35;6388:2;6380:6;6376:15;6400:681;6416:6;6411:3;6408:15;6400:681;;;6492:2;6486:3;6481;6477:13;6473:22;6470:112;;;6536:1;6565:2;6561;6554:14;6470:112;6608:22;;:::i;:::-;6671:3;6658:17;6688:43;6723:7;6688:43;:::i;:::-;6744:22;;6815:12;;;6802:26;6786:14;;;6779:50;6852:2;6895:12;;;6882:26;6921:43;6882:26;6921:43;:::i;:::-;6984:14;;;6977:31;7021:18;;7059:12;;;;6433;;6400:681;;;-1:-1:-1;7099:5:75;;5861:1249;-1:-1:-1;;;;;;;5861:1249:75:o;7115:2608::-;7247:6;7255;7308:2;7296:9;7287:7;7283:23;7279:32;7276:52;;;7324:1;7321;7314:12;7276:52;7364:9;7351:23;7393:18;7434:2;7426:6;7423:14;7420:34;;;7450:1;7447;7440:12;7420:34;7488:6;7477:9;7473:22;7463:32;;7533:7;7526:4;7522:2;7518:13;7514:27;7504:55;;7555:1;7552;7545:12;7504:55;7591:2;7578:16;7613:4;7637:73;7653:56;7706:2;7653:56;:::i;7637:73::-;7744:15;;;7826:1;7822:10;;;;7814:19;;7810:28;;;7775:12;;;;7850:19;;;7847:39;;;7882:1;7879;7872:12;7847:39;7914:2;7910;7906:11;7926:1595;7942:6;7937:3;7934:15;7926:1595;;;8028:3;8015:17;8064:2;8051:11;8048:19;8045:109;;;8108:1;8137:2;8133;8126:14;8045:109;8177:20;;8220:4;8248:16;;;8266:66;8244:89;8240:98;-1:-1:-1;8237:188:75;;;8379:1;8408:2;8404;8397:14;8237:188;8451:22;;:::i;:::-;8523:2;8519;8515:11;8502:25;8556:2;8546:8;8543:16;8540:106;;;8600:1;8629:2;8625;8618:14;8540:106;8673:64;8729:7;8724:2;8713:8;8709:2;8705:17;8701:26;8673:64;:::i;:::-;8666:5;8659:79;;8774:50;8816:7;8811:2;8807;8803:11;8774:50;:::i;:::-;8769:2;8762:5;8758:14;8751:74;8875:4;8871:2;8867:13;8854:27;8910:2;8900:8;8897:16;8894:109;;;8955:1;8985:3;8980;8973:16;8894:109;9039:76;9107:7;9102:2;9091:8;9087:2;9083:17;9079:26;9039:76;:::i;:::-;9034:2;9027:5;9023:14;9016:100;;9166:3;9162:2;9158:12;9145:26;9200:2;9190:8;9187:16;9184:109;;;9245:1;9275:3;9270;9263:16;9184:109;9331:53;9376:7;9371:2;9360:8;9356:2;9352:17;9348:26;9331:53;:::i;:::-;9324:4;9313:16;;9306:79;-1:-1:-1;9435:11:75;;9422:25;9416:3;9405:15;;9398:50;9461:18;;9499:12;;;;7959;;7926:1595;;;-1:-1:-1;9540:5:75;-1:-1:-1;;9583:18:75;;9570:32;;-1:-1:-1;;9614:16:75;;;9611:36;;;9643:1;9640;9633:12;9611:36;;9666:51;9709:7;9698:8;9687:9;9683:24;9666:51;:::i;:::-;9656:61;;;7115:2608;;;;;:::o;9959:537::-;10059:6;10067;10120:2;10108:9;10099:7;10095:23;10091:32;10088:52;;;10136:1;10133;10126:12;10088:52;10175:9;10162:23;10194:41;10229:5;10194:41;:::i;:::-;10254:5;-1:-1:-1;10310:2:75;10295:18;;10282:32;10337:18;10326:30;;10323:50;;;10369:1;10366;10359:12;10323:50;10392:22;;10448:3;10430:16;;;10426:26;10423:46;;;10465:1;10462;10455:12;10423:46;10488:2;10478:12;;;9959:537;;;;;:::o;10937:277::-;11004:6;11057:2;11045:9;11036:7;11032:23;11028:32;11025:52;;;11073:1;11070;11063:12;11025:52;11105:9;11099:16;11158:5;11151:13;11144:21;11137:5;11134:32;11124:60;;11180:1;11177;11170:12;11124:60;11203:5;10937:277;-1:-1:-1;;;10937:277:75:o;11219:559::-;11277:5;11284:6;11344:3;11331:17;11426:66;11415:8;11399:14;11395:29;11391:102;11371:18;11367:127;11357:155;;11508:1;11505;11498:12;11357:155;11536:33;;11640:4;11627:18;;;-1:-1:-1;11588:21:75;;-1:-1:-1;11668:18:75;11657:30;;11654:50;;;11700:1;11697;11690:12;11654:50;11747:6;11731:14;11727:27;11720:5;11716:39;11713:59;;;11768:1;11765;11758:12;11713:59;11219:559;;;;;:::o;11783:325::-;11871:6;11866:3;11859:19;11923:6;11916:5;11909:4;11904:3;11900:14;11887:43;;11975:1;11968:4;11959:6;11954:3;11950:16;11946:27;11939:38;11841:3;12097:4;12027:66;12022:2;12014:6;12010:15;12006:88;12001:3;11997:98;11993:109;11986:116;;11783:325;;;;:::o;12113:1622::-;12370:2;12422:21;;;12395:18;;;12478:22;;;-1:-1:-1;;12531:2:75;12580:1;12576:14;;;12561:30;;12557:39;;;12516:18;;12619:6;-1:-1:-1;;12674:987:75;12690:6;12685:3;12682:15;12674:987;;;12783:66;12771:9;12763:6;12759:22;12755:95;12750:3;12743:108;12903:6;12890:20;12990:66;12981:6;12965:14;12961:27;12957:100;12937:18;12933:125;12923:153;;13072:1;13069;13062:12;12923:153;13102:31;;13161:19;;13193:43;13161:19;13193:43;:::i;:::-;13277:42;13264:56;13249:72;;13344:4;13395:53;13433:14;;;13437:5;13395:53;:::i;:::-;13361:87;;13485:2;13480;13472:6;13468:15;13461:27;13511:70;13577:2;13569:6;13565:15;13551:12;13537;13511:70;:::i;:::-;13501:80;-1:-1:-1;;13639:12:75;;;;13604:15;;;;;-1:-1:-1;12716:1:75;12707:11;12674:987;;;-1:-1:-1;;;;13715:4:75;13700:20;;;;13693:36;;;;-1:-1:-1;13678:6:75;12113:1622;-1:-1:-1;;;12113:1622:75:o;13740:250::-;13825:1;13835:113;13849:6;13846:1;13843:13;13835:113;;;13925:11;;;13919:18;13906:11;;;13899:39;13871:2;13864:10;13835:113;;;-1:-1:-1;;13982:1:75;13964:16;;13957:27;13740:250::o;13995:329::-;14036:3;14074:5;14068:12;14101:6;14096:3;14089:19;14117:76;14186:6;14179:4;14174:3;14170:14;14163:4;14156:5;14152:16;14117:76;:::i;:::-;14238:2;14226:15;14243:66;14222:88;14213:98;;;;14313:4;14209:109;;13995:329;-1:-1:-1;;13995:329:75:o;14329:892::-;14562:2;14551:9;14544:21;14525:4;14608:46;14647:6;14639;14608:46;:::i;:::-;14690:2;14685;14674:9;14670:18;14663:30;14716:74;14785:3;14774:9;14770:19;14756:12;14742;14716:74;:::i;:::-;14702:88;;;14837:57;14888:4;14880:6;14876:17;14868:6;14837:57;:::i;:::-;14958:66;14946:9;14938:6;14934:22;14930:95;14925:2;14914:9;14910:18;14903:123;15046:65;15104:6;15088:14;15072;15046:65;:::i;:::-;15035:76;;;;15158:9;15153:3;15149:19;15142:4;15131:9;15127:20;15120:49;15186:29;15211:3;15203:6;15186:29;:::i;:::-;15178:37;14329:892;-1:-1:-1;;;;;14329:892:75:o;15226:580::-;15303:4;15309:6;15369:11;15356:25;15459:66;15448:8;15432:14;15428:29;15424:102;15404:18;15400:127;15390:155;;15541:1;15538;15531:12;15390:155;15568:33;;15620:20;;;-1:-1:-1;15663:18:75;15652:30;;15649:50;;;15695:1;15692;15685:12;15649:50;15728:4;15716:17;;-1:-1:-1;15759:14:75;15755:27;;;15745:38;;15742:58;;;15796:1;15793;15786:12;15811:1317;15876:5;15929:3;15922:4;15914:6;15910:17;15906:27;15896:55;;15947:1;15944;15937:12;15896:55;15983:6;15970:20;16009:4;16033:73;16049:56;16102:2;16049:56;:::i;16033:73::-;16140:15;;;16226:1;16222:10;;;;16210:23;;16206:32;;;16171:12;;;;16250:15;;;16247:35;;;16278:1;16275;16268:12;16247:35;16314:2;16306:6;16302:15;16326:773;16342:6;16337:3;16334:15;16326:773;;;16420:4;16414:3;16409;16405:13;16401:24;16398:114;;;16466:1;16495:2;16491;16484:14;16398:114;16538:22;;:::i;:::-;16601:3;16588:17;16618:43;16653:7;16618:43;:::i;:::-;16674:22;;16745:12;;;16732:26;16716:14;;;16709:50;16782:2;16833:12;;;16820:26;16804:14;;;16797:50;16870:2;16913:12;;;16900:26;16939:43;16900:26;16939:43;:::i;:::-;17002:14;;;16995:31;17039:18;;17077:12;;;;16368:4;16359:14;16326:773;;;-1:-1:-1;17117:5:75;15811:1317;-1:-1:-1;;;;;;15811:1317:75:o;17133:1156::-;17229:6;17282:2;17270:9;17261:7;17257:23;17253:32;17250:52;;;17298:1;17295;17288:12;17250:52;17338:9;17325:23;17367:18;17408:2;17400:6;17397:14;17394:34;;;17424:1;17421;17414:12;17394:34;17447:22;;;;17503:6;17485:16;;;17481:29;17478:49;;;17523:1;17520;17513:12;17478:49;17549:22;;:::i;:::-;17609:2;17596:16;17637:2;17627:8;17624:16;17621:36;;;17653:1;17650;17643:12;17621:36;17680:55;17727:7;17716:8;17712:2;17708:17;17680:55;:::i;:::-;17673:5;17666:70;;17789:2;17785;17781:11;17768:25;17763:2;17756:5;17752:14;17745:49;17847:2;17843;17839:11;17826:25;17821:2;17814:5;17810:14;17803:49;17884:31;17911:2;17907;17903:11;17884:31;:::i;:::-;17879:2;17872:5;17868:14;17861:55;17970:3;17966:2;17962:12;17949:26;17943:3;17936:5;17932:15;17925:51;18009;18052:7;18046:3;18042:2;18038:12;18009:51;:::i;:::-;18003:3;17996:5;17992:15;17985:76;18107:3;18103:2;18099:12;18086:26;18137:2;18127:8;18124:16;18121:36;;;18153:1;18150;18143:12;18121:36;18191:67;18250:7;18239:8;18235:2;18231:17;18191:67;:::i;:::-;18184:4;18173:16;;18166:93;-1:-1:-1;18177:5:75;17133:1156;-1:-1:-1;;;;;17133:1156:75:o;18294:427::-;18379:6;18387;18440:2;18428:9;18419:7;18415:23;18411:32;18408:52;;;18456:1;18453;18446:12;18408:52;18488:9;18482:16;18507:41;18542:5;18507:41;:::i;:::-;18617:2;18602:18;;18596:25;18567:5;;-1:-1:-1;18665:4:75;18652:18;;18640:31;;18630:59;;18685:1;18682;18675:12;18726:184;18778:77;18775:1;18768:88;18875:4;18872:1;18865:15;18899:4;18896:1;18889:15;18915:184;18967:77;18964:1;18957:88;19064:4;19061:1;19054:15;19088:4;19085:1;19078:15;19104:195;19143:3;19174:66;19167:5;19164:77;19161:103;;19244:18;;:::i;:::-;-1:-1:-1;19291:1:75;19280:13;;19104:195::o;19304:2371::-;19431:6;19439;19470:2;19513;19501:9;19492:7;19488:23;19484:32;19481:52;;;19529:1;19526;19519:12;19481:52;19562:9;19556:16;19591:18;19632:2;19624:6;19621:14;19618:34;;;19648:1;19645;19638:12;19618:34;19686:6;19675:9;19671:22;19661:32;;19731:7;19724:4;19720:2;19716:13;19712:27;19702:55;;19753:1;19750;19743:12;19702:55;19782:2;19776:9;19804:4;19828:73;19844:56;19897:2;19844:56;:::i;19828:73::-;19935:15;;;20017:1;20013:10;;;;20005:19;;20001:28;;;19966:12;;;;20041:19;;;20038:39;;;20073:1;20070;20063:12;20038:39;20105:2;20101;20097:11;20117:1484;20133:6;20128:3;20125:15;20117:1484;;;20212:3;20206:10;20248:2;20235:11;20232:19;20229:109;;;20292:1;20321:2;20317;20310:14;20229:109;20361:20;;20405:16;;;20423:66;20401:89;20397:98;-1:-1:-1;20394:188:75;;;20536:1;20565:2;20561;20554:14;20394:188;20608:22;;:::i;:::-;20672:2;20668;20664:11;20658:18;20689:43;20724:7;20689:43;:::i;:::-;20745:22;;20802:11;;;20796:18;20830:16;;;20827:106;;;20887:1;20916:2;20912;20905:14;20827:106;20965:8;20961:2;20957:17;20946:28;;;21015:7;21010:2;21005:3;21001:12;20997:26;20987:127;;21066:1;21096:3;21091;21084:16;20987:127;21153:2;21148:3;21144:12;21138:19;21183:49;21199:32;21227:3;21199:32;:::i;21183:49::-;21259:3;21252:5;21245:18;21306:7;21301:2;21295:3;21290;21286:13;21282:22;21279:35;21276:128;;;21356:1;21386:3;21381;21374:16;21276:128;21417:69;21482:3;21477:2;21470:5;21466:14;21461:2;21456:3;21452:12;21417:69;:::i;:::-;21506:14;;;21499:29;-1:-1:-1;21541:18:75;;-1:-1:-1;21579:12:75;;;;20150;;20117:1484;;;-1:-1:-1;21650:18:75;;;;21644:25;21620:5;;21644:25;;-1:-1:-1;;;;;;;;19304:2371:75:o;21680:128::-;21747:9;;;21768:11;;;21765:37;;;21782:18;;:::i;21813:269::-;21891:6;21944:2;21932:9;21923:7;21919:23;21915:32;21912:52;;;21960:1;21957;21950:12;21912:52;21992:9;21986:16;22011:41;22046:5;22011:41;:::i;22562:168::-;22635:9;;;22666;;22683:15;;;22677:22;;22663:37;22653:71;;22704:18;;:::i;22735:274::-;22775:1;22801;22791:189;;22836:77;22833:1;22826:88;22937:4;22934:1;22927:15;22965:4;22962:1;22955:15;22791:189;-1:-1:-1;22994:9:75;;22735:274::o;23014:1130::-;23202:4;23231:2;23271;23260:9;23256:18;23301:2;23290:9;23283:21;23324:6;23359;23353:13;23390:6;23382;23375:22;23416:2;23406:12;;23449:2;23438:9;23434:18;23427:25;;23511:2;23501:6;23498:1;23494:14;23483:9;23479:30;23475:39;23549:2;23541:6;23537:15;23570:1;23580:535;23594:6;23591:1;23588:13;23580:535;;;23659:22;;;23683:66;23655:95;23643:108;;23774:13;;23819:9;;23830:42;23815:58;23800:74;;23913:11;;23907:18;23945:15;;;23938:27;;;23988:47;24019:15;;;23907:18;23988:47;:::i;:::-;24093:12;;;;23978:57;-1:-1:-1;;24058:15:75;;;;23616:1;23609:9;23580:535;;;-1:-1:-1;24132:6:75;;23014:1130;-1:-1:-1;;;;;;;;23014:1130:75:o;24149:125::-;24214:9;;;24235:10;;;24232:36;;;24248:18;;:::i;24581:184::-;24651:6;24704:2;24692:9;24683:7;24679:23;24675:32;24672:52;;;24720:1;24717;24710:12;24672:52;-1:-1:-1;24743:16:75;;24581:184;-1:-1:-1;24581:184:75:o;26097:287::-;26226:3;26264:6;26258:13;26280:66;26339:6;26334:3;26327:4;26319:6;26315:17;26280:66;:::i;:::-;26362:16;;;;;26097:287;-1:-1:-1;;26097:287:75:o;27581:219::-;27730:2;27719:9;27712:21;27693:4;27750:44;27790:2;27779:9;27775:18;27767:6;27750:44;:::i","linkReferences":{},"immutableReferences":{"52463":[{"start":359,"length":32},{"start":669,"length":32},{"start":1057,"length":32},{"start":2845,"length":32},{"start":2949,"length":32},{"start":3098,"length":32},{"start":3141,"length":32}],"52466":[{"start":146,"length":32},{"start":478,"length":32}]}},"methodIdentifiers":{"INVALID_ADDRESS()":"5963709b","VERSION()":"ffa1ad74","allowed()":"19e1fca4","execute((bytes,bytes),(address,bytes)[],uint256)":"489f9902","reactor()":"ab572650","reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)":"585da628","validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))":"6e84ba2b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IReactor\",\"name\":\"_reactor\",\"type\":\"address\"},{\"internalType\":\"contract IAllowed\",\"name\":\"_allowed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidOrder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ExtraOut\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"swapper\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ref\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"outToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"outAmount\",\"type\":\"uint256\"}],\"name\":\"Resolved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ref\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"swapper\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"refshare\",\"type\":\"uint256\"}],\"name\":\"Surplus\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"INVALID_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allowed\",\"outputs\":[{\"internalType\":\"contract IAllowed\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder\",\"name\":\"order\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"outAmountSwapper\",\"type\":\"uint256\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reactor\",\"outputs\":[{\"internalType\":\"contract IReactor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"contract IReactor\",\"name\":\"reactor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapper\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"contract IValidationCallback\",\"name\":\"additionalValidationContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"additionalValidationData\",\"type\":\"bytes\"}],\"internalType\":\"struct OrderInfo\",\"name\":\"info\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"contract ERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct InputToken\",\"name\":\"input\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct OutputToken[]\",\"name\":\"outputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"internalType\":\"struct ResolvedOrder[]\",\"name\":\"orders\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"callbackData\",\"type\":\"bytes\"}],\"name\":\"reactorCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"filler\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"contract IReactor\",\"name\":\"reactor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapper\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"contract IValidationCallback\",\"name\":\"additionalValidationContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"additionalValidationData\",\"type\":\"bytes\"}],\"internalType\":\"struct OrderInfo\",\"name\":\"info\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"contract ERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct InputToken\",\"name\":\"input\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct OutputToken[]\",\"name\":\"outputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"internalType\":\"struct ResolvedOrder\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"validate\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)\":{\"details\":\"IReactorCallback\"},\"validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))\":{\"details\":\"IValidationCallback\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"execute((bytes,bytes),(address,bytes)[],uint256)\":{\"notice\":\"Entry point\"}},\"notice\":\"LiquidityHub Executor\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LiquidityHub.sol\":\"LiquidityHub\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":UniswapX/=lib/UniswapX/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/UniswapX/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":permit2/=lib/UniswapX/lib/permit2/\",\":solmate/=lib/solmate/\",\":uniswapx/=lib/UniswapX/\"]},\"sources\":{\"lib/UniswapX/src/base/ReactorStructs.sol\":{\"keccak256\":\"0x78e6db322ca69aaf552e59d5e74a00fd465a802388c2d03f9bf4b711f5704588\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://12d8fc82c3543bfe0d2cd44cdbc524bed1f074abafe086f7e58573cbaff2a74e\",\"dweb:/ipfs/QmREbamTn3nz89nEjv2uWHNHKSF6Yga2gQ688Cde89xcNT\"]},\"lib/UniswapX/src/interfaces/IReactor.sol\":{\"keccak256\":\"0x50bbe3534eedf1ebb75b164c38fa63135ef53f7239a2c268008375025eb1f101\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0061477bbe13910c973b3760c061fd68836ecbe7e4c1b1d704bcaf38c669f9b0\",\"dweb:/ipfs/QmNhehD2Uw7uuCFTmgcE134kMmioRzVk9GUFWmBqLD9whX\"]},\"lib/UniswapX/src/interfaces/IReactorCallback.sol\":{\"keccak256\":\"0xf3ee1fe09545fc5be000c33bb6779e897b4e5013bd9de3e7c3107bf466b4dfa1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://12d7fd1ac3dca76614796f0d012ea4de79bf09cf124cc74efffdf25a56756344\",\"dweb:/ipfs/QmXyeSrG7caihgzUZdPdPbbRj6v1w65gBnfn9a7HhbVJX9\"]},\"lib/UniswapX/src/interfaces/IValidationCallback.sol\":{\"keccak256\":\"0xe68fc4f5a2a5029e7f1881d01f5434acbcf0fef2e7ae1945593e01f5414a841e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b53ec74b51802cf75aa32c619da5ce7571ff22d305cb599ac3029ef840319d5b\",\"dweb:/ipfs/QmZjiFHQxv9BqMPSk2u4nF9hrwgmPCW3x5TUaXcK1J2bwj\"]},\"lib/UniswapX/src/lib/DutchOrderLib.sol\":{\"keccak256\":\"0xdd6b9bffcc044899fac52e1e9cbe4becc7a40b56d912695e80600224367235e6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://78c08ec074bc21ce610f2e0c3594b383e0cd2301c32239146a771e2e5d2cb975\",\"dweb:/ipfs/QmbMQwT9k3RWyTdihqqnu3RDiRCz1XmpMUVwxeyWzChKB5\"]},\"lib/UniswapX/src/lib/ExclusiveDutchOrderLib.sol\":{\"keccak256\":\"0x3e21caa4af8c032280b5d84a2e673f7d0a7c9b42758c52fef7e669282c445f20\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3cf71f86364d42acb5a3c24c8f21f400975dbd32c19fa3c56ee17dfbb8c9ffb0\",\"dweb:/ipfs/QmURuzWqzfBToKj9u28xXYT4bTHNhNBWJfaj8j8M1jZUx8\"]},\"lib/UniswapX/src/lib/OrderInfoLib.sol\":{\"keccak256\":\"0x38672b528e63dc53f36ed82d0037110a9f5893ad0a3957e24f19fa3fdbd80015\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://147172dbebf4bb579bc392f25666645719264c0b47378f7fc4f3a95c79bdf5a4\",\"dweb:/ipfs/Qmd5wVnQ8rKHHQgUQzEDcAPiqrVzmNr9t2D7d1SqUg9hTo\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xec63854014a5b4f2b3290ab9103a21bdf902a508d0f41a8573fea49e98bf571a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc5b5dc12fbc4002f282eaa7a5f06d8310ed62c1c77c5770f6283e058454c39a\",\"dweb:/ipfs/Qme9rE2wS3yBuyJq9GgbmzbsBQsW2M2sVFqYYLw7bosGrv\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68\",\"dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"src/Consts.sol\":{\"keccak256\":\"0xae7872274e886cfca77692258434969ffe3e5588bd8e25cba42641a33dac785a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e133848b0f5e0c18ba2d6147368765ea7c0e4600dbcc44596e96e35c2147278\",\"dweb:/ipfs/Qmb3hj6hjT1SyeKVwjEonNtwUdkkXwNnSNfkyNenHovLDQ\"]},\"src/LiquidityHub.sol\":{\"keccak256\":\"0x718ecab2f0de63752f24e4ca2b84786ca95b066f1b37445f6cf295e8f185bf00\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://acee253daa5564a6175be347258d509b65422f1163ae3b452c1131a9636b671a\",\"dweb:/ipfs/Qmey4z5k1LusDcDs8d5cynDCjZMPnesTkE8ZGAn2vVSoew\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IReactor","name":"_reactor","type":"address"},{"internalType":"contract IAllowed","name":"_allowed","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"InvalidOrder"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"InvalidSender"},{"inputs":[{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"ExtraOut","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32","indexed":true},{"internalType":"address","name":"swapper","type":"address","indexed":true},{"internalType":"address","name":"ref","type":"address","indexed":true},{"internalType":"address","name":"inToken","type":"address","indexed":false},{"internalType":"address","name":"outToken","type":"address","indexed":false},{"internalType":"uint256","name":"inAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"outAmount","type":"uint256","indexed":false}],"type":"event","name":"Resolved","anonymous":false},{"inputs":[{"internalType":"address","name":"ref","type":"address","indexed":true},{"internalType":"address","name":"swapper","type":"address","indexed":false},{"internalType":"address","name":"token","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"refshare","type":"uint256","indexed":false}],"type":"event","name":"Surplus","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"INVALID_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VERSION","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"allowed","outputs":[{"internalType":"contract IAllowed","name":"","type":"address"}]},{"inputs":[{"internalType":"struct SignedOrder","name":"order","type":"tuple","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]},{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]},{"internalType":"uint256","name":"outAmountSwapper","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"execute"},{"inputs":[],"stateMutability":"view","type":"function","name":"reactor","outputs":[{"internalType":"contract IReactor","name":"","type":"address"}]},{"inputs":[{"internalType":"struct ResolvedOrder[]","name":"orders","type":"tuple[]","components":[{"internalType":"struct OrderInfo","name":"info","type":"tuple","components":[{"internalType":"contract IReactor","name":"reactor","type":"address"},{"internalType":"address","name":"swapper","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"contract IValidationCallback","name":"additionalValidationContract","type":"address"},{"internalType":"bytes","name":"additionalValidationData","type":"bytes"}]},{"internalType":"struct InputToken","name":"input","type":"tuple","components":[{"internalType":"contract ERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"maxAmount","type":"uint256"}]},{"internalType":"struct OutputToken[]","name":"outputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}]},{"internalType":"bytes","name":"sig","type":"bytes"},{"internalType":"bytes32","name":"hash","type":"bytes32"}]},{"internalType":"bytes","name":"callbackData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"reactorCallback"},{"inputs":[{"internalType":"address","name":"filler","type":"address"},{"internalType":"struct ResolvedOrder","name":"","type":"tuple","components":[{"internalType":"struct OrderInfo","name":"info","type":"tuple","components":[{"internalType":"contract IReactor","name":"reactor","type":"address"},{"internalType":"address","name":"swapper","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"contract IValidationCallback","name":"additionalValidationContract","type":"address"},{"internalType":"bytes","name":"additionalValidationData","type":"bytes"}]},{"internalType":"struct InputToken","name":"input","type":"tuple","components":[{"internalType":"contract ERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"maxAmount","type":"uint256"}]},{"internalType":"struct OutputToken[]","name":"outputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}]},{"internalType":"bytes","name":"sig","type":"bytes"},{"internalType":"bytes32","name":"hash","type":"bytes32"}]}],"stateMutability":"view","type":"function","name":"validate"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)":{"details":"IReactorCallback"},"validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))":{"details":"IValidationCallback"}},"version":1},"userdoc":{"kind":"user","methods":{"execute((bytes,bytes),(address,bytes)[],uint256)":{"notice":"Entry point"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","UniswapX/=lib/UniswapX/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/UniswapX/lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","permit2/=lib/UniswapX/lib/permit2/","solmate/=lib/solmate/","uniswapx/=lib/UniswapX/"],"optimizer":{"enabled":true,"runs":1000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/LiquidityHub.sol":"LiquidityHub"},"evmVersion":"paris","libraries":{}},"sources":{"lib/UniswapX/src/base/ReactorStructs.sol":{"keccak256":"0x78e6db322ca69aaf552e59d5e74a00fd465a802388c2d03f9bf4b711f5704588","urls":["bzz-raw://12d8fc82c3543bfe0d2cd44cdbc524bed1f074abafe086f7e58573cbaff2a74e","dweb:/ipfs/QmREbamTn3nz89nEjv2uWHNHKSF6Yga2gQ688Cde89xcNT"],"license":"GPL-2.0-or-later"},"lib/UniswapX/src/interfaces/IReactor.sol":{"keccak256":"0x50bbe3534eedf1ebb75b164c38fa63135ef53f7239a2c268008375025eb1f101","urls":["bzz-raw://0061477bbe13910c973b3760c061fd68836ecbe7e4c1b1d704bcaf38c669f9b0","dweb:/ipfs/QmNhehD2Uw7uuCFTmgcE134kMmioRzVk9GUFWmBqLD9whX"],"license":"GPL-2.0-or-later"},"lib/UniswapX/src/interfaces/IReactorCallback.sol":{"keccak256":"0xf3ee1fe09545fc5be000c33bb6779e897b4e5013bd9de3e7c3107bf466b4dfa1","urls":["bzz-raw://12d7fd1ac3dca76614796f0d012ea4de79bf09cf124cc74efffdf25a56756344","dweb:/ipfs/QmXyeSrG7caihgzUZdPdPbbRj6v1w65gBnfn9a7HhbVJX9"],"license":"GPL-2.0-or-later"},"lib/UniswapX/src/interfaces/IValidationCallback.sol":{"keccak256":"0xe68fc4f5a2a5029e7f1881d01f5434acbcf0fef2e7ae1945593e01f5414a841e","urls":["bzz-raw://b53ec74b51802cf75aa32c619da5ce7571ff22d305cb599ac3029ef840319d5b","dweb:/ipfs/QmZjiFHQxv9BqMPSk2u4nF9hrwgmPCW3x5TUaXcK1J2bwj"],"license":"GPL-2.0-or-later"},"lib/UniswapX/src/lib/DutchOrderLib.sol":{"keccak256":"0xdd6b9bffcc044899fac52e1e9cbe4becc7a40b56d912695e80600224367235e6","urls":["bzz-raw://78c08ec074bc21ce610f2e0c3594b383e0cd2301c32239146a771e2e5d2cb975","dweb:/ipfs/QmbMQwT9k3RWyTdihqqnu3RDiRCz1XmpMUVwxeyWzChKB5"],"license":"GPL-2.0-or-later"},"lib/UniswapX/src/lib/ExclusiveDutchOrderLib.sol":{"keccak256":"0x3e21caa4af8c032280b5d84a2e673f7d0a7c9b42758c52fef7e669282c445f20","urls":["bzz-raw://3cf71f86364d42acb5a3c24c8f21f400975dbd32c19fa3c56ee17dfbb8c9ffb0","dweb:/ipfs/QmURuzWqzfBToKj9u28xXYT4bTHNhNBWJfaj8j8M1jZUx8"],"license":"GPL-2.0-or-later"},"lib/UniswapX/src/lib/OrderInfoLib.sol":{"keccak256":"0x38672b528e63dc53f36ed82d0037110a9f5893ad0a3957e24f19fa3fdbd80015","urls":["bzz-raw://147172dbebf4bb579bc392f25666645719264c0b47378f7fc4f3a95c79bdf5a4","dweb:/ipfs/Qmd5wVnQ8rKHHQgUQzEDcAPiqrVzmNr9t2D7d1SqUg9hTo"],"license":"GPL-2.0-or-later"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0xec63854014a5b4f2b3290ab9103a21bdf902a508d0f41a8573fea49e98bf571a","urls":["bzz-raw://bc5b5dc12fbc4002f282eaa7a5f06d8310ed62c1c77c5770f6283e058454c39a","dweb:/ipfs/Qme9rE2wS3yBuyJq9GgbmzbsBQsW2M2sVFqYYLw7bosGrv"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1","urls":["bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68","dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa","urls":["bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931","dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm"],"license":"MIT"},"lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"],"license":"AGPL-3.0-only"},"src/Consts.sol":{"keccak256":"0xae7872274e886cfca77692258434969ffe3e5588bd8e25cba42641a33dac785a","urls":["bzz-raw://2e133848b0f5e0c18ba2d6147368765ea7c0e4600dbcc44596e96e35c2147278","dweb:/ipfs/Qmb3hj6hjT1SyeKVwjEonNtwUdkkXwNnSNfkyNenHovLDQ"],"license":"MIT"},"src/LiquidityHub.sol":{"keccak256":"0x718ecab2f0de63752f24e4ca2b84786ca95b066f1b37445f6cf295e8f185bf00","urls":["bzz-raw://acee253daa5564a6175be347258d509b65422f1163ae3b452c1131a9636b671a","dweb:/ipfs/Qmey4z5k1LusDcDs8d5cynDCjZMPnesTkE8ZGAn2vVSoew"],"license":"MIT"}},"version":1},"id":68} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"_reactor","type":"address","internalType":"contract IReactor"},{"name":"_allowed","type":"address","internalType":"contract IAllowed"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"INVALID_ADDRESS","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"VERSION","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"allowed","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IAllowed"}],"stateMutability":"view"},{"type":"function","name":"execute","inputs":[{"name":"order","type":"tuple","internalType":"struct SignedOrder","components":[{"name":"order","type":"bytes","internalType":"bytes"},{"name":"sig","type":"bytes","internalType":"bytes"}]},{"name":"calls","type":"tuple[]","internalType":"struct IMulticall3.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"callData","type":"bytes","internalType":"bytes"}]},{"name":"outAmountSwapper","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reactor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IReactor"}],"stateMutability":"view"},{"type":"function","name":"reactorCallback","inputs":[{"name":"orders","type":"tuple[]","internalType":"struct ResolvedOrder[]","components":[{"name":"info","type":"tuple","internalType":"struct OrderInfo","components":[{"name":"reactor","type":"address","internalType":"contract IReactor"},{"name":"swapper","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"additionalValidationContract","type":"address","internalType":"contract IValidationCallback"},{"name":"additionalValidationData","type":"bytes","internalType":"bytes"}]},{"name":"input","type":"tuple","internalType":"struct InputToken","components":[{"name":"token","type":"address","internalType":"contract ERC20"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"maxAmount","type":"uint256","internalType":"uint256"}]},{"name":"outputs","type":"tuple[]","internalType":"struct OutputToken[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"recipient","type":"address","internalType":"address"}]},{"name":"sig","type":"bytes","internalType":"bytes"},{"name":"hash","type":"bytes32","internalType":"bytes32"}]},{"name":"callbackData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validate","inputs":[{"name":"filler","type":"address","internalType":"address"},{"name":"","type":"tuple","internalType":"struct ResolvedOrder","components":[{"name":"info","type":"tuple","internalType":"struct OrderInfo","components":[{"name":"reactor","type":"address","internalType":"contract IReactor"},{"name":"swapper","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"additionalValidationContract","type":"address","internalType":"contract IValidationCallback"},{"name":"additionalValidationData","type":"bytes","internalType":"bytes"}]},{"name":"input","type":"tuple","internalType":"struct InputToken","components":[{"name":"token","type":"address","internalType":"contract ERC20"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"maxAmount","type":"uint256","internalType":"uint256"}]},{"name":"outputs","type":"tuple[]","internalType":"struct OutputToken[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"recipient","type":"address","internalType":"address"}]},{"name":"sig","type":"bytes","internalType":"bytes"},{"name":"hash","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"view"},{"type":"event","name":"ExtraOut","inputs":[{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Resolved","inputs":[{"name":"orderHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"swapper","type":"address","indexed":true,"internalType":"address"},{"name":"ref","type":"address","indexed":true,"internalType":"address"},{"name":"inToken","type":"address","indexed":false,"internalType":"address"},{"name":"outToken","type":"address","indexed":false,"internalType":"address"},{"name":"inAmount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"outAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Surplus","inputs":[{"name":"ref","type":"address","indexed":true,"internalType":"address"},{"name":"swapper","type":"address","indexed":false,"internalType":"address"},{"name":"token","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"refshare","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"InvalidOrder","inputs":[]},{"type":"error","name":"InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x60c06040523480156200001157600080fd5b50604051620023eb380380620023eb833981016040819052620000349162000065565b6001600160a01b039182166080521660a052620000a4565b6001600160a01b03811681146200006257600080fd5b50565b600080604083850312156200007957600080fd5b825162000086816200004c565b602084015190925062000099816200004c565b809150509250929050565b60805160a0516122f1620000fa60003960008181609201526101de0152600081816101670152818161029d0152818161042101528181610b1d01528181610b8501528181610c1a0152610c4501526122f16000f3fe6080604052600436106100745760003560e01c80635963709b1161004e5780635963709b146101205780636e84ba2b14610135578063ab57265014610155578063ffa1ad741461018957600080fd5b806319e1fca414610080578063489f9902146100de578063585da6281461010057600080fd5b3661007b57005b600080fd5b34801561008c57600080fd5b506100b47f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100ea57600080fd5b506100fe6100f93660046113e4565b6101b0565b005b34801561010c57600080fd5b506100fe61011b366004611859565b610409565b34801561012c57600080fd5b506100b4600181565b34801561014157600080fd5b506100fe6101503660046119e6565b610598565b34801561016157600080fd5b506100b47f000000000000000000000000000000000000000000000000000000000000000081565b34801561019557600080fd5b5061019e600681565b60405160ff90911681526020016100d5565b6040517fd63a8e110000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d63a8e1190602401602060405180830381865afa15801561023a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025e9190611a3d565b61029b576040517f4c14f64c0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d335884858585856040516020016102ed93929190611b1a565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610319929190611c7a565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b506000925061035a915086905080611d02565b8101906103679190611e17565b9050600080826000015160a001518060200190518101906103889190611eeb565b915091506103a8828460000151602001518560a001516000015184610603565b60005b8360c00151518110156103ff576103ed838560000151602001518660c0015184815181106103db576103db611f20565b60200260200101516000015185610603565b806103f781611f7e565b9150506103ab565b5050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461047a576040517f4c14f64c000000000000000000000000000000000000000000000000000000008152336004820152602401610292565b60008260008151811061048f5761048f611f20565b60200260200101519050600080838060200190518101906104b09190611fb6565b915091506104bd826106eb565b6000806104c98561079e565b91509150808311156104f0578451602001516104f09083906104eb848761210f565b6109b8565b6000856000015160a0015180602001905181019061050e9190612122565b86516020908101516080808a0151838b01518051908501516040805173ffffffffffffffffffffffffffffffffffffffff93841681528b8416978101979097528601526060850188905294955085851694909216927f848cc5ed1484f306a3369f20f8d5c1c291e44ddd16dd5f14c106effc790dc11f910160405180910390a45050505050505050565b73ffffffffffffffffffffffffffffffffffffffff821630146105ff576040517f4c14f64c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610292565b5050565b600061060f8330610a03565b90508060000361061f57506106e5565b600073ffffffffffffffffffffffffffffffffffffffff861661064357600061065c565b606461065260ff85168461213f565b61065c9190612156565b9050801561066f5761066f8487836109b8565b61067e84866104eb848661210f565b6040805173ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015291810184905260608101839052908716907fdcbeb523eb476416bee3486d82b37ae932021e9e9822c32c1ae986f97d2685df9060800160405180910390a250505b50505050565b6105ff73ca11bde05977b3631167028862be2a173976ca1163252dba4260e01b8360405160240161071c9190612191565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610ad8565b60016000805b8360400151518110156109b2576000846040015182815181106107c9576107c9611f20565b6020026020010151602001519050600081111561099f576000856040015183815181106107f8576107f8611f20565b60200260200101516000015190506108108183610afd565b85600001516020015173ffffffffffffffffffffffffffffffffffffffff168660400151848151811061084557610845611f20565b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff160361090a5773ffffffffffffffffffffffffffffffffffffffff85166001148015906108bf57508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156108f6576040517faf61069300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9350836109038285612239565b935061099d565b8560400151838151811061092057610920611f20565b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff167fccfa7da1b610c73a66316e176cd35aadc378051b68b1c29ded1b2d36418728ed828460405161099492919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60405180910390a25b505b50806109aa81611f7e565b9150506107a4565b50915091565b73ffffffffffffffffffffffffffffffffffffffff83166109e2576109dd8282610c8c565b505050565b6109dd73ffffffffffffffffffffffffffffffffffffffff84168383610de6565b600073ffffffffffffffffffffffffffffffffffffffff831615610ab6576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906370a0823190602401602060405180830381865afa158015610a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab1919061224c565b610acf565b8173ffffffffffffffffffffffffffffffffffffffff16315b90505b92915050565b6060610acf838360405180606001604052806027815260200161229560279139610eba565b73ffffffffffffffffffffffffffffffffffffffff8216610b42576105ff7f000000000000000000000000000000000000000000000000000000000000000082610c8c565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660248301526000919084169063dd62ed3e90604401602060405180830381865afa158015610bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfc919061224c565b9050610c4073ffffffffffffffffffffffffffffffffffffffff84167f00000000000000000000000000000000000000000000000000000000000000006000610f3f565b6109dd7f0000000000000000000000000000000000000000000000000000000000000000610c6e8484612239565b73ffffffffffffffffffffffffffffffffffffffff86169190610f3f565b80471015610cf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610292565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610d50576040519150601f19603f3d011682016040523d82523d6000602084013e610d55565b606091505b50509050806109dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610292565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109dd9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526110c1565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610ee49190612265565b600060405180830381855af49150503d8060008114610f1f576040519150601f19603f3d011682016040523d82523d6000602084013e610f24565b606091505b5091509150610f35868383876111d0565b9695505050505050565b801580610fdf57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015610fb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdd919061224c565b155b61106b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610292565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109dd9084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401610e38565b6000611123826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166112789092919063ffffffff16565b90508051600014806111445750808060200190518101906111449190611a3d565b6109dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610292565b6060831561126657825160000361125f5773ffffffffffffffffffffffffffffffffffffffff85163b61125f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610292565b5081611270565b6112708383611287565b949350505050565b606061127084846000856112cb565b8151156112975781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102929190612281565b60608247101561135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610292565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516113869190612265565b60006040518083038185875af1925050503d80600081146113c3576040519150601f19603f3d011682016040523d82523d6000602084013e6113c8565b606091505b50915091506113d9878383876111d0565b979650505050505050565b600080600080606085870312156113fa57600080fd5b843567ffffffffffffffff8082111561141257600080fd5b908601906040828903121561142657600080fd5b9094506020860135908082111561143c57600080fd5b818701915087601f83011261145057600080fd5b81358181111561145f57600080fd5b8860208260051b850101111561147457600080fd5b95986020929092019750949560400135945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156114de576114de61148c565b60405290565b60405160a0810167ffffffffffffffff811182821017156114de576114de61148c565b6040516080810167ffffffffffffffff811182821017156114de576114de61148c565b60405160e0810167ffffffffffffffff811182821017156114de576114de61148c565b6040805190810167ffffffffffffffff811182821017156114de576114de61148c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156115b7576115b761148c565b604052919050565b600067ffffffffffffffff8211156115d9576115d961148c565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461160557600080fd5b50565b8035611613816115e3565b919050565b600067ffffffffffffffff8211156116325761163261148c565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261166f57600080fd5b813561168261167d82611618565b611570565b81815284602083860101111561169757600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156116c657600080fd5b60405160c0810167ffffffffffffffff82821081831117156116ea576116ea61148c565b81604052829350843591506116fe826115e3565b908252602084013590611710826115e3565b81602084015260408501356040840152606085013560608401526080850135915061173a826115e3565b81608084015260a085013591508082111561175457600080fd5b506117618582860161165e565b60a0830152505092915050565b60006060828403121561178057600080fd5b6117886114bb565b90508135611795816115e3565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126117c457600080fd5b813560206117d461167d836115bf565b828152606092830285018201928282019190878511156117f357600080fd5b8387015b8581101561184c5781818a03121561180f5760008081fd5b6118176114bb565b8135611822816115e3565b8152818601358682015260408083013561183b816115e3565b9082015284529284019281016117f7565b5090979650505050505050565b6000806040838503121561186c57600080fd5b823567ffffffffffffffff8082111561188457600080fd5b818501915085601f83011261189857600080fd5b813560206118a861167d836115bf565b82815260059290921b840181019181810190898411156118c757600080fd5b8286015b848110156119b8578035868111156118e35760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156119195760008081fd5b6119216114e4565b86830135898111156119335760008081fd5b6119418f89838701016116b4565b8252506119518e6040850161176e565b8782015260a0830135898111156119685760008081fd5b6119768f89838701016117b3565b60408301525060c08301358981111561198f5760008081fd5b61199d8f898387010161165e565b606083015250910135608082015283529183019183016118cb565b50965050860135925050808211156119cf57600080fd5b506119dc8582860161165e565b9150509250929050565b600080604083850312156119f957600080fd5b8235611a04816115e3565b9150602083013567ffffffffffffffff811115611a2057600080fd5b830160e08186031215611a3257600080fd5b809150509250929050565b600060208284031215611a4f57600080fd5b81518015158114611a5f57600080fd5b9392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611a9b57600080fd5b830160208101925035905067ffffffffffffffff811115611abb57600080fd5b803603821315611aca57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60408082528181018490526000906060600586901b840181019084018784805b89811015611bf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c3603018112611b9a578283fd5b8b018035611ba7816115e3565b73ffffffffffffffffffffffffffffffffffffffff1686526020611bcd82820183611a66565b92508882890152611be18989018483611ad1565b97505094850194939093019250600101611b3a565b5050505060209390930193909352509392505050565b60005b83811015611c27578181015183820152602001611c0f565b50506000910152565b60008151808452611c48816020860160208601611c0c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b604081526000611c8a8485611a66565b604080850152611c9e608085018284611ad1565b915050611cae6020860186611a66565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0858403016060860152611ce3838284611ad1565b925050508281036020840152611cf98185611c30565b95945050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611d3757600080fd5b83018035915067ffffffffffffffff821115611d5257600080fd5b602001915036819003821315611aca57600080fd5b600082601f830112611d7857600080fd5b81356020611d8861167d836115bf565b82815260079290921b84018101918181019086841115611da757600080fd5b8286015b84811015611e0c5760808189031215611dc45760008081fd5b611dcc611507565b8135611dd7816115e3565b8152818501358582015260408083013590820152606080830135611dfa816115e3565b90820152835291830191608001611dab565b509695505050505050565b600060208284031215611e2957600080fd5b813567ffffffffffffffff80821115611e4157600080fd5b908301906101208286031215611e5657600080fd5b611e5e61152a565b823582811115611e6d57600080fd5b611e79878286016116b4565b8252506020830135602082015260408301356040820152611e9c60608401611608565b606082015260808301356080820152611eb88660a0850161176e565b60a082015261010083013582811115611ed057600080fd5b611edc87828601611d67565b60c08301525095945050505050565b60008060408385031215611efe57600080fd5b8251611f09816115e3565b602084015190925060ff81168114611a3257600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611faf57611faf611f4f565b5060010190565b6000806040808486031215611fca57600080fd5b835167ffffffffffffffff80821115611fe257600080fd5b818601915086601f830112611ff657600080fd5b8151602061200661167d836115bf565b82815260059290921b8401810191818101908a84111561202557600080fd5b8286015b848110156120fb578051868111156120415760008081fd5b8701808d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018913156120755760008081fd5b61207d61154d565b8582015161208a816115e3565b8152818a01518881111561209e5760008081fd5b8083019250508d603f8301126120b45760008081fd5b858201516120c461167d82611618565b8181528f8c8386010111156120d95760008081fd5b6120e8828983018e8701611c0c565b8288015250845250918301918301612029565b509890910151979997985050505050505050565b81810381811115610ad257610ad2611f4f565b60006020828403121561213457600080fd5b8151611a5f816115e3565b8082028115828204841417610ad257610ad2611f4f565b60008261218c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561222b578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff16845287015187840187905261221887850182611c30565b95880195935050908601906001016121b8565b509098975050505050505050565b80820180821115610ad257610ad2611f4f565b60006020828403121561225e57600080fd5b5051919050565b60008251612277818460208701611c0c565b9190910192915050565b602081526000610acf6020830184611c3056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122002b1a9237ec859b48a4b914b165b9a062696aa305c06c4645c0727ecc472983264736f6c63430008130033","sourceMap":"743:5198:74:-:0;;;1504:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1564:18:74;;;;;1592;;;743:5198;;14:141:90;-1:-1:-1;;;;;99:31:90;;89:42;;79:70;;145:1;142;135:12;79:70;14:141;:::o;160:439::-;273:6;281;334:2;322:9;313:7;309:23;305:32;302:52;;;350:1;347;340:12;302:52;382:9;376:16;401:41;436:5;401:41;:::i;:::-;511:2;496:18;;490:25;461:5;;-1:-1:-1;524:43:90;490:25;524:43;:::i;:::-;586:7;576:17;;;160:439;;;;;:::o;:::-;743:5198:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106100745760003560e01c80635963709b1161004e5780635963709b146101205780636e84ba2b14610135578063ab57265014610155578063ffa1ad741461018957600080fd5b806319e1fca414610080578063489f9902146100de578063585da6281461010057600080fd5b3661007b57005b600080fd5b34801561008c57600080fd5b506100b47f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b3480156100ea57600080fd5b506100fe6100f93660046113e4565b6101b0565b005b34801561010c57600080fd5b506100fe61011b366004611859565b610409565b34801561012c57600080fd5b506100b4600181565b34801561014157600080fd5b506100fe6101503660046119e6565b610598565b34801561016157600080fd5b506100b47f000000000000000000000000000000000000000000000000000000000000000081565b34801561019557600080fd5b5061019e600681565b60405160ff90911681526020016100d5565b6040517fd63a8e110000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d63a8e1190602401602060405180830381865afa15801561023a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025e9190611a3d565b61029b576040517f4c14f64c0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630d335884858585856040516020016102ed93929190611b1a565b6040516020818303038152906040526040518363ffffffff1660e01b8152600401610319929190611c7a565b600060405180830381600087803b15801561033357600080fd5b505af1158015610347573d6000803e3d6000fd5b506000925061035a915086905080611d02565b8101906103679190611e17565b9050600080826000015160a001518060200190518101906103889190611eeb565b915091506103a8828460000151602001518560a001516000015184610603565b60005b8360c00151518110156103ff576103ed838560000151602001518660c0015184815181106103db576103db611f20565b60200260200101516000015185610603565b806103f781611f7e565b9150506103ab565b5050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461047a576040517f4c14f64c000000000000000000000000000000000000000000000000000000008152336004820152602401610292565b60008260008151811061048f5761048f611f20565b60200260200101519050600080838060200190518101906104b09190611fb6565b915091506104bd826106eb565b6000806104c98561079e565b91509150808311156104f0578451602001516104f09083906104eb848761210f565b6109b8565b6000856000015160a0015180602001905181019061050e9190612122565b86516020908101516080808a0151838b01518051908501516040805173ffffffffffffffffffffffffffffffffffffffff93841681528b8416978101979097528601526060850188905294955085851694909216927f848cc5ed1484f306a3369f20f8d5c1c291e44ddd16dd5f14c106effc790dc11f910160405180910390a45050505050505050565b73ffffffffffffffffffffffffffffffffffffffff821630146105ff576040517f4c14f64c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610292565b5050565b600061060f8330610a03565b90508060000361061f57506106e5565b600073ffffffffffffffffffffffffffffffffffffffff861661064357600061065c565b606461065260ff85168461213f565b61065c9190612156565b9050801561066f5761066f8487836109b8565b61067e84866104eb848661210f565b6040805173ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015291810184905260608101839052908716907fdcbeb523eb476416bee3486d82b37ae932021e9e9822c32c1ae986f97d2685df9060800160405180910390a250505b50505050565b6105ff73ca11bde05977b3631167028862be2a173976ca1163252dba4260e01b8360405160240161071c9190612191565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610ad8565b60016000805b8360400151518110156109b2576000846040015182815181106107c9576107c9611f20565b6020026020010151602001519050600081111561099f576000856040015183815181106107f8576107f8611f20565b60200260200101516000015190506108108183610afd565b85600001516020015173ffffffffffffffffffffffffffffffffffffffff168660400151848151811061084557610845611f20565b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff160361090a5773ffffffffffffffffffffffffffffffffffffffff85166001148015906108bf57508073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156108f6576040517faf61069300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9350836109038285612239565b935061099d565b8560400151838151811061092057610920611f20565b60200260200101516040015173ffffffffffffffffffffffffffffffffffffffff167fccfa7da1b610c73a66316e176cd35aadc378051b68b1c29ded1b2d36418728ed828460405161099492919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60405180910390a25b505b50806109aa81611f7e565b9150506107a4565b50915091565b73ffffffffffffffffffffffffffffffffffffffff83166109e2576109dd8282610c8c565b505050565b6109dd73ffffffffffffffffffffffffffffffffffffffff84168383610de6565b600073ffffffffffffffffffffffffffffffffffffffff831615610ab6576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301528416906370a0823190602401602060405180830381865afa158015610a8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab1919061224c565b610acf565b8173ffffffffffffffffffffffffffffffffffffffff16315b90505b92915050565b6060610acf838360405180606001604052806027815260200161229560279139610eba565b73ffffffffffffffffffffffffffffffffffffffff8216610b42576105ff7f000000000000000000000000000000000000000000000000000000000000000082610c8c565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660248301526000919084169063dd62ed3e90604401602060405180830381865afa158015610bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfc919061224c565b9050610c4073ffffffffffffffffffffffffffffffffffffffff84167f00000000000000000000000000000000000000000000000000000000000000006000610f3f565b6109dd7f0000000000000000000000000000000000000000000000000000000000000000610c6e8484612239565b73ffffffffffffffffffffffffffffffffffffffff86169190610f3f565b80471015610cf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610292565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114610d50576040519150601f19603f3d011682016040523d82523d6000602084013e610d55565b606091505b50509050806109dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610292565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109dd9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526110c1565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610ee49190612265565b600060405180830381855af49150503d8060008114610f1f576040519150601f19603f3d011682016040523d82523d6000602084013e610f24565b606091505b5091509150610f35868383876111d0565b9695505050505050565b801580610fdf57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015610fb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdd919061224c565b155b61106b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610292565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109dd9084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401610e38565b6000611123826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166112789092919063ffffffff16565b90508051600014806111445750808060200190518101906111449190611a3d565b6109dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610292565b6060831561126657825160000361125f5773ffffffffffffffffffffffffffffffffffffffff85163b61125f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610292565b5081611270565b6112708383611287565b949350505050565b606061127084846000856112cb565b8151156112975781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102929190612281565b60608247101561135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610292565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516113869190612265565b60006040518083038185875af1925050503d80600081146113c3576040519150601f19603f3d011682016040523d82523d6000602084013e6113c8565b606091505b50915091506113d9878383876111d0565b979650505050505050565b600080600080606085870312156113fa57600080fd5b843567ffffffffffffffff8082111561141257600080fd5b908601906040828903121561142657600080fd5b9094506020860135908082111561143c57600080fd5b818701915087601f83011261145057600080fd5b81358181111561145f57600080fd5b8860208260051b850101111561147457600080fd5b95986020929092019750949560400135945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156114de576114de61148c565b60405290565b60405160a0810167ffffffffffffffff811182821017156114de576114de61148c565b6040516080810167ffffffffffffffff811182821017156114de576114de61148c565b60405160e0810167ffffffffffffffff811182821017156114de576114de61148c565b6040805190810167ffffffffffffffff811182821017156114de576114de61148c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156115b7576115b761148c565b604052919050565b600067ffffffffffffffff8211156115d9576115d961148c565b5060051b60200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461160557600080fd5b50565b8035611613816115e3565b919050565b600067ffffffffffffffff8211156116325761163261148c565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261166f57600080fd5b813561168261167d82611618565b611570565b81815284602083860101111561169757600080fd5b816020850160208301376000918101602001919091529392505050565b600060c082840312156116c657600080fd5b60405160c0810167ffffffffffffffff82821081831117156116ea576116ea61148c565b81604052829350843591506116fe826115e3565b908252602084013590611710826115e3565b81602084015260408501356040840152606085013560608401526080850135915061173a826115e3565b81608084015260a085013591508082111561175457600080fd5b506117618582860161165e565b60a0830152505092915050565b60006060828403121561178057600080fd5b6117886114bb565b90508135611795816115e3565b80825250602082013560208201526040820135604082015292915050565b600082601f8301126117c457600080fd5b813560206117d461167d836115bf565b828152606092830285018201928282019190878511156117f357600080fd5b8387015b8581101561184c5781818a03121561180f5760008081fd5b6118176114bb565b8135611822816115e3565b8152818601358682015260408083013561183b816115e3565b9082015284529284019281016117f7565b5090979650505050505050565b6000806040838503121561186c57600080fd5b823567ffffffffffffffff8082111561188457600080fd5b818501915085601f83011261189857600080fd5b813560206118a861167d836115bf565b82815260059290921b840181019181810190898411156118c757600080fd5b8286015b848110156119b8578035868111156118e35760008081fd5b870160e0818d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018113156119195760008081fd5b6119216114e4565b86830135898111156119335760008081fd5b6119418f89838701016116b4565b8252506119518e6040850161176e565b8782015260a0830135898111156119685760008081fd5b6119768f89838701016117b3565b60408301525060c08301358981111561198f5760008081fd5b61199d8f898387010161165e565b606083015250910135608082015283529183019183016118cb565b50965050860135925050808211156119cf57600080fd5b506119dc8582860161165e565b9150509250929050565b600080604083850312156119f957600080fd5b8235611a04816115e3565b9150602083013567ffffffffffffffff811115611a2057600080fd5b830160e08186031215611a3257600080fd5b809150509250929050565b600060208284031215611a4f57600080fd5b81518015158114611a5f57600080fd5b9392505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611a9b57600080fd5b830160208101925035905067ffffffffffffffff811115611abb57600080fd5b803603821315611aca57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60408082528181018490526000906060600586901b840181019084018784805b89811015611bf6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa088860301845282357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18c3603018112611b9a578283fd5b8b018035611ba7816115e3565b73ffffffffffffffffffffffffffffffffffffffff1686526020611bcd82820183611a66565b92508882890152611be18989018483611ad1565b97505094850194939093019250600101611b3a565b5050505060209390930193909352509392505050565b60005b83811015611c27578181015183820152602001611c0f565b50506000910152565b60008151808452611c48816020860160208601611c0c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b604081526000611c8a8485611a66565b604080850152611c9e608085018284611ad1565b915050611cae6020860186611a66565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0858403016060860152611ce3838284611ad1565b925050508281036020840152611cf98185611c30565b95945050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611d3757600080fd5b83018035915067ffffffffffffffff821115611d5257600080fd5b602001915036819003821315611aca57600080fd5b600082601f830112611d7857600080fd5b81356020611d8861167d836115bf565b82815260079290921b84018101918181019086841115611da757600080fd5b8286015b84811015611e0c5760808189031215611dc45760008081fd5b611dcc611507565b8135611dd7816115e3565b8152818501358582015260408083013590820152606080830135611dfa816115e3565b90820152835291830191608001611dab565b509695505050505050565b600060208284031215611e2957600080fd5b813567ffffffffffffffff80821115611e4157600080fd5b908301906101208286031215611e5657600080fd5b611e5e61152a565b823582811115611e6d57600080fd5b611e79878286016116b4565b8252506020830135602082015260408301356040820152611e9c60608401611608565b606082015260808301356080820152611eb88660a0850161176e565b60a082015261010083013582811115611ed057600080fd5b611edc87828601611d67565b60c08301525095945050505050565b60008060408385031215611efe57600080fd5b8251611f09816115e3565b602084015190925060ff81168114611a3257600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611faf57611faf611f4f565b5060010190565b6000806040808486031215611fca57600080fd5b835167ffffffffffffffff80821115611fe257600080fd5b818601915086601f830112611ff657600080fd5b8151602061200661167d836115bf565b82815260059290921b8401810191818101908a84111561202557600080fd5b8286015b848110156120fb578051868111156120415760008081fd5b8701808d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018913156120755760008081fd5b61207d61154d565b8582015161208a816115e3565b8152818a01518881111561209e5760008081fd5b8083019250508d603f8301126120b45760008081fd5b858201516120c461167d82611618565b8181528f8c8386010111156120d95760008081fd5b6120e8828983018e8701611c0c565b8288015250845250918301918301612029565b509890910151979997985050505050505050565b81810381811115610ad257610ad2611f4f565b60006020828403121561213457600080fd5b8151611a5f816115e3565b8082028115828204841417610ad257610ad2611f4f565b60008261218c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561222b578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff16845287015187840187905261221887850182611c30565b95880195935050908601906001016121b8565b509098975050505050505050565b80820180821115610ad257610ad2611f4f565b60006020828403121561225e57600080fd5b5051919050565b60008251612277818460208701611c0c565b9190910192915050565b602081526000610acf6020830184611c3056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122002b1a9237ec859b48a4b914b165b9a062696aa305c06c4645c0727ecc472983264736f6c63430008130033","sourceMap":"743:5198:74:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1464:33;;;;;;;;;;;;;;;;;;208:42:90;196:55;;;178:74;;166:2;151:18;1464:33:74;;;;;;;;1906:640;;;;;;;;;;-1:-1:-1;1906:640:74;;;;;:::i;:::-;;:::i;:::-;;2597:768;;;;;;;;;;-1:-1:-1;2597:768:74;;;;;:::i;:::-;;:::i;1366:52::-;;;;;;;;;;;;1416:1;1366:52;;5722:155;;;;;;;;;;-1:-1:-1;5722:155:74;;;;;:::i;:::-;;:::i;1425:33::-;;;;;;;;;;;;;;;1327;;;;;;;;;;;;1359:1;1327:33;;;;;10920:4:90;10908:17;;;10890:36;;10878:2;10863:18;1327:33:74;10748:184:90;1906:640:74;1661:27;;;;;1677:10;1661:27;;;178:74:90;1661:7:74;:15;;;;;151:18:90;;1661:27:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1656:66;;1697:25;;;;;1711:10;1697:25;;;178:74:90;151:18;;1697:25:74;;;;;;;;1656:66;2063:7:::1;:27;;;2091:5;2109;;2116:16;2098:35;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2063:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;2145:28:74::1;::::0;-1:-1:-1;2187:11:74::1;::::0;-1:-1:-1;2187:5:74;;-1:-1:-1;2187:5:74;:11:::1;:::i;:::-;2176:46;;;;;;;:::i;:::-;2145:77;;2233:11;2246::::0;2272:1:::1;:6;;;:31;;;2261:61;;;;;;;;;;;;:::i;:::-;2232:90;;;;2333:60;2342:3;2347:1;:6;;;:14;;;2371:1;:7;;;:13;;;2387:5;2333:8;:60::i;:::-;2408:9;2403:137;2427:1;:9;;;:16;2423:1;:20;2403:137;;;2464:65;2473:3;2478:1;:6;;;:14;;;2502:1;:9;;;2512:1;2502:12;;;;;;;;:::i;:::-;;;;;;;:18;;;2523:5;2464:8;:65::i;:::-;2445:3:::0;::::1;::::0;::::1;:::i;:::-;;;;2403:137;;;;2053:493;;;1906:640:::0;;;;:::o;2597:768::-;1783:10;:30;1805:7;1783:30;;1779:68;;1822:25;;;;;1836:10;1822:25;;;178:74:90;151:18;;1822:25:74;14:244:90;1779:68:74;2720:26:::1;2749:6;2756:1;2749:9;;;;;;;;:::i;:::-;;;;;;;2720:38;;2770:31;2803:24:::0;2854:12:::1;2843:55;;;;;;;;;;;;:::i;:::-;2769:129;;;;2909:24;2927:5;2909:17;:24::i;:::-;2945:16;2963:17:::0;2984:26:::1;3004:5;2984:19;:26::i;:::-;2944:66;;;;3043:9;3024:16;:28;3020:103;;;3074:10:::0;;:18:::1;;::::0;3054:69:::1;::::0;3064:8;;3094:28:::1;3113:9:::0;3094:16;:28:::1;:::i;:::-;3054:9;:69::i;:::-;3134:11;3159:5;:10;;;:35;;;3148:58;;;;;;;;;;;;:::i;:::-;3256:10:::0;;:18:::1;::::0;;::::1;::::0;3244:10:::1;::::0;;::::1;::::0;3289:11;;::::1;::::0;:17;;3319:18;;::::1;::::0;3222:136:::1;::::0;;::::1;22397:15:90::0;;;22379:34;;22449:15;;;22429:18;;;22422:43;;;;22481:18;;22474:34;22539:2;22524:18;;22517:34;;;3134:72:74;;-1:-1:-1;3222:136:74;;::::1;::::0;;;::::1;::::0;::::1;::::0;22290:19:90;3222:136:74::1;;;;;;;2710:655;;;;;;2597:768:::0;;:::o;5722:155::-;5817:23;;;5835:4;5817:23;5813:57;;5849:21;;;;;208:42:90;196:55;;5849:21:74;;;178:74:90;151:18;;5849:21:74;14:244:90;5813:57:74;5722:155;;:::o;4413:440::-;4507:15;4525:32;4536:5;4551:4;4525:10;:32::i;:::-;4507:50;;4571:7;4582:1;4571:12;4567:25;;4585:7;;;4567:25;4602:16;4622:17;;;4621:47;;4667:1;4621:47;;;4661:3;4643:15;;;;:7;:15;:::i;:::-;:21;;;;:::i;:::-;4602:66;-1:-1:-1;4683:12:74;;4679:49;;4697:31;4707:5;4714:3;4719:8;4697:9;:31::i;:::-;4738:45;4748:5;4755:7;4764:18;4774:8;4764:7;:18;:::i;4738:45::-;4799:47;;;;22397:15:90;;;22379:34;;22449:15;;;22444:2;22429:18;;22422:43;22481:18;;;22474:34;;;22539:2;22524:18;;22517:34;;;4799:47:74;;;;;;22305:3:90;22290:19;4799:47:74;;;;;;;4497:356;;4413:440;;;;;:::o;3371:224::-;3449:139;121:42:71;3540:30:74;;;3572:5;3517:61;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3449:28;:139::i;3601:806::-;1416:1;3675:16;;3758:643;3782:5;:13;;;:20;3778:1;:24;3758:643;;;3823:14;3840:5;:13;;;3854:1;3840:16;;;;;;;;:::i;:::-;;;;;;;:23;;;3823:40;;3891:1;3882:6;:10;3878:513;;;3912:13;3936:5;:13;;;3950:1;3936:16;;;;;;;;:::i;:::-;;;;;;;:22;;;3912:47;;3977:29;3992:5;3999:6;3977:14;:29::i;:::-;4059:5;:10;;;:18;;;4029:48;;:5;:13;;;4043:1;4029:16;;;;;;;;:::i;:::-;;;;;;;:26;;;:48;;;4025:352;;4105:27;;;1416:1;4105:27;;;;:48;;;4148:5;4136:17;;:8;:17;;;;4105:48;4101:75;;;4162:14;;;;;;;;;;;;;;4101:75;4209:5;-1:-1:-1;4209:5:74;4236:19;4249:6;4236:19;;:::i;:::-;;;4025:352;;;4316:5;:13;;;4330:1;4316:16;;;;;;;;:::i;:::-;;;;;;;:26;;;4307:51;;;4344:5;4351:6;4307:51;;;;;;24483:42:90;24471:55;;;;24453:74;;24558:2;24543:18;;24536:34;24441:2;24426:18;;24279:297;4307:51:74;;;;;;;;4025:352;3894:497;3878:513;-1:-1:-1;3804:3:74;;;;:::i;:::-;;;;3758:643;;;;3601:806;;;:::o;5290:203::-;5374:19;;;5370:116;;5395:38;5421:2;5426:6;5395:17;:38::i;:::-;5290:203;;;:::o;5370:116::-;5448:38;:26;;;5475:2;5479:6;5448:26;:38::i;5499:169::-;5569:7;5596:19;;;;5595:66;;5633:28;;;;;:23;196:55:90;;;5633:28:74;;;178:74:90;5633:23:74;;;;;151:18:90;;5633:28:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5595:66;;;5619:3;:11;;;5595:66;5588:73;;5499:169;;;;;:::o;6674:198:53:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;4859:425:74:-;4936:19;;;4932:346;;4971:52;5005:7;5016:6;4971:17;:52::i;4932:346::-;5074:56;;;;;5106:4;5074:56;;;25005:34:90;5074:23:74;5121:7;25075:15:90;;25055:18;;;25048:43;-1:-1:-1;;5074:23:74;;;;;;24917:18:90;;5074:56:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5054:76;-1:-1:-1;5144:46:74;:25;;;5178:7;5188:1;5144:25;:46::i;:::-;5204:63;5238:7;5248:18;5260:6;5248:9;:18;:::i;:::-;5204:25;;;;:63;:25;:63::i;2647:312:53:-;2761:6;2736:21;:31;;2728:73;;;;;;;25304:2:90;2728:73:53;;;25286:21:90;25343:2;25323:18;;;25316:30;25382:31;25362:18;;;25355:59;25431:18;;2728:73:53;25102:353:90;2728:73:53;2813:12;2831:9;:14;;2853:6;2831:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2812:52;;;2882:7;2874:78;;;;;;;25872:2:90;2874:78:53;;;25854:21:90;25911:2;25891:18;;;25884:30;25950:34;25930:18;;;25923:62;26021:28;26001:18;;;25994:56;26067:19;;2874:78:53;25670:422:90;941:175:52;1050:58;;24483:42:90;24471:55;;1050:58:52;;;24453:74:90;24543:18;;;24536:34;;;1023:86:52;;1043:5;;1073:23;;24426:18:90;;1050:58:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1023:19;:86::i;7058:325:53:-;7199:12;7224;7238:23;7265:6;:19;;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:53:o;1818:573:52:-;2143:10;;;2142:62;;-1:-1:-1;2159:39:52;;;;;2183:4;2159:39;;;25005:34:90;2159:15:52;25075::90;;;25055:18;;;25048:43;2159:15:52;;;;;24917:18:90;;2159:39:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;2142:62;2121:163;;;;;;;26591:2:90;2121:163:52;;;26573:21:90;26630:2;26610:18;;;26603:30;26669:34;26649:18;;;26642:62;26740:24;26720:18;;;26713:52;26782:19;;2121:163:52;26389:418:90;2121:163:52;2321:62;;24483:42:90;24471:55;;2321:62:52;;;24453:74:90;24543:18;;;24536:34;;;2294:90:52;;2314:5;;2344:22;;24426:18:90;;2321:62:52;24279:297:90;5196:642:52;5615:23;5641:69;5669:4;5641:69;;;;;;;;;;;;;;;;;5649:5;5641:27;;;;:69;;;;;:::i;:::-;5615:95;;5728:10;:17;5749:1;5728:22;:56;;;;5765:10;5754:30;;;;;;;;;;;;:::i;:::-;5720:111;;;;;;;27014:2:90;5720:111:52;;;26996:21:90;27053:2;27033:18;;;27026:30;27092:34;27072:18;;;27065:62;27163:12;27143:18;;;27136:40;27193:19;;5720:111:52;26812:406:90;7671:628:53;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;1702:19;;;;8113:60;;;;;;;27425:2:90;8113:60:53;;;27407:21:90;27464:2;27444:18;;;27437:30;27503:31;27483:18;;;27476:59;27552:18;;8113:60:53;27223:353:90;8113:60:53;-1:-1:-1;8208:10:53;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;4108:223::-;4241:12;4272:52;4294:6;4302:4;4308:1;4311:12;4272:21;:52::i;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;;;;;;;;;;:::i;5165:446::-;5330:12;5387:5;5362:21;:30;;5354:81;;;;;;;28007:2:90;5354:81:53;;;27989:21:90;28046:2;28026:18;;;28019:30;28085:34;28065:18;;;28058:62;28156:8;28136:18;;;28129:36;28182:19;;5354:81:53;27805:402:90;5354:81:53;5446:12;5460:23;5487:6;:11;;5506:5;5513:4;5487:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5445:73;;;;5535:69;5562:6;5570:7;5579:10;5591:12;5535:26;:69::i;:::-;5528:76;5165:446;-1:-1:-1;;;;;;;5165:446:53:o;263:975:90:-;422:6;430;438;446;499:2;487:9;478:7;474:23;470:32;467:52;;;515:1;512;505:12;467:52;555:9;542:23;584:18;625:2;617:6;614:14;611:34;;;641:1;638;631:12;611:34;664:22;;;;720:2;702:16;;;698:25;695:45;;;736:1;733;726:12;695:45;759:2;;-1:-1:-1;814:2:90;799:18;;786:32;;830:16;;;827:36;;;859:1;856;849:12;827:36;897:8;886:9;882:24;872:34;;944:7;937:4;933:2;929:13;925:27;915:55;;966:1;963;956:12;915:55;1006:2;993:16;1032:2;1024:6;1021:14;1018:34;;;1048:1;1045;1038:12;1018:34;1101:7;1096:2;1086:6;1083:1;1079:14;1075:2;1071:23;1067:32;1064:45;1061:65;;;1122:1;1119;1112:12;1061:65;263:975;;1153:2;1145:11;;;;;-1:-1:-1;1175:6:90;;1228:2;1213:18;1200:32;;-1:-1:-1;263:975:90;-1:-1:-1;;;263:975:90:o;1243:184::-;1295:77;1292:1;1285:88;1392:4;1389:1;1382:15;1416:4;1413:1;1406:15;1432:253;1504:2;1498:9;1546:4;1534:17;;1581:18;1566:34;;1602:22;;;1563:62;1560:88;;;1628:18;;:::i;:::-;1664:2;1657:22;1432:253;:::o;1690:::-;1762:2;1756:9;1804:4;1792:17;;1839:18;1824:34;;1860:22;;;1821:62;1818:88;;;1886:18;;:::i;1948:253::-;2020:2;2014:9;2062:4;2050:17;;2097:18;2082:34;;2118:22;;;2079:62;2076:88;;;2144:18;;:::i;2206:253::-;2278:2;2272:9;2320:4;2308:17;;2355:18;2340:34;;2376:22;;;2337:62;2334:88;;;2402:18;;:::i;2464:251::-;2536:2;2530:9;;;2566:15;;2611:18;2596:34;;2632:22;;;2593:62;2590:88;;;2658:18;;:::i;2720:334::-;2791:2;2785:9;2847:2;2837:13;;2852:66;2833:86;2821:99;;2950:18;2935:34;;2971:22;;;2932:62;2929:88;;;2997:18;;:::i;:::-;3033:2;3026:22;2720:334;;-1:-1:-1;2720:334:90:o;3059:196::-;3132:4;3165:18;3157:6;3154:30;3151:56;;;3187:18;;:::i;:::-;-1:-1:-1;3232:1:90;3228:14;3244:4;3224:25;;3059:196::o;3260:164::-;3356:42;3349:5;3345:54;3338:5;3335:65;3325:93;;3414:1;3411;3404:12;3325:93;3260:164;:::o;3429:144::-;3497:20;;3526:41;3497:20;3526:41;:::i;:::-;3429:144;;;:::o;3578:245::-;3626:4;3659:18;3651:6;3648:30;3645:56;;;3681:18;;:::i;:::-;-1:-1:-1;3738:2:90;3726:15;3743:66;3722:88;3812:4;3718:99;;3578:245::o;3828:462::-;3870:5;3923:3;3916:4;3908:6;3904:17;3900:27;3890:55;;3941:1;3938;3931:12;3890:55;3977:6;3964:20;4008:48;4024:31;4052:2;4024:31;:::i;:::-;4008:48;:::i;:::-;4081:2;4072:7;4065:19;4127:3;4120:4;4115:2;4107:6;4103:15;4099:26;4096:35;4093:55;;;4144:1;4141;4134:12;4093:55;4209:2;4202:4;4194:6;4190:17;4183:4;4174:7;4170:18;4157:55;4257:1;4232:16;;;4250:4;4228:27;4221:38;;;;4236:7;3828:462;-1:-1:-1;;;3828:462:90:o;4295:1123::-;4351:5;4399:4;4387:9;4382:3;4378:19;4374:30;4371:50;;;4417:1;4414;4407:12;4371:50;4450:2;4444:9;4492:4;4484:6;4480:17;4516:18;4584:6;4572:10;4569:22;4564:2;4552:10;4549:18;4546:46;4543:72;;;4595:18;;:::i;:::-;4635:10;4631:2;4624:22;4664:6;4655:15;;4707:9;4694:23;4679:38;;4726:43;4761:7;4726:43;:::i;:::-;4778:23;;;4853:2;4838:18;;4825:32;;4866:43;4825:32;4866:43;:::i;:::-;4942:7;4937:2;4929:6;4925:15;4918:32;5011:2;5000:9;4996:18;4983:32;4978:2;4970:6;4966:15;4959:57;5077:2;5066:9;5062:18;5049:32;5044:2;5036:6;5032:15;5025:57;5134:3;5123:9;5119:19;5106:33;5091:48;;5148:43;5183:7;5148:43;:::i;:::-;5225:7;5219:3;5211:6;5207:16;5200:33;5284:3;5273:9;5269:19;5256:33;5242:47;;5312:2;5304:6;5301:14;5298:34;;;5328:1;5325;5318:12;5298:34;;5366:45;5407:3;5398:6;5387:9;5383:22;5366:45;:::i;:::-;5360:3;5352:6;5348:16;5341:71;;;4295:1123;;;;:::o;5423:433::-;5480:5;5528:4;5516:9;5511:3;5507:19;5503:30;5500:50;;;5546:1;5543;5536:12;5500:50;5568:22;;:::i;:::-;5559:31;;5627:9;5614:23;5646:43;5681:7;5646:43;:::i;:::-;5712:7;5705:5;5698:22;;5780:2;5769:9;5765:18;5752:32;5747:2;5740:5;5736:14;5729:56;5845:2;5834:9;5830:18;5817:32;5812:2;5805:5;5801:14;5794:56;5423:433;;;;:::o;5861:1249::-;5926:5;5979:3;5972:4;5964:6;5960:17;5956:27;5946:55;;5997:1;5994;5987:12;5946:55;6033:6;6020:20;6059:4;6083:73;6099:56;6152:2;6099:56;:::i;6083:73::-;6190:15;;;6252:4;6295:11;;;6283:24;;6279:33;;;6221:12;;;;6178:3;6324:15;;;6321:35;;;6352:1;6349;6342:12;6321:35;6388:2;6380:6;6376:15;6400:681;6416:6;6411:3;6408:15;6400:681;;;6492:2;6486:3;6481;6477:13;6473:22;6470:112;;;6536:1;6565:2;6561;6554:14;6470:112;6608:22;;:::i;:::-;6671:3;6658:17;6688:43;6723:7;6688:43;:::i;:::-;6744:22;;6815:12;;;6802:26;6786:14;;;6779:50;6852:2;6895:12;;;6882:26;6921:43;6882:26;6921:43;:::i;:::-;6984:14;;;6977:31;7021:18;;7059:12;;;;6433;;6400:681;;;-1:-1:-1;7099:5:90;;5861:1249;-1:-1:-1;;;;;;;5861:1249:90:o;7115:2608::-;7247:6;7255;7308:2;7296:9;7287:7;7283:23;7279:32;7276:52;;;7324:1;7321;7314:12;7276:52;7364:9;7351:23;7393:18;7434:2;7426:6;7423:14;7420:34;;;7450:1;7447;7440:12;7420:34;7488:6;7477:9;7473:22;7463:32;;7533:7;7526:4;7522:2;7518:13;7514:27;7504:55;;7555:1;7552;7545:12;7504:55;7591:2;7578:16;7613:4;7637:73;7653:56;7706:2;7653:56;:::i;7637:73::-;7744:15;;;7826:1;7822:10;;;;7814:19;;7810:28;;;7775:12;;;;7850:19;;;7847:39;;;7882:1;7879;7872:12;7847:39;7914:2;7910;7906:11;7926:1595;7942:6;7937:3;7934:15;7926:1595;;;8028:3;8015:17;8064:2;8051:11;8048:19;8045:109;;;8108:1;8137:2;8133;8126:14;8045:109;8177:20;;8220:4;8248:16;;;8266:66;8244:89;8240:98;-1:-1:-1;8237:188:90;;;8379:1;8408:2;8404;8397:14;8237:188;8451:22;;:::i;:::-;8523:2;8519;8515:11;8502:25;8556:2;8546:8;8543:16;8540:106;;;8600:1;8629:2;8625;8618:14;8540:106;8673:64;8729:7;8724:2;8713:8;8709:2;8705:17;8701:26;8673:64;:::i;:::-;8666:5;8659:79;;8774:50;8816:7;8811:2;8807;8803:11;8774:50;:::i;:::-;8769:2;8762:5;8758:14;8751:74;8875:4;8871:2;8867:13;8854:27;8910:2;8900:8;8897:16;8894:109;;;8955:1;8985:3;8980;8973:16;8894:109;9039:76;9107:7;9102:2;9091:8;9087:2;9083:17;9079:26;9039:76;:::i;:::-;9034:2;9027:5;9023:14;9016:100;;9166:3;9162:2;9158:12;9145:26;9200:2;9190:8;9187:16;9184:109;;;9245:1;9275:3;9270;9263:16;9184:109;9331:53;9376:7;9371:2;9360:8;9356:2;9352:17;9348:26;9331:53;:::i;:::-;9324:4;9313:16;;9306:79;-1:-1:-1;9435:11:90;;9422:25;9416:3;9405:15;;9398:50;9461:18;;9499:12;;;;7959;;7926:1595;;;-1:-1:-1;9540:5:90;-1:-1:-1;;9583:18:90;;9570:32;;-1:-1:-1;;9614:16:90;;;9611:36;;;9643:1;9640;9633:12;9611:36;;9666:51;9709:7;9698:8;9687:9;9683:24;9666:51;:::i;:::-;9656:61;;;7115:2608;;;;;:::o;9959:537::-;10059:6;10067;10120:2;10108:9;10099:7;10095:23;10091:32;10088:52;;;10136:1;10133;10126:12;10088:52;10175:9;10162:23;10194:41;10229:5;10194:41;:::i;:::-;10254:5;-1:-1:-1;10310:2:90;10295:18;;10282:32;10337:18;10326:30;;10323:50;;;10369:1;10366;10359:12;10323:50;10392:22;;10448:3;10430:16;;;10426:26;10423:46;;;10465:1;10462;10455:12;10423:46;10488:2;10478:12;;;9959:537;;;;;:::o;10937:277::-;11004:6;11057:2;11045:9;11036:7;11032:23;11028:32;11025:52;;;11073:1;11070;11063:12;11025:52;11105:9;11099:16;11158:5;11151:13;11144:21;11137:5;11134:32;11124:60;;11180:1;11177;11170:12;11124:60;11203:5;10937:277;-1:-1:-1;;;10937:277:90:o;11219:559::-;11277:5;11284:6;11344:3;11331:17;11426:66;11415:8;11399:14;11395:29;11391:102;11371:18;11367:127;11357:155;;11508:1;11505;11498:12;11357:155;11536:33;;11640:4;11627:18;;;-1:-1:-1;11588:21:90;;-1:-1:-1;11668:18:90;11657:30;;11654:50;;;11700:1;11697;11690:12;11654:50;11747:6;11731:14;11727:27;11720:5;11716:39;11713:59;;;11768:1;11765;11758:12;11713:59;11219:559;;;;;:::o;11783:325::-;11871:6;11866:3;11859:19;11923:6;11916:5;11909:4;11904:3;11900:14;11887:43;;11975:1;11968:4;11959:6;11954:3;11950:16;11946:27;11939:38;11841:3;12097:4;12027:66;12022:2;12014:6;12010:15;12006:88;12001:3;11997:98;11993:109;11986:116;;11783:325;;;;:::o;12113:1622::-;12370:2;12422:21;;;12395:18;;;12478:22;;;-1:-1:-1;;12531:2:90;12580:1;12576:14;;;12561:30;;12557:39;;;12516:18;;12619:6;-1:-1:-1;;12674:987:90;12690:6;12685:3;12682:15;12674:987;;;12783:66;12771:9;12763:6;12759:22;12755:95;12750:3;12743:108;12903:6;12890:20;12990:66;12981:6;12965:14;12961:27;12957:100;12937:18;12933:125;12923:153;;13072:1;13069;13062:12;12923:153;13102:31;;13161:19;;13193:43;13161:19;13193:43;:::i;:::-;13277:42;13264:56;13249:72;;13344:4;13395:53;13433:14;;;13437:5;13395:53;:::i;:::-;13361:87;;13485:2;13480;13472:6;13468:15;13461:27;13511:70;13577:2;13569:6;13565:15;13551:12;13537;13511:70;:::i;:::-;13501:80;-1:-1:-1;;13639:12:90;;;;13604:15;;;;;-1:-1:-1;12716:1:90;12707:11;12674:987;;;-1:-1:-1;;;;13715:4:90;13700:20;;;;13693:36;;;;-1:-1:-1;13678:6:90;12113:1622;-1:-1:-1;;;12113:1622:90:o;13740:250::-;13825:1;13835:113;13849:6;13846:1;13843:13;13835:113;;;13925:11;;;13919:18;13906:11;;;13899:39;13871:2;13864:10;13835:113;;;-1:-1:-1;;13982:1:90;13964:16;;13957:27;13740:250::o;13995:329::-;14036:3;14074:5;14068:12;14101:6;14096:3;14089:19;14117:76;14186:6;14179:4;14174:3;14170:14;14163:4;14156:5;14152:16;14117:76;:::i;:::-;14238:2;14226:15;14243:66;14222:88;14213:98;;;;14313:4;14209:109;;13995:329;-1:-1:-1;;13995:329:90:o;14329:892::-;14562:2;14551:9;14544:21;14525:4;14608:46;14647:6;14639;14608:46;:::i;:::-;14690:2;14685;14674:9;14670:18;14663:30;14716:74;14785:3;14774:9;14770:19;14756:12;14742;14716:74;:::i;:::-;14702:88;;;14837:57;14888:4;14880:6;14876:17;14868:6;14837:57;:::i;:::-;14958:66;14946:9;14938:6;14934:22;14930:95;14925:2;14914:9;14910:18;14903:123;15046:65;15104:6;15088:14;15072;15046:65;:::i;:::-;15035:76;;;;15158:9;15153:3;15149:19;15142:4;15131:9;15127:20;15120:49;15186:29;15211:3;15203:6;15186:29;:::i;:::-;15178:37;14329:892;-1:-1:-1;;;;;14329:892:90:o;15226:580::-;15303:4;15309:6;15369:11;15356:25;15459:66;15448:8;15432:14;15428:29;15424:102;15404:18;15400:127;15390:155;;15541:1;15538;15531:12;15390:155;15568:33;;15620:20;;;-1:-1:-1;15663:18:90;15652:30;;15649:50;;;15695:1;15692;15685:12;15649:50;15728:4;15716:17;;-1:-1:-1;15759:14:90;15755:27;;;15745:38;;15742:58;;;15796:1;15793;15786:12;15811:1317;15876:5;15929:3;15922:4;15914:6;15910:17;15906:27;15896:55;;15947:1;15944;15937:12;15896:55;15983:6;15970:20;16009:4;16033:73;16049:56;16102:2;16049:56;:::i;16033:73::-;16140:15;;;16226:1;16222:10;;;;16210:23;;16206:32;;;16171:12;;;;16250:15;;;16247:35;;;16278:1;16275;16268:12;16247:35;16314:2;16306:6;16302:15;16326:773;16342:6;16337:3;16334:15;16326:773;;;16420:4;16414:3;16409;16405:13;16401:24;16398:114;;;16466:1;16495:2;16491;16484:14;16398:114;16538:22;;:::i;:::-;16601:3;16588:17;16618:43;16653:7;16618:43;:::i;:::-;16674:22;;16745:12;;;16732:26;16716:14;;;16709:50;16782:2;16833:12;;;16820:26;16804:14;;;16797:50;16870:2;16913:12;;;16900:26;16939:43;16900:26;16939:43;:::i;:::-;17002:14;;;16995:31;17039:18;;17077:12;;;;16368:4;16359:14;16326:773;;;-1:-1:-1;17117:5:90;15811:1317;-1:-1:-1;;;;;;15811:1317:90:o;17133:1156::-;17229:6;17282:2;17270:9;17261:7;17257:23;17253:32;17250:52;;;17298:1;17295;17288:12;17250:52;17338:9;17325:23;17367:18;17408:2;17400:6;17397:14;17394:34;;;17424:1;17421;17414:12;17394:34;17447:22;;;;17503:6;17485:16;;;17481:29;17478:49;;;17523:1;17520;17513:12;17478:49;17549:22;;:::i;:::-;17609:2;17596:16;17637:2;17627:8;17624:16;17621:36;;;17653:1;17650;17643:12;17621:36;17680:55;17727:7;17716:8;17712:2;17708:17;17680:55;:::i;:::-;17673:5;17666:70;;17789:2;17785;17781:11;17768:25;17763:2;17756:5;17752:14;17745:49;17847:2;17843;17839:11;17826:25;17821:2;17814:5;17810:14;17803:49;17884:31;17911:2;17907;17903:11;17884:31;:::i;:::-;17879:2;17872:5;17868:14;17861:55;17970:3;17966:2;17962:12;17949:26;17943:3;17936:5;17932:15;17925:51;18009;18052:7;18046:3;18042:2;18038:12;18009:51;:::i;:::-;18003:3;17996:5;17992:15;17985:76;18107:3;18103:2;18099:12;18086:26;18137:2;18127:8;18124:16;18121:36;;;18153:1;18150;18143:12;18121:36;18191:67;18250:7;18239:8;18235:2;18231:17;18191:67;:::i;:::-;18184:4;18173:16;;18166:93;-1:-1:-1;18177:5:90;17133:1156;-1:-1:-1;;;;;17133:1156:90:o;18294:427::-;18379:6;18387;18440:2;18428:9;18419:7;18415:23;18411:32;18408:52;;;18456:1;18453;18446:12;18408:52;18488:9;18482:16;18507:41;18542:5;18507:41;:::i;:::-;18617:2;18602:18;;18596:25;18567:5;;-1:-1:-1;18665:4:90;18652:18;;18640:31;;18630:59;;18685:1;18682;18675:12;18726:184;18778:77;18775:1;18768:88;18875:4;18872:1;18865:15;18899:4;18896:1;18889:15;18915:184;18967:77;18964:1;18957:88;19064:4;19061:1;19054:15;19088:4;19085:1;19078:15;19104:195;19143:3;19174:66;19167:5;19164:77;19161:103;;19244:18;;:::i;:::-;-1:-1:-1;19291:1:90;19280:13;;19104:195::o;19304:2371::-;19431:6;19439;19470:2;19513;19501:9;19492:7;19488:23;19484:32;19481:52;;;19529:1;19526;19519:12;19481:52;19562:9;19556:16;19591:18;19632:2;19624:6;19621:14;19618:34;;;19648:1;19645;19638:12;19618:34;19686:6;19675:9;19671:22;19661:32;;19731:7;19724:4;19720:2;19716:13;19712:27;19702:55;;19753:1;19750;19743:12;19702:55;19782:2;19776:9;19804:4;19828:73;19844:56;19897:2;19844:56;:::i;19828:73::-;19935:15;;;20017:1;20013:10;;;;20005:19;;20001:28;;;19966:12;;;;20041:19;;;20038:39;;;20073:1;20070;20063:12;20038:39;20105:2;20101;20097:11;20117:1484;20133:6;20128:3;20125:15;20117:1484;;;20212:3;20206:10;20248:2;20235:11;20232:19;20229:109;;;20292:1;20321:2;20317;20310:14;20229:109;20361:20;;20405:16;;;20423:66;20401:89;20397:98;-1:-1:-1;20394:188:90;;;20536:1;20565:2;20561;20554:14;20394:188;20608:22;;:::i;:::-;20672:2;20668;20664:11;20658:18;20689:43;20724:7;20689:43;:::i;:::-;20745:22;;20802:11;;;20796:18;20830:16;;;20827:106;;;20887:1;20916:2;20912;20905:14;20827:106;20965:8;20961:2;20957:17;20946:28;;;21015:7;21010:2;21005:3;21001:12;20997:26;20987:127;;21066:1;21096:3;21091;21084:16;20987:127;21153:2;21148:3;21144:12;21138:19;21183:49;21199:32;21227:3;21199:32;:::i;21183:49::-;21259:3;21252:5;21245:18;21306:7;21301:2;21295:3;21290;21286:13;21282:22;21279:35;21276:128;;;21356:1;21386:3;21381;21374:16;21276:128;21417:69;21482:3;21477:2;21470:5;21466:14;21461:2;21456:3;21452:12;21417:69;:::i;:::-;21506:14;;;21499:29;-1:-1:-1;21541:18:90;;-1:-1:-1;21579:12:90;;;;20150;;20117:1484;;;-1:-1:-1;21650:18:90;;;;21644:25;21620:5;;21644:25;;-1:-1:-1;;;;;;;;19304:2371:90:o;21680:128::-;21747:9;;;21768:11;;;21765:37;;;21782:18;;:::i;21813:269::-;21891:6;21944:2;21932:9;21923:7;21919:23;21915:32;21912:52;;;21960:1;21957;21950:12;21912:52;21992:9;21986:16;22011:41;22046:5;22011:41;:::i;22562:168::-;22635:9;;;22666;;22683:15;;;22677:22;;22663:37;22653:71;;22704:18;;:::i;22735:274::-;22775:1;22801;22791:189;;22836:77;22833:1;22826:88;22937:4;22934:1;22927:15;22965:4;22962:1;22955:15;22791:189;-1:-1:-1;22994:9:90;;22735:274::o;23014:1130::-;23202:4;23231:2;23271;23260:9;23256:18;23301:2;23290:9;23283:21;23324:6;23359;23353:13;23390:6;23382;23375:22;23416:2;23406:12;;23449:2;23438:9;23434:18;23427:25;;23511:2;23501:6;23498:1;23494:14;23483:9;23479:30;23475:39;23549:2;23541:6;23537:15;23570:1;23580:535;23594:6;23591:1;23588:13;23580:535;;;23659:22;;;23683:66;23655:95;23643:108;;23774:13;;23819:9;;23830:42;23815:58;23800:74;;23913:11;;23907:18;23945:15;;;23938:27;;;23988:47;24019:15;;;23907:18;23988:47;:::i;:::-;24093:12;;;;23978:57;-1:-1:-1;;24058:15:90;;;;23616:1;23609:9;23580:535;;;-1:-1:-1;24132:6:90;;23014:1130;-1:-1:-1;;;;;;;;23014:1130:90:o;24149:125::-;24214:9;;;24235:10;;;24232:36;;;24248:18;;:::i;24581:184::-;24651:6;24704:2;24692:9;24683:7;24679:23;24675:32;24672:52;;;24720:1;24717;24710:12;24672:52;-1:-1:-1;24743:16:90;;24581:184;-1:-1:-1;24581:184:90:o;26097:287::-;26226:3;26264:6;26258:13;26280:66;26339:6;26334:3;26327:4;26319:6;26315:17;26280:66;:::i;:::-;26362:16;;;;;26097:287;-1:-1:-1;;26097:287:90:o;27581:219::-;27730:2;27719:9;27712:21;27693:4;27750:44;27790:2;27779:9;27775:18;27767:6;27750:44;:::i","linkReferences":{},"immutableReferences":{"53316":[{"start":359,"length":32},{"start":669,"length":32},{"start":1057,"length":32},{"start":2845,"length":32},{"start":2949,"length":32},{"start":3098,"length":32},{"start":3141,"length":32}],"53319":[{"start":146,"length":32},{"start":478,"length":32}]}},"methodIdentifiers":{"INVALID_ADDRESS()":"5963709b","VERSION()":"ffa1ad74","allowed()":"19e1fca4","execute((bytes,bytes),(address,bytes)[],uint256)":"489f9902","reactor()":"ab572650","reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)":"585da628","validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))":"6e84ba2b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IReactor\",\"name\":\"_reactor\",\"type\":\"address\"},{\"internalType\":\"contract IAllowed\",\"name\":\"_allowed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidOrder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ExtraOut\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"swapper\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ref\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"inToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"outToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"outAmount\",\"type\":\"uint256\"}],\"name\":\"Resolved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"ref\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"swapper\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"refshare\",\"type\":\"uint256\"}],\"name\":\"Surplus\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"INVALID_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allowed\",\"outputs\":[{\"internalType\":\"contract IAllowed\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"order\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"internalType\":\"struct SignedOrder\",\"name\":\"order\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"}],\"internalType\":\"struct IMulticall3.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"outAmountSwapper\",\"type\":\"uint256\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"reactor\",\"outputs\":[{\"internalType\":\"contract IReactor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"contract IReactor\",\"name\":\"reactor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapper\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"contract IValidationCallback\",\"name\":\"additionalValidationContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"additionalValidationData\",\"type\":\"bytes\"}],\"internalType\":\"struct OrderInfo\",\"name\":\"info\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"contract ERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct InputToken\",\"name\":\"input\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct OutputToken[]\",\"name\":\"outputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"internalType\":\"struct ResolvedOrder[]\",\"name\":\"orders\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"callbackData\",\"type\":\"bytes\"}],\"name\":\"reactorCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"filler\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"contract IReactor\",\"name\":\"reactor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"swapper\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"contract IValidationCallback\",\"name\":\"additionalValidationContract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"additionalValidationData\",\"type\":\"bytes\"}],\"internalType\":\"struct OrderInfo\",\"name\":\"info\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"contract ERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct InputToken\",\"name\":\"input\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct OutputToken[]\",\"name\":\"outputs\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"}],\"internalType\":\"struct ResolvedOrder\",\"name\":\"\",\"type\":\"tuple\"}],\"name\":\"validate\",\"outputs\":[],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)\":{\"details\":\"IReactorCallback\"},\"validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))\":{\"details\":\"IValidationCallback\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"execute((bytes,bytes),(address,bytes)[],uint256)\":{\"notice\":\"Entry point\"}},\"notice\":\"LiquidityHub Executor\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LiquidityHub.sol\":\"LiquidityHub\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":UniswapX/=lib/UniswapX/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/UniswapX/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":permit2/=lib/UniswapX/lib/permit2/\",\":solmate/=lib/solmate/\",\":uniswapx/=lib/UniswapX/\"]},\"sources\":{\"lib/UniswapX/src/base/ReactorStructs.sol\":{\"keccak256\":\"0x78e6db322ca69aaf552e59d5e74a00fd465a802388c2d03f9bf4b711f5704588\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://12d8fc82c3543bfe0d2cd44cdbc524bed1f074abafe086f7e58573cbaff2a74e\",\"dweb:/ipfs/QmREbamTn3nz89nEjv2uWHNHKSF6Yga2gQ688Cde89xcNT\"]},\"lib/UniswapX/src/interfaces/IReactor.sol\":{\"keccak256\":\"0x50bbe3534eedf1ebb75b164c38fa63135ef53f7239a2c268008375025eb1f101\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0061477bbe13910c973b3760c061fd68836ecbe7e4c1b1d704bcaf38c669f9b0\",\"dweb:/ipfs/QmNhehD2Uw7uuCFTmgcE134kMmioRzVk9GUFWmBqLD9whX\"]},\"lib/UniswapX/src/interfaces/IReactorCallback.sol\":{\"keccak256\":\"0xf3ee1fe09545fc5be000c33bb6779e897b4e5013bd9de3e7c3107bf466b4dfa1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://12d7fd1ac3dca76614796f0d012ea4de79bf09cf124cc74efffdf25a56756344\",\"dweb:/ipfs/QmXyeSrG7caihgzUZdPdPbbRj6v1w65gBnfn9a7HhbVJX9\"]},\"lib/UniswapX/src/interfaces/IValidationCallback.sol\":{\"keccak256\":\"0xe68fc4f5a2a5029e7f1881d01f5434acbcf0fef2e7ae1945593e01f5414a841e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b53ec74b51802cf75aa32c619da5ce7571ff22d305cb599ac3029ef840319d5b\",\"dweb:/ipfs/QmZjiFHQxv9BqMPSk2u4nF9hrwgmPCW3x5TUaXcK1J2bwj\"]},\"lib/UniswapX/src/lib/DutchOrderLib.sol\":{\"keccak256\":\"0xdd6b9bffcc044899fac52e1e9cbe4becc7a40b56d912695e80600224367235e6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://78c08ec074bc21ce610f2e0c3594b383e0cd2301c32239146a771e2e5d2cb975\",\"dweb:/ipfs/QmbMQwT9k3RWyTdihqqnu3RDiRCz1XmpMUVwxeyWzChKB5\"]},\"lib/UniswapX/src/lib/ExclusiveDutchOrderLib.sol\":{\"keccak256\":\"0x3e21caa4af8c032280b5d84a2e673f7d0a7c9b42758c52fef7e669282c445f20\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3cf71f86364d42acb5a3c24c8f21f400975dbd32c19fa3c56ee17dfbb8c9ffb0\",\"dweb:/ipfs/QmURuzWqzfBToKj9u28xXYT4bTHNhNBWJfaj8j8M1jZUx8\"]},\"lib/UniswapX/src/lib/OrderInfoLib.sol\":{\"keccak256\":\"0x38672b528e63dc53f36ed82d0037110a9f5893ad0a3957e24f19fa3fdbd80015\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://147172dbebf4bb579bc392f25666645719264c0b47378f7fc4f3a95c79bdf5a4\",\"dweb:/ipfs/Qmd5wVnQ8rKHHQgUQzEDcAPiqrVzmNr9t2D7d1SqUg9hTo\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xec63854014a5b4f2b3290ab9103a21bdf902a508d0f41a8573fea49e98bf571a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc5b5dc12fbc4002f282eaa7a5f06d8310ed62c1c77c5770f6283e058454c39a\",\"dweb:/ipfs/Qme9rE2wS3yBuyJq9GgbmzbsBQsW2M2sVFqYYLw7bosGrv\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68\",\"dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"src/Consts.sol\":{\"keccak256\":\"0xae7872274e886cfca77692258434969ffe3e5588bd8e25cba42641a33dac785a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e133848b0f5e0c18ba2d6147368765ea7c0e4600dbcc44596e96e35c2147278\",\"dweb:/ipfs/Qmb3hj6hjT1SyeKVwjEonNtwUdkkXwNnSNfkyNenHovLDQ\"]},\"src/LiquidityHub.sol\":{\"keccak256\":\"0x718ecab2f0de63752f24e4ca2b84786ca95b066f1b37445f6cf295e8f185bf00\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://acee253daa5564a6175be347258d509b65422f1163ae3b452c1131a9636b671a\",\"dweb:/ipfs/Qmey4z5k1LusDcDs8d5cynDCjZMPnesTkE8ZGAn2vVSoew\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.19+commit.7dd6d404"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IReactor","name":"_reactor","type":"address"},{"internalType":"contract IAllowed","name":"_allowed","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"InvalidOrder"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"InvalidSender"},{"inputs":[{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"address","name":"token","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"ExtraOut","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32","indexed":true},{"internalType":"address","name":"swapper","type":"address","indexed":true},{"internalType":"address","name":"ref","type":"address","indexed":true},{"internalType":"address","name":"inToken","type":"address","indexed":false},{"internalType":"address","name":"outToken","type":"address","indexed":false},{"internalType":"uint256","name":"inAmount","type":"uint256","indexed":false},{"internalType":"uint256","name":"outAmount","type":"uint256","indexed":false}],"type":"event","name":"Resolved","anonymous":false},{"inputs":[{"internalType":"address","name":"ref","type":"address","indexed":true},{"internalType":"address","name":"swapper","type":"address","indexed":false},{"internalType":"address","name":"token","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"refshare","type":"uint256","indexed":false}],"type":"event","name":"Surplus","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"INVALID_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VERSION","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"allowed","outputs":[{"internalType":"contract IAllowed","name":"","type":"address"}]},{"inputs":[{"internalType":"struct SignedOrder","name":"order","type":"tuple","components":[{"internalType":"bytes","name":"order","type":"bytes"},{"internalType":"bytes","name":"sig","type":"bytes"}]},{"internalType":"struct IMulticall3.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"callData","type":"bytes"}]},{"internalType":"uint256","name":"outAmountSwapper","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"execute"},{"inputs":[],"stateMutability":"view","type":"function","name":"reactor","outputs":[{"internalType":"contract IReactor","name":"","type":"address"}]},{"inputs":[{"internalType":"struct ResolvedOrder[]","name":"orders","type":"tuple[]","components":[{"internalType":"struct OrderInfo","name":"info","type":"tuple","components":[{"internalType":"contract IReactor","name":"reactor","type":"address"},{"internalType":"address","name":"swapper","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"contract IValidationCallback","name":"additionalValidationContract","type":"address"},{"internalType":"bytes","name":"additionalValidationData","type":"bytes"}]},{"internalType":"struct InputToken","name":"input","type":"tuple","components":[{"internalType":"contract ERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"maxAmount","type":"uint256"}]},{"internalType":"struct OutputToken[]","name":"outputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}]},{"internalType":"bytes","name":"sig","type":"bytes"},{"internalType":"bytes32","name":"hash","type":"bytes32"}]},{"internalType":"bytes","name":"callbackData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"reactorCallback"},{"inputs":[{"internalType":"address","name":"filler","type":"address"},{"internalType":"struct ResolvedOrder","name":"","type":"tuple","components":[{"internalType":"struct OrderInfo","name":"info","type":"tuple","components":[{"internalType":"contract IReactor","name":"reactor","type":"address"},{"internalType":"address","name":"swapper","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"contract IValidationCallback","name":"additionalValidationContract","type":"address"},{"internalType":"bytes","name":"additionalValidationData","type":"bytes"}]},{"internalType":"struct InputToken","name":"input","type":"tuple","components":[{"internalType":"contract ERC20","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"maxAmount","type":"uint256"}]},{"internalType":"struct OutputToken[]","name":"outputs","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}]},{"internalType":"bytes","name":"sig","type":"bytes"},{"internalType":"bytes32","name":"hash","type":"bytes32"}]}],"stateMutability":"view","type":"function","name":"validate"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"reactorCallback(((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32)[],bytes)":{"details":"IReactorCallback"},"validate(address,((address,address,uint256,uint256,address,bytes),(address,uint256,uint256),(address,uint256,address)[],bytes,bytes32))":{"details":"IValidationCallback"}},"version":1},"userdoc":{"kind":"user","methods":{"execute((bytes,bytes),(address,bytes)[],uint256)":{"notice":"Entry point"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","UniswapX/=lib/UniswapX/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/UniswapX/lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","permit2/=lib/UniswapX/lib/permit2/","solmate/=lib/solmate/","uniswapx/=lib/UniswapX/"],"optimizer":{"enabled":true,"runs":1000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/LiquidityHub.sol":"LiquidityHub"},"evmVersion":"paris","libraries":{}},"sources":{"lib/UniswapX/src/base/ReactorStructs.sol":{"keccak256":"0x78e6db322ca69aaf552e59d5e74a00fd465a802388c2d03f9bf4b711f5704588","urls":["bzz-raw://12d8fc82c3543bfe0d2cd44cdbc524bed1f074abafe086f7e58573cbaff2a74e","dweb:/ipfs/QmREbamTn3nz89nEjv2uWHNHKSF6Yga2gQ688Cde89xcNT"],"license":"GPL-2.0-or-later"},"lib/UniswapX/src/interfaces/IReactor.sol":{"keccak256":"0x50bbe3534eedf1ebb75b164c38fa63135ef53f7239a2c268008375025eb1f101","urls":["bzz-raw://0061477bbe13910c973b3760c061fd68836ecbe7e4c1b1d704bcaf38c669f9b0","dweb:/ipfs/QmNhehD2Uw7uuCFTmgcE134kMmioRzVk9GUFWmBqLD9whX"],"license":"GPL-2.0-or-later"},"lib/UniswapX/src/interfaces/IReactorCallback.sol":{"keccak256":"0xf3ee1fe09545fc5be000c33bb6779e897b4e5013bd9de3e7c3107bf466b4dfa1","urls":["bzz-raw://12d7fd1ac3dca76614796f0d012ea4de79bf09cf124cc74efffdf25a56756344","dweb:/ipfs/QmXyeSrG7caihgzUZdPdPbbRj6v1w65gBnfn9a7HhbVJX9"],"license":"GPL-2.0-or-later"},"lib/UniswapX/src/interfaces/IValidationCallback.sol":{"keccak256":"0xe68fc4f5a2a5029e7f1881d01f5434acbcf0fef2e7ae1945593e01f5414a841e","urls":["bzz-raw://b53ec74b51802cf75aa32c619da5ce7571ff22d305cb599ac3029ef840319d5b","dweb:/ipfs/QmZjiFHQxv9BqMPSk2u4nF9hrwgmPCW3x5TUaXcK1J2bwj"],"license":"GPL-2.0-or-later"},"lib/UniswapX/src/lib/DutchOrderLib.sol":{"keccak256":"0xdd6b9bffcc044899fac52e1e9cbe4becc7a40b56d912695e80600224367235e6","urls":["bzz-raw://78c08ec074bc21ce610f2e0c3594b383e0cd2301c32239146a771e2e5d2cb975","dweb:/ipfs/QmbMQwT9k3RWyTdihqqnu3RDiRCz1XmpMUVwxeyWzChKB5"],"license":"GPL-2.0-or-later"},"lib/UniswapX/src/lib/ExclusiveDutchOrderLib.sol":{"keccak256":"0x3e21caa4af8c032280b5d84a2e673f7d0a7c9b42758c52fef7e669282c445f20","urls":["bzz-raw://3cf71f86364d42acb5a3c24c8f21f400975dbd32c19fa3c56ee17dfbb8c9ffb0","dweb:/ipfs/QmURuzWqzfBToKj9u28xXYT4bTHNhNBWJfaj8j8M1jZUx8"],"license":"GPL-2.0-or-later"},"lib/UniswapX/src/lib/OrderInfoLib.sol":{"keccak256":"0x38672b528e63dc53f36ed82d0037110a9f5893ad0a3957e24f19fa3fdbd80015","urls":["bzz-raw://147172dbebf4bb579bc392f25666645719264c0b47378f7fc4f3a95c79bdf5a4","dweb:/ipfs/Qmd5wVnQ8rKHHQgUQzEDcAPiqrVzmNr9t2D7d1SqUg9hTo"],"license":"GPL-2.0-or-later"},"lib/forge-std/src/interfaces/IMulticall3.sol":{"keccak256":"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a","urls":["bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0","dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0xec63854014a5b4f2b3290ab9103a21bdf902a508d0f41a8573fea49e98bf571a","urls":["bzz-raw://bc5b5dc12fbc4002f282eaa7a5f06d8310ed62c1c77c5770f6283e058454c39a","dweb:/ipfs/Qme9rE2wS3yBuyJq9GgbmzbsBQsW2M2sVFqYYLw7bosGrv"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1","urls":["bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68","dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa","urls":["bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931","dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm"],"license":"MIT"},"lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"],"license":"AGPL-3.0-only"},"src/Consts.sol":{"keccak256":"0xae7872274e886cfca77692258434969ffe3e5588bd8e25cba42641a33dac785a","urls":["bzz-raw://2e133848b0f5e0c18ba2d6147368765ea7c0e4600dbcc44596e96e35c2147278","dweb:/ipfs/Qmb3hj6hjT1SyeKVwjEonNtwUdkkXwNnSNfkyNenHovLDQ"],"license":"MIT"},"src/LiquidityHub.sol":{"keccak256":"0x718ecab2f0de63752f24e4ca2b84786ca95b066f1b37445f6cf295e8f185bf00","urls":["bzz-raw://acee253daa5564a6175be347258d509b65422f1163ae3b452c1131a9636b671a","dweb:/ipfs/Qmey4z5k1LusDcDs8d5cynDCjZMPnesTkE8ZGAn2vVSoew"],"license":"MIT"}},"version":1},"id":74} \ No newline at end of file diff --git a/script/Deploy.s.sol b/script/Deploy.s.sol index 9725ab7..e0d5832 100644 --- a/script/Deploy.s.sol +++ b/script/Deploy.s.sol @@ -14,31 +14,21 @@ import {PartialOrderReactor} from "src/PartialOrderReactor.sol"; import {BaseScript, Admin, Consts} from "script/base/BaseScript.sol"; contract Deploy is BaseScript { - function run() - public - returns ( - address admin, - address reactor, - address reactor2, - address executor, - address repermit, - address reactorPartial - ) - { + function run() public returns (address admin, address reactor, address reactor2, address executor) { address owner = vm.envAddress("OWNER"); address weth = vm.envAddress("WETH"); - //admin = _admin(owner, weth, bytes32(uint256(0x9563))); - //_whitelist(Admin(payable(admin))); + admin = _admin(owner, weth, bytes32(uint256(0x9563))); + _whitelist(Admin(payable(admin))); // fee00 = _admin(owner, weth, 0x55669ad6a3db66a4a3bbfe640c9faa64095a75a5228cf52464f4a449257ee6c5); // fee01 = _admin(owner, weth, 0xab1462bd378a47c5676f45ed8b1f1de08ddf212e2525b6c82e7c2c11c41590d2); - address fee02 = _admin(owner, weth, 0x668fa19c8dfec98130ebcc64b727ecf11105987af78936a05550a1f6679b16cc); + //address fee02 = _admin(owner, weth, 0x668fa19c8dfec98130ebcc64b727ecf11105987af78936a05550a1f6679b16cc); - //reactor = _reactor(bytes32(uint256(0))); - //reactor2 = _reactor(bytes32(uint256(1))); + reactor = _reactor(bytes32(uint256(0))); + reactor2 = _reactor(bytes32(uint256(1))); - //executor = _executor(reactor, admin); + executor = _executor(reactor, admin); //executor = _executor(0x35db01D1425685789dCc9228d47C7A5C049388d8, 0x000066320a467dE62B1548f46465abBB82662331); //repermit = _repermit();