0 txs
255 calls
constructor
constructor(address dex)
functions
calcImpact
viewfunction calcImpact(address base, address quote, uint256 poolIdx, bool isBuy, bool inBaseQty, uint128 qty, uint16 poolTip, uint128 limitPrice) view returns (int128 baseFlow, int128 quoteFlow, uint128 finalPrice)
dex_
viewfunction dex_() view returns (address)
events
No events.
errors
No errors.
creation bytecode
0x60a06040523480156200001157600080fd5b50604051620039c9380380620039c9833981016040819052620000349162000110565b6001600160a01b03811615801590620000ad5750806001600160a01b0316637c5196256040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000087573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000ad919062000142565b620000fe5760405162461bcd60e51b815260206004820152601360248201527f496e76616c69642043726f635377617044657800000000000000000000000000604482015260640160405180910390fd5b6001600160a01b031660805262000166565b6000602082840312156200012357600080fd5b81516001600160a01b03811681146200013b57600080fd5b9392505050565b6000602082840312156200015557600080fd5b815180151581146200013b57600080fd5b608051613825620001a460003960008181608d01528181610244015281816103df0152818161047a015281816111bd01526116b601526138256000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80634a6c44bf1461003b57806387834a0e14610088575b600080fd5b61004e6100493660046134aa565b6100d4565b60408051600f94850b81529290930b60208301526fffffffffffffffffffffffffffffffff16918101919091526060015b60405180910390f35b6100af7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161007f565b6000806000806100e68c8c8c8961015b565b905060006100f58d8d8d61031e565b6040805160a0810182526000918101919091528b151581528a151560208201526fffffffffffffffffffffffffffffffff8a8116606083015288166080820152909150610143838383610557565b9251909f929e509c50909a5050505050505050505050565b60408051610140810182526000606082018181526080830182905260a0830182905260c0830182905260e0830182905261010083018290526101208301829052825260208201819052918101919091526201000960006101bc8787876106a7565b9050600081836040516020016101dc929190918252602082015260400190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020909101207f02ce8af30000000000000000000000000000000000000000000000000000000082526004820181905291506000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302ce8af390602401602060405180830381865afa1580156102a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c49190613543565b6020808701859052865161ffff600884901c811691830191909152875160ff601885901c16604090910152875190910151919250908116908716111561031257845161ffff87166020909101525b50505050949350505050565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101829052906103548585856106a7565b90506000816201000f604051602001610377929190918252602082015260400190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020909101207f02ce8af30000000000000000000000000000000000000000000000000000000082526004820181905291506000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302ce8af390602401602060405180830381865afa15801561043b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045f9190613543565b9050600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166302ce8af36104aa85600161358b565b6040518263ffffffff1660e01b81526004016104c891815260200190565b602060405180830381865afa1580156104e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105099190613543565b6fffffffffffffffffffffffffffffffff8084168752608093841c60208801528116604087015267ffffffffffffffff81841c16606087015260c01c91850191909152509195945050505050565b60808101518251825160009283926fffffffffffffffffffffffffffffffff91821691161015901515036105905750600090508061069f565b60408051608081018252600080825260208201819052918101829052606081019190915260006105d586600001516fffffffffffffffffffffffffffffffff16610735565b905060015b801561068f576000806105f68a60200151896000015186610a88565b8b51919350915061060d908a9087908b9086610ad6565b6106178989610b76565b9250821561068857801561066e57600061063a8b60200151848b60000151610c15565b92839150600282810b91900b148061066b578b5161065e908c9089908d9088610ad6565b6106688b8b610b76565b94505b50505b82156106885761068585838b8b8e60200151610c83565b93505b50506105da565b5050805160209091015190925090505b935093915050565b60008273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106106e157600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff8087166020830152851691810191909152606081018390526080016040516020818303038152906040528051906020012090505b9392505050565b6000620100026fffffffffffffffffffffffffffffffff83161080159061077d57506f0ffff5433e2b3d8211706e6102aa94726fffffffffffffffffffffffffffffffff8316105b61078657600080fd5b77ffffffffffffffffffffffffffffffff0000000000000000604083901b166fffffffffffffffffffffffffffffffff811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c9790881196179094179092171790911717176080811061083057607f810383901c915061083a565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc5568101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14610a7957886fffffffffffffffffffffffffffffffff16610a5582610d7c565b6fffffffffffffffffffffffffffffffff161115610a735781610a7b565b80610a7b565b815b9998505050505050505050565b6000806000610a9f610a9a87866110ee565b611139565b90506000610ab1600286900b87611245565b9050600285900b60081d610ac787838386611281565b90999098509650505050505050565b6000610aeb82856080015186600001516112d0565b90506000806000610b07898860600151888a602001518861134b565b60208a01519295509093509150610b22908990858585611397565b610b3b89886020015189600001518a6060015188611403565b6fffffffffffffffffffffffffffffffff1660608a015260208901519194509250610b6b90899085856000611397565b505050505050505050565b6000808260000151610bb65782608001516fffffffffffffffffffffffffffffffff1684600001516fffffffffffffffffffffffffffffffff1611610be6565b82608001516fffffffffffffffffffffffffffffffff1684600001516fffffffffffffffffffffffffffffffff16105b9050808015610c0b5750600083606001516fffffffffffffffffffffffffffffffff16115b9150505b92915050565b6000806000610c248585611485565b91509150600080610c37888585896114c7565b9150915080610c4b5750925061072e915050565b610c5788858589611522565b909250905080610c6c5750925061072e915050565b610c77888588611592565b98975050505050505050565b6000610c8e856115b2565b610c99575083610d73565b600080610ca684886115f1565b915091506000610cb68383611759565b905060008660000151610ccc5781600003610cce565b815b6040890151909150610cf2906fffffffffffffffffffffffffffffffff1682611775565b6fffffffffffffffffffffffffffffffff16604089015260208701518751606089015160009283928392610d29928e9290916117e2565b91945092509050610d3b8d84846118c2565b60608a0180518290036fffffffffffffffffffffffffffffffff1690528951610d675760018c03610d69565b8b5b9750505050505050505b95945050505050565b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5d892600283900b12801590610db95750620cb14a600283900b13155b610dc257600080fd5b6000808360020b12610dd7578260020b610ddf565b8260020b6000035b9050600081600116600003610e0557700100000000000000000000000000000000610e17565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610e4b576ffff97272373d413259a46990580e213a0260801c5b6004821615610e6a576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615610e89576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615610ea8576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615610ec7576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615610ee6576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615610f05576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615610f25576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615610f45576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615610f65576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615610f85576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615610fa5576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615610fc5576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615610fe5576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611005576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611026576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611046576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611065576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611082576b048a170391f7dc42444e8fa20260801c5b60008460020b13156110c157807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff816110bd576110bd61359e565b0490505b680100000000000000008106156110d95760016110dc565b60005b60ff16604082901c0192505050919050565b600080600283900b60081d9050838160405160200161111a92919091825260f01b602082015260220190565b6040516020818303038152906040528051906020012091505092915050565b6040805160208101839052620100079181018290526000919082906060015b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020909101207f02ce8af30000000000000000000000000000000000000000000000000000000082526004820181905291507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302ce8af390602401602060405180830381865afa158015611219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123d9190613543565b949350505050565b600080611251846118f9565b9050600083611261576000611264565b60015b60ff169050806112748386611907565b60ff160195945050505050565b600080808061129185888a61191e565b915091506112a088828761195c565b9250826112b957600886901b60020b60ff8316016112c3565b6112c3888761198f565b9350505094509492505050565b6000806112de8585856119f6565b9050620100026fffffffffffffffffffffffffffffffff82161015611309576201000291505061072e565b6f0ffff5433e2b3d8211706e6102aa94726fffffffffffffffffffffffffffffffff82161061123d57506f0ffff5433e2b3d8211706e6102aa9471905061072e565b60008060008060006113698a8a8a602001518b604001518b8b611ad9565b90925090506113798a8389611b29565b611384828289611ba5565b9450945094505050955095509592505050565b6113a28584846118c2565b83156113d45780856060018181516113ba91906135cd565b6fffffffffffffffffffffffffffffffff169052506113fc565b80856040018181516113e691906135cd565b6fffffffffffffffffffffffffffffffff169052505b5050505050565b600080808061141489878a88611bfd565b90506fffffffffffffffffffffffffffffffff808716908216108015611458576114418a878b8b8b611c4a565b919650945092506114538a8488611c98565b611478565b6114658a838b8b8b611d27565b919650945092506114788a848a89611d61565b5050955095509592505050565b60008060008361149f5761149a6001866135fd565b6114a1565b845b90506114af8160020b611e2e565b92506114bd8160020b611e45565b9150509250929050565b60008060006114da610a9a888888611e61565b90506000806114ea83828861191e565b915091508015611504576000600194509450505050611519565b61150f888884611ebf565b6000945094505050505b94509492505050565b60008060006115396115348888611ee8565b611efc565b905060006115478686611907565b905060008061155a8460ff85168961191e565b91509150801561157557600060019550955050505050611519565b6115818a8a848a6114c7565b955095505050505094509492505050565b6000816115a8576115a38484611f1f565b61123d565b61123d8484611fab565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000600283900b138015610c0f575050627fffff60029190910b1290565b6000806000848460405160200161161592919091825260e81b602082015260230190565b6040516020818303038152906040528051906020012090506000816201000260405160200161164e929190918252602082015260400190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020909101207f02ce8af30000000000000000000000000000000000000000000000000000000082526004820181905291506000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906302ce8af390602401602060405180830381865afa158015611712573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117369190613543565b6bffffffffffffffffffffffff8082169960609290921c16975095505050505050565b600061176482611ff5565b61176d84611ff5565b039392505050565b60008082600f0b12156117ac57508082016fffffffffffffffffffffffffffffffff808416908216106117a757600080fd5b610c0f565b826fffffffffffffffffffffffffffffffff168284019150816fffffffffffffffffffffffffffffffff161015610c0f57600080fd5b6000806000806117fc6117f489612011565b895189612036565b9050806fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff1611611890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f424400000000000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b85156118ad576118a18888836120aa565b935093509350506118b8565b6118a1888883612146565b9450945094915050565b81836000018181516118d4919061363e565b600f0b9052506020830180518291906118ee90839061363e565b600f0b905250505050565b6000610c0f6101008361368c565b600081611917578260ff0361072e565b5090919050565b60008061192c8585856121f0565b94505083158061069f57826119495761194485612214565b611952565b611952856122c2565b9150935093915050565b6000831561196b57508161072e565b600061197783826124a5565b9050806119845783610d73565b600095945050505050565b600082156119e9576119a0836124d8565b60010b8260010b146119d9576119d46119ba8360016136ae565b6119c4851561250e565b60ff1660089190911b60020b0190565b6119e2565b6119e283612524565b9050610c0f565b600882901b60020b6119e2565b60007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5d892600285900b131580611a325750620cb14a600285900b12155b15611a3e57508161072e565b8115611a91576001600081611a5287610d7c565b039050846fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1610611a865784611a88565b805b9250505061072e565b6000611a9c85610d7c565b9050836fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1611611acf5783611ad1565b805b91505061072e565b60008080611ae98989878761255b565b9050610100620f42406fffffffffffffffffffffffffffffffff831661ffff8a16020460ff8816810291909104908190039a909950975050505050505050565b6000611b3484612011565b9050806fffffffffffffffffffffffffffffffff16600003611b565750505050565b8351821590600090611b6b90849087856125a8565b90506000611b7f8488600001518486612605565b905067ffffffffffffffff811615611b9c57611b9c87828561261f565b50505050505050565b600080808585018415611bd457611bcd816fffffffffffffffffffffffffffffffff16612703565b9250611bf2565b611bef816fffffffffffffffffffffffffffffffff16612703565b93505b509195909450915050565b600080611c0b868585612737565b9050846fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1611611c3e5780611c40565b845b9695505050505050565b6000806000806000611c5d8a8a8a61276d565b91509150600080611c7084848c8c6127ed565b91509150611c838c8b8b8b8f8787612824565b96509650965050505050955095509592505050565b82516fffffffffffffffffffffffffffffffff908116818316149083161515818015611cc15750805b6113fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f52500000000000000000000000000000000000000000000000000000000000006044820152606401611887565b6000806000806000611d3b8a8a8a8a6128bc565b91509150600080611d4e8b858c8c612936565b91509150611c838c8b8b8b878787612824565b600082611d865784516fffffffffffffffffffffffffffffffff808416911611611da0565b84516fffffffffffffffffffffffffffffffff8084169116105b90506fffffffffffffffffffffffffffffffff841615818015611dc05750805b611e26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f52460000000000000000000000000000000000000000000000000000000000006044820152606401611887565b505050505050565b6000610c0f611e408360020b60101d90565b612955565b6000610100611e578360020b60081d90565b610c0f91906136ee565b600080611e7e611e7085612975565b60081b60010b60ff85160190565b90508481604051602001611e9f92919091825260f01b602082015260220190565b604051602081830303815290604052805190602001209150509392505050565b600061123d611ecd85612975565b60101b60020b61ff00600886901b1660030b0160ff84160190565b600061072e83611ef784612975565b6129b4565b604080516020810183905262010006918101829052600091908290606001611158565b600060ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83015b60ff8160ff161015611fa057600080611f638784866000611522565b9150915080611f7757509250610c0f915050565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01611f47565b50610c0b6000612524565b600080600183015b60ff811615611fea57600080611fcc8784866001611522565b9150915080611fe057509250610c0f915050565b5050600101611fb3565b50610c0b6001612524565b6000600a82901b6d03fffffffffffffffffffffff80016610c0f565b600080612026836020015184606001516129f3565b905061072e818460400151612a48565b600081156120565750600167ffffffffffffffff604085901c160161072e565b60006120658560018603612a6d565b905060006120738686612a6d565b9050808203600177ffffffffffffffffffffffffffffffffffffffffffffffff82160161209f81612ab6565b94505050505061072e565b600080600060016f0ffff5433e2b3d8211706e6102aa9472036fffffffffffffffffffffffffffffffff1686600001516fffffffffffffffffffffffffffffffff16101561210c5785516001016fffffffffffffffffffffffffffffffff1686525b6000915061212b846fffffffffffffffffffffffffffffffff16612703565b92508461213957600061213b565b835b905093509350939050565b6000806000620100026fffffffffffffffffffffffffffffffff1686600001516fffffffffffffffffffffffffffffffff1611156121b75785517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016fffffffffffffffffffffffffffffffff1686525b600092506121d6846fffffffffffffffffffffffffffffffff16612703565b9150846121e3578361213b565b6000905093509350939050565b6000816122065761ffff831684811b901c61123d565b505061ffff1690811c901b90565b600080821161222257600080fd5b700100000000000000000000000000000000821061224257608091821c91015b68010000000000000000821061225a57604091821c91015b640100000000821061226e57602091821c91015b62010000821061228057601091821c91015b610100821061229157600891821c91015b601082106122a157600491821c91015b600482106122b157600291821c91015b600282106122bd576001015b919050565b60008082116122d057600080fd5b5060ff6fffffffffffffffffffffffffffffffff821615612312577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800161231a565b608082901c91505b67ffffffffffffffff821615612351577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc001612359565b604082901c91505b63ffffffff82161561238c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001612394565b602082901c91505b61ffff8216156123c5577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016123cd565b601082901c91505b60ff8216156123fd577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff801612405565b600882901c91505b600f821615612435577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0161243d565b600482901c91505b600382161561246d577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01612475565b600282901c91505b60018216156122bd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01919050565b60008060006124b9858560ff16600161191e565b915060ff16915080158015610d7357508360ff16821495945050505050565b600081612505577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000610c0f565b617fff92915050565b60008161251c576000610c0f565b60ff92915050565b600081612551577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000610c0f565b627fffff92915050565b83516000906fffffffffffffffffffffffffffffffff908116908316118161258587878787611bfd565b905061259d61259388612011565b8851838589612ad5565b979650505050505050565b60006002816125b8878786612036565b6125c29083613710565b9050806fffffffffffffffffffffffffffffffff16856fffffffffffffffffffffffffffffffff1611156125f85780850361259d565b5060009695505050505050565b600080612613868685612bee565b9050611c408185612c41565b825161262c908383612d57565b6fffffffffffffffffffffffffffffffff16835260608301516126599067ffffffffffffffff1683612dd1565b67ffffffffffffffff9081166060850181905260009161267c9190851690612e34565b905060006126c56126ac8387604001516fffffffffffffffffffffffffffffffff16612e7c90919063ffffffff16565b71ffffffffffffffffffffffffffffffffffff16612ab6565b90506126d18282612ea2565b856080018181516126e2919061373c565b67ffffffffffffffff169052506020850180518291906113e69083906135cd565b60006f80000000000000000000000000000000826fffffffffffffffffffffffffffffffff161061273357600080fd5b5090565b60008061274385612011565b90508361275e5761275981866000015185612f15565b610d73565b610d7381866000015185612f60565b600080600061277b86612011565b86519091506000906127a1906fffffffffffffffffffffffffffffffff84169088612f60565b87519091506000906127c7906fffffffffffffffffffffffffffffffff85169089612f15565b905085156127db57909350915082826127e2565b9350915081835b505050935093915050565b6000806127fc86868686612fa8565b909250905061280c60048361363e565b915061281960048261363e565b905094509492505050565b600080600080612835868b8b61304b565b9050876fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff161061286b5760009150612878565b612875818961375d565b91505b896128835784612885565b855b9350896128925785612894565b845b6fffffffffffffffffffffffffffffffff909716909a52919994985090965092945050505050565b60008060006128ca87612011565b90506128dd876000015182888888613081565b9150841561290a578651612905906fffffffffffffffffffffffffffffffff83169084612f15565b61292a565b865161292a906fffffffffffffffffffffffffffffffff83169084612f60565b92505094509492505050565b60008061294586868686612fa8565b909250905061281960048261363e565b6000808260000b121561296e578160000b608001610c0f565b5060800190565b600060808260ff161061298b5760808203610c0f565b5060ff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800190565b600082826040516020016129d592919091825260f81b602082015260210190565b60405160208183030381529060405280519060200120905092915050565b600066010000000000006fffffffffffffffffffffffffffffffff80851667ffffffffffffffff851683010290603082901c90811115610d73576fffffffffffffffffffffffffffffffff9350505050610c0f565b8082016fffffffffffffffffffffffffffffffff8084169082161015610c0f57600080fd5b60006fffffffffffffffffffffffffffffffff821677ffffffffffffffffffffffffffffffff0000000000000000604085901b1681612aae57612aae61359e565b049392505050565b806fffffffffffffffffffffffffffffffff811681146122bd57600080fd5b6000856fffffffffffffffffffffffffffffffff16600003612af957506000610d73565b6000612b0787878515612bee565b6fffffffffffffffffffffffffffffffff1690506000612b28888886612bee565b6fffffffffffffffffffffffffffffffff169050600084151586151514612b6357866fffffffffffffffffffffffffffffffff168203612b79565b866fffffffffffffffffffffffffffffffff1682015b905080600003612b9e576fffffffffffffffffffffffffffffffff9350505050610d73565b6000816fffffffffffffffffffffffffffffffff8b16800281612bc357612bc361359e565b049050612be0848211612bd857818503612ab6565b848203612ab6565b9a9950505050505050505050565b600061123d82612c2157612c028585612a6d565b77ffffffffffffffffffffffffffffffffffffffffffffffff16612ab6565b6fffffffffffffffffffffffffffffffff8086169085160260401c612c02565b60006fffffffffffffffffffffffffffffffff83161580612c855750826fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff16115b15612c9257506000610c0f565b6000612c9e83856135cd565b90506000612cbe6fffffffffffffffffffffffffffffffff83168661311d565b9050612cd38167ffffffffffffffff166131e6565b925066010000000000008367ffffffffffffffff1610612d4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f49460000000000000000000000000000000000000000000000000000000000006044820152606401611887565b505092915050565b6000660100000000000067ffffffffffffffff841681018315612d9a576fffffffffffffffffffffffffffffffff86168102603081901c61209f60018201612ab6565b75ffffffffffffffffffffffffffffffff000000000000603087901b16818181612dc657612dc661359e565b04935050505061072e565b6000660100000000000067ffffffffffffffff848116820181851683010290603082901c907fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000008201908110611c405767ffffffffffffffff945050505050610c0f565b6000660100000000000067ffffffffffffffff831681016dffffffffffffffff000000000000603086901b1683828281612e7057612e7061359e565b04979650505050505050565b67ffffffffffffffff166fffffffffffffffffffffffffffffffff919091160260301c90565b6000816fffffffffffffffffffffffffffffffff16600003612ec657506000610c0f565b612ed18260016135cd565b6fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff168467ffffffffffffffff16612f0b9190613786565b61072e919061379d565b6000826fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff161115612f5557612f4e84838561322a565b905061072e565b612f4e84848461322a565b600080826fffffffffffffffffffffffffffffffff16846fffffffffffffffffffffffffffffffff1611612f9657838303612f9a565b8284035b9050610d7385826001612bee565b60008082151584151503612fff57612fd1866fffffffffffffffffffffffffffffffff16612703565b612fec866fffffffffffffffffffffffffffffffff16612703565b612ff5906137b1565b9092509050611519565b61301a866fffffffffffffffffffffffffffffffff16612703565b613023906137b1565b61303e866fffffffffffffffffffffffffffffffff16612703565b9097909650945050505050565b6000808215158415151461306757613062856137b1565b613069565b845b9050600081600f0b121561123d57600091505061072e565b6000808361309a57613095878787866132a9565b6130a6565b6130a687878786613310565b90506f0ffff5433e2b3d8211706e6102aa94726fffffffffffffffffffffffffffffffff8216106130f4576130ec60016f0ffff5433e2b3d8211706e6102aa947261375d565b915050610d73565b620100026fffffffffffffffffffffffffffffffff82161015611c405762010002915050610d73565b600079ffffffffffffffffffffffffffffffffffffffffffffffffffff6fffffffffffffffffffffffffffffffff841610801561317e5750816fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff1610155b61318757600080fd5b660100000000000075ffffffffffffffffffffffffffffffff000000000000603085901b166000826fffffffffffffffffffffffffffffffff861683816131d0576131d061359e565b04039050828110610d7357829350505050610c0f565b600066010000000000008267ffffffffffffffff161061320557600080fd5b5067ffffffffffffffff8116800260331c60019190911c677fffffffffffffff160390565b600080613237838561375d565b905060006132458685612a6d565b77ffffffffffffffffffffffffffffffffffffffffffffffff1690506000856fffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff16836132949190613786565b61329e919061379d565b905061259d81612ab6565b6000806132b586613401565b905060006132c68287878715613310565b9050806fffffffffffffffffffffffffffffffff166000036132fc576f0ffff5433e2b3d8211706e6102aa94729250505061123d565b61330581613401565b61259d9060016135cd565b6000836fffffffffffffffffffffffffffffffff1660000361334357506fffffffffffffffffffffffffffffffff61123d565b600061334f8486612a6d565b90506fffffffffffffffffffffffffffffffff77ffffffffffffffffffffffffffffffffffffffffffffffff8216111561339c576fffffffffffffffffffffffffffffffff91505061123d565b8083156133b6576133ad81886135cd565b9250505061123d565b866fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff16106133ec5760009250505061123d565b6133f78160016135cd565b6133ad908861375d565b600080826fffffffffffffffffffffffffffffffff16700100000000000000000000000000000000816134365761343661359e565b0490506fffffffffffffffffffffffffffffffff811115610c0f57600080fd5b803573ffffffffffffffffffffffffffffffffffffffff811681146122bd57600080fd5b803580151581146122bd57600080fd5b80356fffffffffffffffffffffffffffffffff811681146122bd57600080fd5b600080600080600080600080610100898b0312156134c757600080fd5b6134d089613456565b97506134de60208a01613456565b9650604089013595506134f360608a0161347a565b945061350160808a0161347a565b935061350f60a08a0161348a565b925060c089013561ffff8116811461352657600080fd5b915061353460e08a0161348a565b90509295985092959890939650565b60006020828403121561355557600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610c0f57610c0f61355c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6fffffffffffffffffffffffffffffffff8181168382160190808211156135f6576135f661355c565b5092915050565b600282810b9082900b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff82131715610c0f57610c0f61355c565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff81137fffffffffffffffffffffffffffffffff8000000000000000000000000000000082121715610c0f57610c0f61355c565b60008260020b8061369f5761369f61359e565b808360020b0791505092915050565b600181810b9083900b01617fff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800082121715610c0f57610c0f61355c565b60008260010b806137015761370161359e565b808360010b0791505092915050565b6fffffffffffffffffffffffffffffffff818116838216028082169190828114612d4f57612d4f61355c565b67ffffffffffffffff8181168382160190808211156135f6576135f661355c565b6fffffffffffffffffffffffffffffffff8281168282160390808211156135f6576135f661355c565b8082028115828204841417610c0f57610c0f61355c565b6000826137ac576137ac61359e565b500490565b600081600f0b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081036137e6576137e661355c565b6000039291505056fea264697066735822122076b55295276cec1c96c468b7b7c629d2495621328aa9adfcaefd032788ab85bc64736f6c63430008130033000000000000000000000000aaaaaaaaa24eeeb8d57d431224f73832bc34f688