0 txs
0 calls
constructor
No constructor.
functions
acceptCrocProxyRole
purefunction acceptCrocProxyRole(address, uint16 slot) pure returns (bool)
burnAmbient
payablefunction burnAmbient(uint128 price, uint128 seed, uint128 conc, uint64 seedGrowth, uint64 concGrowth, uint128 liq, bytes32 poolHash) payable returns (int128 baseFlow, int128 quoteFlow, uint128 seedOut)
burnRange
payablefunction burnRange(uint128 price, int24 priceTick, uint128 seed, uint128 conc, uint64 seedGrowth, uint64 concGrowth, int24 lowTick, int24 highTick, uint128 liq, bytes32 poolHash) payable returns (int128 baseFlow, int128 quoteFlow, uint128 seedOut, uint128 concOut)
mintAmbient
payablefunction mintAmbient(uint128 price, uint128 seed, uint128 conc, uint64 seedGrowth, uint64 concGrowth, uint128 liq, bytes32 poolHash) payable returns (int128 baseFlow, int128 quoteFlow, uint128 seedOut)
mintRange
payablefunction mintRange(uint128 price, int24 priceTick, uint128 seed, uint128 conc, uint64 seedGrowth, uint64 concGrowth, int24 lowTick, int24 highTick, uint128 liq, bytes32 poolHash) payable returns (int128 baseFlow, int128 quoteFlow, uint128 seedOut, uint128 concOut)
sweepSwap
payablefunction sweepSwap(tuple curve, int24 midTick, tuple swap, tuple pool) payable returns (tuple accum, uint128 priceOut, uint128 seedOut, uint128 concOut, uint64 ambientOut, uint64 concGrowthOut)
events
CrocKnockoutCross
event CrocKnockoutCross(bytes32 indexed pool, int24 indexed tick, bool isBid, uint32 pivotTime, uint64 feeMileage, uint160 commitEntropy)
errors
No errors.
creation bytecode
0x608060405262010011805460ff60e01b1916600160e71b17905534801561002557600080fd5b506154a9806100356000396000f3fe6080604052600436106100655760003560e01c80637b370fc2116100435780637b370fc21461011c5780637c6dfe3d146101af578063ac54c0fc146101c257600080fd5b80632370632b1461006a5780632a6f0864146100c15780632ee1158714610109575b600080fd5b61007d610078366004614c69565b6101f2565b60408051600f95860b81529390940b60208401526fffffffffffffffffffffffffffffffff9182169383019390935290911660608201526080015b60405180910390f35b6100d46100cf366004614d1c565b610349565b60408051600f94850b81529290930b60208301526fffffffffffffffffffffffffffffffff16918101919091526060016100b8565b6100d4610117366004614d1c565b6103da565b61012f61012a366004614fa1565b610453565b604080518751600f90810b82526020808a015190910b90820152878201516fffffffffffffffffffffffffffffffff90811692820192909252606097880151821697810197909752948516608087015292841660a0860152921660c084015267ffffffffffffffff91821660e084015216610100820152610120016100b8565b61007d6101bd366004614c69565b6104b2565b3480156101ce57600080fd5b506101e26101dd3660046150db565b6105e1565b60405190151581526020016100b8565b6040805160a08101825260008082526020820181905291810182905260608101829052608081018290528190819081908e81600001906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff16815250508c81602001906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff16815250508b81604001906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff16815250508a816060019067ffffffffffffffff16908167ffffffffffffffff168152505089816080019067ffffffffffffffff16908167ffffffffffffffff1681525050610321818f8b8b8b8b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166105f0565b80955081965050508060400151915080602001519250509a509a509a509a9650505050505050565b6040805160a0810182526fffffffffffffffffffffffffffffffff8981168252888116602083015287169181019190915267ffffffffffffffff85811660608301528416608082015260008054909182918291906103c29082908890889073ffffffffffffffffffffffffffffffffffffffff1661066f565b602090920151909c919b509950975050505050505050565b6040805160a0810182526fffffffffffffffffffffffffffffffff8981168252888116602083015287169181019190915267ffffffffffffffff85811660608301528416608082015260008054909182918291906103c29082908890889073ffffffffffffffffffffffffffffffffffffffff166106c2565b60408051608081018252600080825260208201819052918101829052606081018290529080808080610488868b8b8b8b610714565b50508751602089015160408a015160608b01516080909b0151969b929a9199509750955092505050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081018290528190819081908e81600001906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff16815250508c81602001906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff16815250508b81604001906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff16815250508a816060019067ffffffffffffffff16908167ffffffffffffffff168152505089816080019067ffffffffffffffff16908167ffffffffffffffff1681525050610321818f8b8b8b8b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff166108ab565b61ffff81166005145b92915050565b6000806000610621858a8a8a6106178b6fffffffffffffffffffffffffffffffff16610930565b8f60800151610a06565b905061063184868a8a8a86610a4e565b61063f858989898589610ad6565b60008061064e8c898c8c610c3a565b9150915061065c8282610c6e565b909d909c509a5050505050505050505050565b60008060006106848486888a60600151610cb3565b90506106968582896060015187610da5565b6000806106a38984610dba565b915091506106b18282610df9565b945094505050505b94509492505050565b60008060006106d78486888a60600151610e44565b90506106e98582896060015187610f21565b6000806106f68984610f32565b915091506107048282610c6e565b909a909950975050505050505050565b815161074f5781608001516fffffffffffffffffffffffffffffffff1684600001516fffffffffffffffffffffffffffffffff161015610780565b81608001516fffffffffffffffffffffffffffffffff1684600001516fffffffffffffffffffffffffffffffff1611155b6107eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f534400000000000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60015b80156108a35760008061080a8460200151866000015188610f69565b855191935091506108219088908a90889086610faf565b61082b878661104f565b9250821561089c57801561088257600061084e85602001518488600001516110ec565b92839150600282810b91900b148061087f578551610872908a908c908a9088610faf565b61087c898861104f565b94505b50505b821561089c576108998883898888602001516111db565b95505b50506107ee565b505050505050565b60008060006108dc858a8a8a6108d28b6fffffffffffffffffffffffffffffffff16610930565b8f60800151611278565b905060006108ee85878b8b8b876112d2565b90506108fe868a8a8a868a61138d565b60008061090e8d8a858e8e611449565b9150915061091c8282610df9565b955095505050505097509795505050505050565b6000600a82901c6e3fffffffffffffffffffffffffffff8116906ffffffffffffffffffffffffffffffc00841690600116158080156109805750846fffffffffffffffffffffffffffffffff1682145b801561099757506bffffffffffffffffffffffff83105b6109fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f464400000000000000000000000000000000000000000000000000000000000060448201526064016107e2565b50909392505050565b6000610a1487878785611478565b610a2087878685611478565b610a2b87868561152a565b610a36878585611595565b610a438787878786611620565b979650505050505050565b60408051606088901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020808301919091526034820188905260e887811b605484015286901b60578301528251603a818403018152605a909201835281519181019190912060009081526201000d90915220610acd81848461164e565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff8281169116146108a357600080546040517f0f382c0e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260248101899052600288810b604483015287900b60648201526fffffffffffffffffffffffffffffffff8616608482015267ffffffffffffffff851660a482015290831690630f382c0e9060c4015b6020604051808303816000875af1158015610bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd19190615105565b905080610acd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f4c5000000000000000000000000000000000000000000000000000000000000060448201526064016107e2565b6000806000806000610c52896000015189898961178c565b925092509250610c63898983611890565b6106b18383836118ba565b600080610c8c846fffffffffffffffffffffffffffffffff16611932565b610ca7846fffffffffffffffffffffffffffffffff16611932565b915091505b9250929050565b600080610cc08686611966565b9050610cde6fffffffffffffffffffffffffffffffff85168461198e565b81549092506fffffffffffffffffffffffffffffffff90811690831610610d3f5780547fffffffffffffffffffffffff0000000000000000000000000000000000000000811682556fffffffffffffffffffffffffffffffff169150610d9c565b805482908290600090610d659084906fffffffffffffffffffffffffffffffff16615151565b92506101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505b50949350505050565b610db48460008086868661138d565b50505050565b600080610dc784846119dc565b9092509050610cac84610deb6fffffffffffffffffffffffffffffffff8616611932565b610df49061517a565b611a4f565b600080610e17846fffffffffffffffffffffffffffffffff16611932565b610e209061517a565b610e3b846fffffffffffffffffffffffffffffffff16611932565b610ca79061517a565b600080610e518686611966565b9050610e6f6fffffffffffffffffffffffffffffffff85168461198e565b8154909250610e90906fffffffffffffffffffffffffffffffff1683611a8e565b81547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff91909116178155610ed4611ab3565b815463ffffffff91909116700100000000000000000000000000000000027fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff909116179055949350505050565b6000806108a3868383888888610ad6565b600080600080610f4286866119dc565b91509150610f508686611ad2565b610f5c828260016118ba565b9350935050509250929050565b6000806000610f788685611af5565b90506000610f8a600286900b87611b1b565b9050600285900b60081d610fa087838386611b57565b90999098509650505050505050565b6000610fc48285608001518660000151611ba6565b90506000806000610fe0898860600151888a6020015188611c21565b60208a01519295509093509150610ffb908990858585611c6d565b61101489886020015189600001518a6060015188611cd8565b6fffffffffffffffffffffffffffffffff1660608a01526020890151919450925061104490899085856000611c6d565b505050505050505050565b600080826000015161108f5782608001516fffffffffffffffffffffffffffffffff1684600001516fffffffffffffffffffffffffffffffff16116110bf565b82608001516fffffffffffffffffffffffffffffffff1684600001516fffffffffffffffffffffffffffffffff16105b90508080156110e45750600083606001516fffffffffffffffffffffffffffffffff16115b949350505050565b60008180156111015750600283900b627fffff145b156111105750627fffff6111d4565b811580156111415750600283900b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000145b1561116d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000006111d4565b60008061117a8585611d5a565b9150915060008061118d88858589611d92565b91509150806111a1575092506111d4915050565b6111ad88858589611dfe565b9092509050806111c2575092506111d4915050565b6111cd888588611e7b565b9450505050505b9392505050565b60006111e685611e9b565b6111f157508361126f565b6112018486856000015185611eda565b60008060006112298660200151876000015188606001518a611f86909392919063ffffffff16565b9194509250905061123b898484612061565b6060860180518290036fffffffffffffffffffffffffffffffff16905285516112675760018803611269565b875b93505050505b95945050505050565b600080611286888786612098565b90506000611295898787612151565b90506112a48989898988611620565b925081156112b6576112b68988612200565b80156112c6576112c68987612200565b50509695505050505050565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606089901b166020808301919091526034820188905260e887811b605484015286901b60578301528251808303603a018152605a909201835281519181019190912060009081526201000d9091529081208054611376907801000000000000000000000000000000000000000000000000900463ffffffff168861226f565b611381818585612331565b98975050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff8281169116146108a357600080546040517f9534070300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260248101899052600288810b604483015287900b60648201526fffffffffffffffffffffffffffffffff8616608482015267ffffffffffffffff851660a48201529083169063953407039060c401610b8e565b60008061145887878686612498565b909250905061146a82828989896124e6565b909890975095505050505050565b6000611484858461258d565b80549091506bffffffffffffffffffffffff161580156114c1575080546c0100000000000000000000000090046bffffffffffffffffffffffff16155b15611523578360020b8360020b1261151957805477ffffffffffffffffffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000067ffffffffffffffff8416021781555b61152385846125e0565b5050505050565b6000611536848461258d565b80549091506bffffffffffffffffffffffff1660006115558285612668565b83547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff91909116179092555050505050565b60006115a1848461258d565b80549091506c0100000000000000000000000090046bffffffffffffffffffffffff1660006115d08285612668565b83546bffffffffffffffffffffffff9091166c01000000000000000000000000027fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff909116179092555050505050565b60008061162f87868886612689565b9050600061163f88868987612689565b91909103979650505050505050565b82546fffffffffffffffffffffffffffffffff166000811561169057508354700100000000000000000000000000000000900467ffffffffffffffff16611694565b5060005b60006116b26fffffffffffffffffffffffffffffffff841686611a8e565b905060006116cc67ffffffffffffffff8616878587612710565b905060006116d8611ab3565b885463ffffffff9091167801000000000000000000000000000000000000000000000000027fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff909416700100000000000000000000000000000000027fffffffffffffffff0000000000000000000000000000000000000000000000009092166fffffffffffffffffffffffffffffffff909516949094171791909116919091179095555050505050565b600080600080600061179e87876127c1565b91509150816fffffffffffffffffffffffffffffffff16896fffffffffffffffffffffffffffffffff1610156117f2576117eb6fffffffffffffffffffffffffffffffff89168383612838565b9350611884565b806fffffffffffffffffffffffffffffffff16896fffffffffffffffffffffffffffffffff16106118415761183a6fffffffffffffffffffffffffffffffff89168383612883565b9450611884565b61185e6fffffffffffffffffffffffffffffffff89168a83612838565b935061187d6fffffffffffffffffffffffffffffffff8916838b612883565b9450600192505b50509450945094915050565b6118b5836118af846fffffffffffffffffffffffffffffffff16611932565b836128cb565b505050565b6000806000856fffffffffffffffffffffffffffffffff1611806118db5750825b6118e65760006118f1565b6118f16004866151b8565b6000856fffffffffffffffffffffffffffffffff16118061190f5750835b61191a576000611925565b6119256004866151b8565b915091505b935093915050565b60006f80000000000000000000000000000000826fffffffffffffffffffffffffffffffff161061196257600080fd5b5090565b60006201000e6000611978858561290e565b8152602001908152602001600020905092915050565b6000660100000000000075ffffffffffffffffffffffffffffffff000000000000603085901b168267ffffffffffffffff8516830182816119d1576119d16151e1565b049695505050505050565b60008060006119ef848660600151612969565b8551909150611a32906fffffffffffffffffffffffffffffffff80841691160260401c5b77ffffffffffffffffffffffffffffffffffffffffffffffff166129be565b9250611a45611a138287600001516129f7565b9150509250929050565b6020820151611a70906fffffffffffffffffffffffffffffffff1682612a40565b6fffffffffffffffffffffffffffffffff1660209092019190915250565b8082016fffffffffffffffffffffffffffffffff80841690821610156105ea57600080fd5b60004263ffffffff811115611acd5763ffffffff91505090565b919050565b611af182610df4836fffffffffffffffffffffffffffffffff16611932565b5050565b600080611b028484612aad565b6000908152620100076020526040902054949350505050565b600080611b2784612af8565b9050600083611b37576000611b3a565b60015b60ff16905080611b4a8386612b06565b60ff160195945050505050565b6000808080611b6785888a612b1d565b91509150611b76888287612b5b565b925082611b8f57600886901b60020b60ff831601611b99565b611b998887612b8e565b9350505094509492505050565b600080611bb4858585612bf5565b9050620100026fffffffffffffffffffffffffffffffff82161015611bdf57620100029150506111d4565b6f0ffff5433e2b3d8211706e6102aa94726fffffffffffffffffffffffffffffffff8216106110e457506f0ffff5433e2b3d8211706e6102aa947190506111d4565b6000806000806000611c3f8a8a8a602001518b604001518b8b612cd8565b9092509050611c4f8a8389612d1f565b611c5a828289612d92565b9450945094505050955095509592505050565b611c78858484612061565b8315611caa578085606001818151611c9091906151b8565b6fffffffffffffffffffffffffffffffff16905250611523565b8085604001818151611cbc91906151b8565b6fffffffffffffffffffffffffffffffff169052505050505050565b6000808080611ce989878a88612dea565b90506fffffffffffffffffffffffffffffffff808716908216108015611d2d57611d168a878b8b8b612e35565b91965094509250611d288a8488612e83565b611d4d565b611d3a8a838b8b8b612f12565b91965094509250611d4d8a848a89612f4c565b5050955095509592505050565b600080600083611d7457611d6f600186615210565b611d76565b845b9050611d848160020b613011565b9250611a458160020b613028565b6000806000620100076000611da8898989613044565b81526020810191909152604001600090812054915080611dc9838288612b1d565b915091508015611de35760006001945094505050506106b9565b611dee8888846130a2565b9960009950975050505050505050565b6000806000620100066000611e1389896130cb565b81526020019081526020016000205490506000611e308686612b06565b9050600080611e438460ff851689612b1d565b915091508015611e5e576000600195509550505050506106b9565b611e6a8a8a848a611d92565b955095505050505094509492505050565b600081611e9157611e8c84846130df565b6110e4565b6110e4848461316b565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000600283900b1380156105ea575050627fffff60029190910b1290565b600080611eed83868689608001516131b5565b60408801519193509150611f13906fffffffffffffffffffffffffffffffff1683612a40565b6fffffffffffffffffffffffffffffffff16604087015280156108a3576000611f428487878a608001516132f4565b6040880151909150611f66906fffffffffffffffffffffffffffffffff1682612a40565b6fffffffffffffffffffffffffffffffff16604088015250505050505050565b600080600080611fa0611f9889613450565b895189613475565b9050806fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff161161202f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f424400000000000000000000000000000000000000000000000000000000000060448201526064016107e2565b851561204c576120408888836134e9565b93509350935050612057565b612040888883613585565b9450945094915050565b81836000018181516120739190615251565b600f0b90525060208301805182919061208d908390615251565b600f0b905250505050565b6000806120a5858561258d565b80549091506bffffffffffffffffffffffff1660006120c4828661362f565b83547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff82169081178555909150158015612129575082546c0100000000000000000000000090046bffffffffffffffffffffffff16155b1561214457612138878761363b565b600193505050506111d4565b5060009695505050505050565b60008061215e858561258d565b80549091506c0100000000000000000000000090046bffffffffffffffffffffffff16600061218d828661362f565b83547fffffffffffffffff000000000000000000000000ffffffffffffffffffffffff166c010000000000000000000000006bffffffffffffffffffffffff8316908102919091178555909150158015612129575082546bffffffffffffffffffffffff1661214457612138878761363b565b620100026000838360405160200161222592919091825260e81b602082015260230190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181528151602092830120835290820192909252016000908120555050565b600a60008361227c611ab3565b612286919061529f565b9050600061229483836152bc565b905060ff63ffffffff8216116115235760008481526201000960205260409020546601000000000000900460ff1663ffffffff82161015611523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600160248201527f4a0000000000000000000000000000000000000000000000000000000000000060448201526064016107e2565b82546000906fffffffffffffffffffffffffffffffff168161235382866136c4565b86549091506123839067ffffffffffffffff868116917001000000000000000000000000000000009004166136d0565b92506fffffffffffffffffffffffffffffffff8116156124685785547c0100000000000000000000000000000000000000000000000000000000900460ff1615612429576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f4f5200000000000000000000000000000000000000000000000000000000000060448201526064016107e2565b85547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff821617865561248f565b85547fffffff00000000000000000000000000000000000000000000000000000000001686555b50509392505050565b60008060006124ad876000015187878761178c565b919450925090506124dc876124d36fffffffffffffffffffffffffffffffff8916611932565b6118af9061517a565b5094509492505050565b60008067ffffffffffffffff8316156125825760006125396fffffffffffffffffffffffffffffffff861667ffffffffffffffff86160260301c71ffffffffffffffffffffffffffffffffffff1661374d565b90506fffffffffffffffffffffffffffffffff811615612580576000806125608884610dba565b909250905061256f828b6151b8565b995061257b818a6151b8565b985050505b505b509495939450505050565b600062010002600084846040516020016125b492919091825260e81b602082015260230190565b604051602081830303815290604052805190602001208152602001908152602001600020905092915050565b60006125ee8260020b613028565b60ff166001901b905060006126058360020b612af8565b60ff166001901b90508162010006600061261f8787613780565b8152602001908152602001600020600082825417925050819055508062010007600061264b8787612aad565b815260208101919091526040016000208054909117905550505050565b8082016bffffffffffffffffffffffff80841690821610156105ea57600080fd5b600080612696868661258d565b90508360020b8560020b13156126dd5780546126d8907801000000000000000000000000000000000000000000000000900467ffffffffffffffff16846152df565b612706565b80547801000000000000000000000000000000000000000000000000900467ffffffffffffffff165b9695505050505050565b6000816fffffffffffffffffffffffffffffffff166000036127335750836110e4565b836fffffffffffffffffffffffffffffffff166000036127545750816110e4565b8267ffffffffffffffff168567ffffffffffffffff16036127765750836110e4565b600061278c868661278786826151b8565b6137ac565b9050600061279f8585612787818a6151b8565b90506127ac816001615300565b6127b7836001615300565b610a439190615300565b6000808360020b8360020b136127d657600080fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5d892600285900b121561280757600080fd5b620cb14a600284900b131561281b57600080fd5b612824846137f6565b915061282f836137f6565b90509250929050565b6000826fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff16111561287857612871848385613b68565b90506111d4565b612871848484613b68565b600080826fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff16116128b9578383036128bd565b8284035b905061126f85826001613be7565b80156118b55760408301516128f2906fffffffffffffffffffffffffffffffff1683612a40565b6fffffffffffffffffffffffffffffffff166040840152505050565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152603481018290526000906054015b60405160208183030381529060405280519060200120905092915050565b600066010000000000006fffffffffffffffffffffffffffffffff80851667ffffffffffffffff851683010290603082901c9081111561126f576fffffffffffffffffffffffffffffffff93505050506105ea565b806fffffffffffffffffffffffffffffffff811677ffffffffffffffffffffffffffffffffffffffffffffffff821614611acd57600080fd5b60006fffffffffffffffffffffffffffffffff821677ffffffffffffffffffffffffffffffff0000000000000000604085901b1681612a3857612a386151e1565b049392505050565b60008082600f0b1215612a7757508082016fffffffffffffffffffffffffffffffff80841690821610612a7257600080fd5b6105ea565b826fffffffffffffffffffffffffffffffff168284019150816fffffffffffffffffffffffffffffffff1610156105ea57600080fd5b600080600283900b60081d90508381604051602001612ad992919091825260f01b602082015260220190565b6040516020818303038152906040528051906020012091505092915050565b60006105ea61010083615321565b600081612b16578260ff036111d4565b5090919050565b600080612b2b858585613c3a565b94505083158061192a5782612b4857612b4385613c5e565b612b51565b612b5185613d0b565b9150935093915050565b60008315612b6a5750816111d4565b6000612b768382613eee565b905080612b83578361126f565b506000949350505050565b60008215612be857612b9f83613f21565b60010b8260010b14612bd857612bd3612bb9836001615343565b612bc38515613f57565b60ff1660089190911b60020b0190565b612be1565b612be183613f6d565b90506105ea565b600882901b60020b612be1565b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5d892600285900b131580612c315750620cb14a600285900b12155b15612c3d5750816111d4565b8115612c90576001600081612c51876137f6565b039050846fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1610612c855784612c87565b805b925050506111d4565b6000612c9b856137f6565b9050836fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1611612cce5783612cd0565b805b9150506111d4565b60008080612ce889898787613fa4565b9050610100620f42406fffffffffffffffffffffffffffffffff831661ffff8a16020460ff88168102919091049081900390610704565b6000612d2a84613450565b9050806fffffffffffffffffffffffffffffffff16600003612d4c5750505050565b8351821590600090612d619084908785613fe6565b90506000612d758488600001518486614036565b905067ffffffffffffffff811615610acd57610acd878285614050565b600080808585018415612dc157612dba816fffffffffffffffffffffffffffffffff16611932565b9250612ddf565b612ddc816fffffffffffffffffffffffffffffffff16611932565b93505b509195909450915050565b600080612df8868585614134565b9050846fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1611612e2b5780612706565b5092949350505050565b6000806000806000612e488a8a8a61416a565b91509150600080612e5b84848c8c6141ea565b91509150612e6e8c8b8b8b8f8787614221565b96509650965050505050955095509592505050565b82516fffffffffffffffffffffffffffffffff908116818316149083161515818015612eac5750805b611523576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f525000000000000000000000000000000000000000000000000000000000000060448201526064016107e2565b6000806000806000612f268a8a8a8a6142b9565b91509150600080612f398b858c8c614333565b91509150612e6e8c8b8b8b878787614221565b600082612f715784516fffffffffffffffffffffffffffffffff808416911611612f8b565b84516fffffffffffffffffffffffffffffffff8084169116105b90506fffffffffffffffffffffffffffffffff841615818015612fab5750805b6108a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f524600000000000000000000000000000000000000000000000000000000000060448201526064016107e2565b60006105ea6130238360020b60101d90565b614352565b600061010061303a8360020b60081d90565b6105ea9190615383565b60008061306161305385614372565b60081b60010b60ff85160190565b9050848160405160200161308292919091825260f01b602082015260220190565b604051602081830303815290604052805190602001209150509392505050565b60006110e46130b085614372565b60101b60020b61ff00600886901b1660030b0160ff84160190565b60006111d4836130da84614372565b6143b1565b600060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83015b60ff8160ff161015613160576000806131238784866000611dfe565b9150915080613137575092506105ea915050565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01613107565b506110e46000613f6d565b600080600183015b60ff8116156131aa5760008061318c8784866001611dfe565b91509150806131a0575092506105ea915050565b5050600101613173565b506110e46001613f6d565b60008060006131c4878761258d565b80549091506000906131f7906bffffffffffffffffffffffff808216916c010000000000000000000000009004166143d2565b90508561320c576132078161517a565b61320e565b805b825490945067ffffffffffffffff868116780100000000000000000000000000000000000000000000000090920416146132be578154613274907801000000000000000000000000000000000000000000000000900467ffffffffffffffff16866152df565b825467ffffffffffffffff9190911678010000000000000000000000000000000000000000000000000277ffffffffffffffffffffffffffffffffffffffffffffffff9091161782555b856132cf57815460011615156132e7565b81546c01000000000000000000000000900460011615155b9250505094509492505050565b610dad5460009073ffffffffffffffffffffffffffffffffffffffff1661331a57600080fd5b6000806001610dac015460405160248101899052600288900b6044820152861515606482015267ffffffffffffffff8616608482015273ffffffffffffffffffffffffffffffffffffffff9091169060a401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f3c05c62100000000000000000000000000000000000000000000000000000000179052516133ed91906153a5565b600060405180830381855af49150503d8060008114613428576040519150601f19603f3d011682016040523d82523d6000602084013e61342d565b606091505b50915091508161343c57600080fd5b80806020019051810190610a4391906153d4565b60008061346583602001518460600151612969565b90506111d4818460400151611a8e565b600081156134955750600167ffffffffffffffff604085901c16016111d4565b60006134a485600186036129f7565b905060006134b286866129f7565b9050808203600177ffffffffffffffffffffffffffffffffffffffffffffffff8216016134de816143ee565b9450505050506111d4565b600080600060016f0ffff5433e2b3d8211706e6102aa9472036fffffffffffffffffffffffffffffffff1686600001516fffffffffffffffffffffffffffffffff16101561354b5785516001016fffffffffffffffffffffffffffffffff1686525b6000915061356a846fffffffffffffffffffffffffffffffff16611932565b92508461357857600061357a565b835b905093509350939050565b6000806000620100026fffffffffffffffffffffffffffffffff1686600001516fffffffffffffffffffffffffffffffff1611156135f65785517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016fffffffffffffffffffffffffffffffff1686525b60009250613615846fffffffffffffffffffffffffffffffff16611932565b915084613622578361357a565b6000905093509350939050565b60006111d482846153f7565b60006136498260020b613028565b60ff166001901b19905060006136618360020b612af8565b60ff166001901b19905060006136778585612aad565b6000818152620100076020526040812080548516908190559192508190036108a35760006136a58787613780565b6000908152620100066020526040902080548616905550505050505050565b60006111d48284615151565b600060026136de8184615300565b67ffffffffffffffff168467ffffffffffffffff161115613716578061370484866152df565b61370e91906152df565b9150506105ea565b60009150506105ea565b5092915050565b67ffffffffffffffff166fffffffffffffffffffffffffffffffff919091160260301c90565b806fffffffffffffffffffffffffffffffff811671ffffffffffffffffffffffffffffffffffff821614611acd57600080fd5b600080600283900b60101d90508381604051602001612ad992919091825260f81b602082015260210190565b6000816fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff168567ffffffffffffffff1602816137ed576137ed6151e1565b04949350505050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5d892600283900b128015906138335750620cb14a600283900b13155b61383c57600080fd5b6000808360020b12613851578260020b613859565b8260020b6000035b905060008160011660000361387f57700100000000000000000000000000000000613891565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156138c5576ffff97272373d413259a46990580e213a0260801c5b60048216156138e4576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613903576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613922576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613941576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613960576fff2ea16466c96a3843ec78b326b528610260801c5b608082161561397f576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561399f576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156139bf576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156139df576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156139ff576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613a1f576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613a3f576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613a5f576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613a7f576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613aa0576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613ac0576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615613adf576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615613afc576b048a170391f7dc42444e8fa20260801c5b60008460020b1315613b3b57807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81613b3757613b376151e1565b0490505b68010000000000000000810615613b53576001613b56565b60005b60ff16604082901c0192505050919050565b600080613b758385615151565b90506000613b8386856129f7565b77ffffffffffffffffffffffffffffffffffffffffffffffff1690506000856fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff1683613bd2919061541c565b613bdc9190615433565b9050610a43816143ee565b60006110e482613c1a57613bfb85856129f7565b77ffffffffffffffffffffffffffffffffffffffffffffffff166143ee565b6fffffffffffffffffffffffffffffffff8086169085160260401c613bfb565b600081613c505761ffff831684811b901c6110e4565b505061ffff1690811c901b90565b6000808211613c6c57600080fd5b7001000000000000000000000000000000008210613c8c57608091821c91015b680100000000000000008210613ca457604091821c91015b6401000000008210613cb857602091821c91015b620100008210613cca57601091821c91015b6101008210613cdb57600891821c91015b60108210613ceb57600491821c91015b60048210613cfb57600291821c91015b60028210611acd57600101919050565b6000808211613d1957600080fd5b5060ff6fffffffffffffffffffffffffffffffff821615613d5b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8001613d63565b608082901c91505b67ffffffffffffffff821615613d9a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc001613da2565b604082901c91505b63ffffffff821615613dd5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001613ddd565b602082901c91505b61ffff821615613e0e577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001613e16565b601082901c91505b60ff821615613e46577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff801613e4e565b600882901c91505b600f821615613e7e577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc01613e86565b600482901c91505b6003821615613eb6577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01613ebe565b600282901c91505b6001821615611acd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01919050565b6000806000613f02858560ff166001612b1d565b915060ff1691508015801561126f57508360ff16821495945050505050565b600081613f4e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80006105ea565b617fff92915050565b600081613f655760006105ea565b60ff92915050565b600081613f9a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000006105ea565b627fffff92915050565b83516000906fffffffffffffffffffffffffffffffff9081169083161181613fce87878787612dea565b9050610a43613fdc88613450565b885183858961440d565b6000600281613ff6878786613475565b6140009083615447565b9050806fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff16111561214457808503610a43565b600080614044868685613be7565b90506127068185614526565b825161405d90838361463c565b6fffffffffffffffffffffffffffffffff168352606083015161408a9067ffffffffffffffff16836146b6565b67ffffffffffffffff908116606085018190526000916140ad9190851690614719565b905060006140f66140dd8387604001516fffffffffffffffffffffffffffffffff1661372790919063ffffffff16565b71ffffffffffffffffffffffffffffffffffff166143ee565b90506141028282614761565b856080018181516141139190615300565b67ffffffffffffffff16905250602085018051829190611cbc9083906151b8565b60008061414085613450565b90508361415b5761415681866000015185612838565b61126f565b61126f81866000015185612883565b600080600061417886613450565b865190915060009061419e906fffffffffffffffffffffffffffffffff84169088612883565b87519091506000906141c4906fffffffffffffffffffffffffffffffff85169089612838565b905085156141d857909350915082826141df565b9350915081835b505050935093915050565b6000806141f9868686866147d4565b9092509050614209600483615251565b9150614216600482615251565b905094509492505050565b600080600080614232868b8b614877565b9050876fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff16106142685760009150614275565b6142728189615151565b91505b896142805784614282565b855b93508961428f5785614291565b845b6fffffffffffffffffffffffffffffffff909716909a52919994985090965092945050505050565b60008060006142c787613450565b90506142da8760000151828888886148ad565b91508415614307578651614302906fffffffffffffffffffffffffffffffff83169084612838565b614327565b8651614327906fffffffffffffffffffffffffffffffff83169084612883565b92505094509492505050565b600080614342868686866147d4565b9092509050614216600482615251565b6000808260000b121561436b578160000b6080016105ea565b5060800190565b600060808260ff161061438857608082036105ea565b5060ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800190565b6000828260405160200161294b92919091825260f81b602082015260210190565b60006143dd82614949565b6143e684614949565b039392505050565b806fffffffffffffffffffffffffffffffff81168114611acd57600080fd5b6000856fffffffffffffffffffffffffffffffff166000036144315750600061126f565b600061443f87878515613be7565b6fffffffffffffffffffffffffffffffff1690506000614460888886613be7565b6fffffffffffffffffffffffffffffffff16905060008415158615151461449b57866fffffffffffffffffffffffffffffffff1682036144b1565b866fffffffffffffffffffffffffffffffff1682015b9050806000036144d6576fffffffffffffffffffffffffffffffff935050505061126f565b6000816fffffffffffffffffffffffffffffffff8b168002816144fb576144fb6151e1565b049050614518848211614510578185036143ee565b8482036143ee565b9a9950505050505050505050565b60006fffffffffffffffffffffffffffffffff8316158061456a5750826fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff16115b15614577575060006105ea565b600061458383856151b8565b905060006145a36fffffffffffffffffffffffffffffffff831686614965565b90506145b88167ffffffffffffffff16614a2e565b925066010000000000008367ffffffffffffffff1610614634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f494600000000000000000000000000000000000000000000000000000000000060448201526064016107e2565b505092915050565b6000660100000000000067ffffffffffffffff84168101831561467f576fffffffffffffffffffffffffffffffff86168102603081901c6134de600182016143ee565b75ffffffffffffffffffffffffffffffff000000000000603087901b168181816146ab576146ab6151e1565b0493505050506111d4565b6000660100000000000067ffffffffffffffff848116820181851683010290603082901c907fffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000082019081106127065767ffffffffffffffff9450505050506105ea565b6000660100000000000067ffffffffffffffff831681016dffffffffffffffff000000000000603086901b1683828281614755576147556151e1565b04979650505050505050565b6000816fffffffffffffffffffffffffffffffff16600003614785575060006105ea565b6147908260016151b8565b6fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff168467ffffffffffffffff166147ca919061541c565b6111d49190615433565b6000808215158415150361482b576147fd866fffffffffffffffffffffffffffffffff16611932565b614818866fffffffffffffffffffffffffffffffff16611932565b6148219061517a565b90925090506106b9565b614846866fffffffffffffffffffffffffffffffff16611932565b61484f9061517a565b61486a866fffffffffffffffffffffffffffffffff16611932565b9097909650945050505050565b600080821515841515146148935761488e8561517a565b614895565b845b9050600081600f0b12156110e45760009150506111d4565b600080836148c6576148c187878786614a72565b6148d2565b6148d287878786614ad9565b90506f0ffff5433e2b3d8211706e6102aa94726fffffffffffffffffffffffffffffffff8216106149205761491860016f0ffff5433e2b3d8211706e6102aa9472615151565b91505061126f565b620100026fffffffffffffffffffffffffffffffff82161015612706576201000291505061126f565b6000600a82901b6d03fffffffffffffffffffffff800166105ea565b600079ffffffffffffffffffffffffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff84161080156149c65750816fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff1610155b6149cf57600080fd5b660100000000000075ffffffffffffffffffffffffffffffff000000000000603085901b166000826fffffffffffffffffffffffffffffffff86168381614a1857614a186151e1565b0403905082811061126f578293505050506105ea565b600066010000000000008267ffffffffffffffff1610614a4d57600080fd5b5067ffffffffffffffff8116800260331c60019190911c677fffffffffffffff160390565b600080614a7e86614bca565b90506000614a8f8287878715614ad9565b9050806fffffffffffffffffffffffffffffffff16600003614ac5576f0ffff5433e2b3d8211706e6102aa9472925050506110e4565b614ace81614bca565b610a439060016151b8565b6000836fffffffffffffffffffffffffffffffff16600003614b0c57506fffffffffffffffffffffffffffffffff6110e4565b6000614b1884866129f7565b90506fffffffffffffffffffffffffffffffff77ffffffffffffffffffffffffffffffffffffffffffffffff82161115614b65576fffffffffffffffffffffffffffffffff9150506110e4565b808315614b7f57614b7681886151b8565b925050506110e4565b866fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1610614bb5576000925050506110e4565b614bc08160016151b8565b614b769088615151565b600080826fffffffffffffffffffffffffffffffff1670010000000000000000000000000000000081614bff57614bff6151e1565b0490506fffffffffffffffffffffffffffffffff8111156105ea57600080fd5b80356fffffffffffffffffffffffffffffffff81168114611acd57600080fd5b8035600281900b8114611acd57600080fd5b803567ffffffffffffffff81168114611acd57600080fd5b6000806000806000806000806000806101408b8d031215614c8957600080fd5b614c928b614c1f565b9950614ca060208c01614c3f565b9850614cae60408c01614c1f565b9750614cbc60608c01614c1f565b9650614cca60808c01614c51565b9550614cd860a08c01614c51565b9450614ce660c08c01614c3f565b9350614cf460e08c01614c3f565b9250614d036101008c01614c1f565b91506101208b013590509295989b9194979a5092959850565b600080600080600080600060e0888a031215614d3757600080fd5b614d4088614c1f565b9650614d4e60208901614c1f565b9550614d5c60408901614c1f565b9450614d6a60608901614c51565b9350614d7860808901614c51565b9250614d8660a08901614c1f565b915060c0880135905092959891949750929550565b6040516060810167ffffffffffffffff81118282101715614de5577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b60405160e0810167ffffffffffffffff81118282101715614de5577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715614de5577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8015158114614e8d57600080fd5b50565b803560ff81168114611acd57600080fd5b803561ffff81168114611acd57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff81168114611acd57600080fd5b6000818303610120811215614eeb57600080fd5b614ef3614d9b565b915060e0811215614f0357600080fd5b50614f0c614deb565b614f1583614e90565b8152614f2360208401614ea1565b6020820152614f3460408401614e90565b6040820152614f4560608401614ea1565b6060820152614f5660808401614e90565b6080820152614f6760a08401614e90565b60a0820152614f7860c08401614e90565b60c0820152815260e08201356020820152614f966101008301614eb3565b604082015292915050565b600080600080848603610280811215614fb957600080fd5b60a0811215614fc757600080fd5b614fcf614e35565b614fd887614c1f565b8152614fe660208801614c1f565b6020820152614ff760408801614c1f565b604082015261500860608801614c51565b606082015261501960808801614c51565b6080820152945061502c60a08701614c3f565b935060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408201121561505e57600080fd5b50615067614e35565b60c086013561507581614e7f565b815260e086013561508581614e7f565b60208201526150976101008701614e90565b60408201526150a96101208701614c1f565b60608201526150bb6101408701614c1f565b608082015291506150d0866101608701614ed7565b905092959194509250565b600080604083850312156150ee57600080fd5b6150f783614eb3565b915061282f60208401614ea1565b60006020828403121561511757600080fd5b81516111d481614e7f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6fffffffffffffffffffffffffffffffff82811682821603908082111561372057613720615122565b600081600f0b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081036151af576151af615122565b60000392915050565b6fffffffffffffffffffffffffffffffff81811683821601908082111561372057613720615122565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600282810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff821317156105ea576105ea615122565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff81137fffffffffffffffffffffffffffffffff80000000000000000000000000000000821217156105ea576105ea615122565b63ffffffff82811682821603908082111561372057613720615122565b600063ffffffff808416806152d3576152d36151e1565b92169190910492915050565b67ffffffffffffffff82811682821603908082111561372057613720615122565b67ffffffffffffffff81811683821601908082111561372057613720615122565b60008260020b80615334576153346151e1565b808360020b0791505092915050565b600181810b9083900b01617fff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000821217156105ea576105ea615122565b60008260010b80615396576153966151e1565b808360010b0791505092915050565b6000825160005b818110156153c657602081860181015185830152016153ac565b506000920191825250919050565b6000602082840312156153e657600080fd5b815180600f0b81146111d457600080fd5b6bffffffffffffffffffffffff82811682821603908082111561372057613720615122565b80820281158282048414176105ea576105ea615122565b600082615442576154426151e1565b500490565b6fffffffffffffffffffffffffffffffff8181168382160280821691908281146146345761463461512256fea26469706673582212204dd90a9ad8685165e79a7a57d31993bcffa58d5d1bdf6e6c0c23c5c3414d838564736f6c63430008130033