2 txs
24 calls
constructor
constructor((address pt, address quoteToken, address pool)[] pools)
functions
getPoolData
viewfunction getPoolData(address, address) view returns (address pool, address ibt, address pt, bool zeroIndexCoinIsIbt, uint8 quoteTokenKind)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
acceptOwnership
nonpayablefunction acceptOwnership()
addPools
nonpayablefunction addPools(tuple[] poolsData)
renounceOwnership
nonpayablefunction renounceOwnership()
swapExactInput
nonpayablefunction swapExactInput(address recipient, address tokenIn, address tokenOut, uint256 amountIn, uint256 minAmountOut, bytes data) returns (uint256 amountOut)
swapExactOutput
nonpayablefunction swapExactOutput(address recipient, address tokenIn, address tokenOut, uint256 maxAmountIn, uint256 amountOut, bytes data) returns (uint256 amountIn)
sweepDust
nonpayablefunction sweepDust(address token, address recipient)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
NewPair
event NewPair(address indexed ptToken, address indexed ibToken, address curvePool)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
errors
InsufficientAmount
error InsufficientAmount()
NotSupported
error NotSupported()
TooMuchRequested
error TooMuchRequested()
UnknownPair
error UnknownPair()
WrongPoolInput
error WrongPoolInput()
creation bytecode
0x60808060405234620004cc576200372a8038038091620000208285620005b5565b8339810190602081830312620004cc578051906001600160401b038211620004cc570181601f82011215620004cc578051906001600160401b0382116200047b57604051926200007760208460051b0185620005b5565b82845260206060818601940283010191818311620004cc57602001925b8284106200053e57600180546001600160a01b031990811690915560008054918216339081178255604080518994919290916001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a3620000fe8162000599565b8281528260208201520152805160005b8181106200012657604051612ff59081620007358239f35b8251811015620005285780602060249260051b85010151602060018060a01b036040830151166040519485809263c661065760e01b8252600060048301525afa8015620004da57600090620004e6575b604082810151905163c661065760e01b8152600160048201529450602090859060249082906001600160a01b03165afa938415620004da5760009462000491575b50604051936001600160401b0360a08601908111908611176200047b5760a0850160409081526000808752602087018190528187018190526060870181905260808701528301516001600160a01b03908116865283518116908216810362000417575090620002416200023760018060a01b0360208601511683620005fb565b60808701620005ee565b600160608601526001600160a01b0390811660208601521660408401525b80516001600160a01b0390811660009081526002602081815260408084208287015186168552825292839020875181546001600160a01b031990811691871691909117825591880151600182018054909316908616179091559186015190820154606087015160808801519394919290151560a01b60ff60a01b169116600384101562000401576001600160b01b0319909216919091171760a89190911b60ff60a81b16176002918201556020828101516001600160a01b0390811660009081528383526040808220865184168352845290819020875181546001600160a01b031990811691851691909117825593880151600182018054909516908416179093558601519282015460608701516080909701519390911695919291151560a01b60ff60a01b166003831015620004015760019660029360ff60a81b9060a81b1692888060b01b031916171717910155828060a01b038151167f3196b15aed0d9c4241e2967c90fa78bc7f471f440f7a64d1b4bb4ea89c3341b96020858060a01b038185015116936040878060a01b0391015116604051908152a3016200010e565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b0383160362000469576020830151620004469062000237906001600160a01b031683620005fb565b600060608601526001600160a01b0390811660208601521660408401526200025f565b6040516325c1cddd60e01b8152600490fd5b634e487b7160e01b600052604160045260246000fd5b9093506020813d602011620004d1575b81620004b060209383620005b5565b81010312620004cc57620004c490620005d9565b9286620001b7565b600080fd5b3d9150620004a1565b6040513d6000823e3d90fd5b506020833d6020116200051f575b816200050360209383620005b5565b81010312620004cc5762000519602493620005d9565b62000176565b3d9150620004f4565b634e487b7160e01b600052603260045260246000fd5b606084830312620004cc5760206060916040516200055c8162000599565b6200056787620005d9565b815262000576838801620005d9565b838201526200058860408801620005d9565b604082015281520193019262000094565b606081019081106001600160401b038211176200047b57604052565b601f909101601f19168101906001600160401b038211908210176200047b57604052565b51906001600160a01b0382168203620004cc57565b6003821015620004015752565b6000916001600160a01b039081169181168083036200061a5750505090565b6040516338d52e0f60e01b815292939192602092908381600481865afa9081156200072957869186918491620006e4575b5016036200065d575050505050600290565b8260049260405193848092633997437f60e11b82525afa928315620006d757819362000693575b50505016036200046957600190565b9091809350813d8311620006cf575b620006ae8183620005b5565b81010312620006cc5750620006c390620005d9565b38808062000684565b80fd5b503d620006a2565b50604051903d90823e3d90fd5b925050508381813d831162000721575b620007008183620005b5565b810103126200071d5784620007168792620005d9565b386200064b565b5080fd5b503d620006f4565b6040513d84823e3d90fdfe608060405260048036101561001357600080fd5b600090813560e01c9081632f1ccfbe146115bc5781633fab961414610ef7578163715018a614610e5157816379ba509714610d1b5781637d4f036a146103c65781638da5cb5b14610375578163a9fb82d61461027b578163e30c397814610229578163ec6390f41461013e575063f2fde38b1461008f57600080fd5b3461013b5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013b576100c66117f3565b6100ce611907565b73ffffffffffffffffffffffffffffffffffffffff80911690817fffffffffffffffffffffffff000000000000000000000000000000000000000060015416176001558254167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e227008380a380f35b80fd5b823461013b5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013b576101766117f3565b9061017f611816565b73ffffffffffffffffffffffffffffffffffffffff809316825260026020528260408320911660005260205260406000209060ff838354169360028160018601541694015490828260a81c169460405196875260208701528116604086015260a01c161515606084015260038210156101fd5760a083836080820152f35b806021857f4e487b71000000000000000000000000000000000000000000000000000000006024945252fd5b823461013b57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013b57602073ffffffffffffffffffffffffffffffffffffffff60015416604051908152f35b9050346103715760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610371576102b46117f3565b73ffffffffffffffffffffffffffffffffffffffff6102d1611816565b916102da611907565b1690604051927f70a082310000000000000000000000000000000000000000000000000000000084523090840152602083602481855afa91821561036657849261032c575b6103299350612604565b80f35b91506020833d821161035e575b8161034660209383611a01565b810103126103595761032992519161031f565b600080fd5b3d9150610339565b6040513d86823e3d90fd5b5080fd5b823461013b57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013b5773ffffffffffffffffffffffffffffffffffffffff6020915416604051908152f35b823461013b576103e9906103d93661185a565b9387989192989593955083611b10565b92333b15610d1757848961042c899360405195869485947f1b9d082d00000000000000000000000000000000000000000000000000000000865230908601611a42565b038183335af1801561062357908691610cff575b50506040820173ffffffffffffffffffffffffffffffffffffffff91610468838351166121ae565b156107eb5782808351169116036107c25760808301805160038110156107965760010361062e575051604080517fb2afd5a3000000000000000000000000000000000000000000000000000000008152808a019586523060208781018290529287015290949093918591859185169082908a90829060600103925af19283156106235791869189949383946105e9575b50850151604080517ffb183a0200000000000000000000000000000000000000000000000000000000815295860194855273ffffffffffffffffffffffffffffffffffffffff90971660208501523096840196909652929484938693911691839182906060015b03925af19283156105dd57926105af575b50505b905b811061058657602090604051908152f35b506040517f5945ea56000000000000000000000000000000000000000000000000000000008152fd5b90809250813d83116105d6575b6105c68183611a01565b8101031261035957518380610570565b503d6105bc565b604051903d90823e3d90fd5b9450915091508383813d831161061c575b6106048183611a01565b8101031261035957915187929091869161055f6104f8565b503d6105fa565b6040513d88823e3d90fd5b9091925093929351600381101561076a576002036106fc57916106b49391602093511690856040518096819582947fba08765200000000000000000000000000000000000000000000000000000000845230918d85019160409194936060840195845273ffffffffffffffffffffffffffffffffffffffff809216602085015216910152565b03925af19182156105dd57916106cb575b50610573565b90506020813d82116106f4575b816106e560209383611a01565b810103126103595751836106c5565b3d91506106d8565b916106b49391602093511690856040518096819582947fb2afd5a300000000000000000000000000000000000000000000000000000000845230918d85019160409194936060840195845273ffffffffffffffffffffffffffffffffffffffff809216602085015216910152565b60248660218a7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60248860218c7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b876040517fa0387940000000000000000000000000000000000000000000000000000000008152fd5b95949390918093925116838716908114906060840151151580610cf8575b15610cf05760ff60015b169115610a7657508496608084019788516003811015610a4a57918a93916108449593610a43575b8787511661210f565b9480516003811015610a17576001036109135750916108c99394916020809401511690856040518096819582947ffb183a0200000000000000000000000000000000000000000000000000000000845230918d85019160409194936060840195845273ffffffffffffffffffffffffffffffffffffffff809216602085015216910152565b03925af19182156105dd57916108e2575b505b90610575565b90506020813d821161090b575b816108fc60209383611a01565b810103126103595751836108da565b3d91506108ef565b5160038110156109eb5760021461092e575b505050506108dc565b9161099f9394916020809401511690856040518096819582947fba08765200000000000000000000000000000000000000000000000000000000845230918d85019160409194936060840195845273ffffffffffffffffffffffffffffffffffffffff809216602085015216910152565b03925af19182156105dd57916109ba575b5083808080610925565b90506020813d82116109e3575b816109d460209383611a01565b810103126103595751836109b0565b3d91506109c7565b60248560218a7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60248660218b7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b503061083b565b60248960218e7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b9093949598979650816080840180516003811015610cc4578a9493929190600103610b8b575050918186610b1494610ab8602095868901928484511690611bcd565b5116908b6040518096819582947f13bac8200000000000000000000000000000000000000000000000000000000084523091840190929173ffffffffffffffffffffffffffffffffffffffff6020916040840195845216910152565b03925af1908115610b805786979896959691610b48575b5094610b4395935b602081845116930151169161210f565b6108dc565b9450506020843d8211610b78575b81610b6360209383611a01565b81010312610359579251859390610b43610b2b565b3d9150610b56565b6040513d8a823e3d90fd5b90979495969350516003811015610c9857600214610bb8575b50508596975090610b439594939291610b33565b8493965081838a92610bd960209586610c35989b9a01928484511690611bcd565b5116908b6040518096819582947f6e553f650000000000000000000000000000000000000000000000000000000084523091840190929173ffffffffffffffffffffffffffffffffffffffff6020916040840195845216910152565b03925af1908115610b805786979896959691610c60575b5094610b4395949588979491929394610ba4565b9450506020843d8211610c90575b81610c7b60209383611a01565b81010312610359579251859390610b43610c4c565b3d9150610c6e565b60248b60218c7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60248c60218d7f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b60ff87610813565b5081610809565b610d0890611986565b610d13578488610440565b8480fd5b8680fd5b90503461037157817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610371576001549073ffffffffffffffffffffffffffffffffffffffff903382841603610dcd57507fffffffffffffffffffffffff00000000000000000000000000000000000000008092166001556000549133908316176000553391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a380f35b6084906020604051917f08c379a0000000000000000000000000000000000000000000000000000000008352820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152fd5b823461013b57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013b57610e88611907565b600073ffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffff0000000000000000000000000000000000000000806001541660015582549081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b9050346103715760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103715767ffffffffffffffff81358181116115b857366023820112156115b857808301359182116115b857602460608302820101368111610d1357610f68611907565b60405192610f7c60208260051b0185611a01565b83526024602084019201915b818310611563575050508260408051610fa0816119c9565b8281528260208201520152805190835b828110610fbb578480f35b81518110156115375760208160051b8301015173ffffffffffffffffffffffffffffffffffffffff6040820151166040516020816024817fc661065700000000000000000000000000000000000000000000000000000000958682528c8c8301525afa908115610b80578891611518575b50602073ffffffffffffffffffffffffffffffffffffffff60408501511692602460405180958193825260018c8301525afa918215610b805788926114e7575b50611075611aaa565b9173ffffffffffffffffffffffffffffffffffffffff604085015116835273ffffffffffffffffffffffffffffffffffffffff8451169173ffffffffffffffffffffffffffffffffffffffff821691838314600014611457575073ffffffffffffffffffffffffffffffffffffffff9192506111036110fa8360208801511683612e8f565b60808601611ad5565b6001606085015216602083015260408201525b73ffffffffffffffffffffffffffffffffffffffff825116875260026020526040872073ffffffffffffffffffffffffffffffffffffffff602084015116600052602052604060002073ffffffffffffffffffffffffffffffffffffffff8251167fffffffffffffffffffffffff00000000000000000000000000000000000000008254161781556001810173ffffffffffffffffffffffffffffffffffffffff6020840151167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905573ffffffffffffffffffffffffffffffffffffffff6040830151166002820154606084015115159160808501516003811015610cc457907fffffffffffffffffffff0000000000000000000000000000000000000000000074ff000000000000000000000000000000000000000075ff000000000000000000000000000000000000000000600296959460a81b169460a01b16921617171791015573ffffffffffffffffffffffffffffffffffffffff602083015116875260026020526040872073ffffffffffffffffffffffffffffffffffffffff83511660005260205260406000209073ffffffffffffffffffffffffffffffffffffffff8151167fffffffffffffffffffffffff00000000000000000000000000000000000000008354161782556001820173ffffffffffffffffffffffffffffffffffffffff6020830151167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905573ffffffffffffffffffffffffffffffffffffffff60408201511690600283015491608074ff00000000000000000000000000000000000000006060840151151560a01b169201516003811015610c985791600196959493917fffffffffffffffffffff0000000000000000000000000000000000000000000075ff00000000000000000000000000000000000000000060029560a81b16931617171791015573ffffffffffffffffffffffffffffffffffffffff8151167f3196b15aed0d9c4241e2967c90fa78bc7f471f440f7a64d1b4bb4ea89c3341b9602073ffffffffffffffffffffffffffffffffffffffff604081838701511695015116604051908152a301610fb0565b9073ffffffffffffffffffffffffffffffffffffffff169283146000146114be576114a06114a99173ffffffffffffffffffffffffffffffffffffffff60208801511690612e8f565b60808501611ad5565b88606084015260208301526040820152611116565b886040517f25c1cddd000000000000000000000000000000000000000000000000000000008152fd5b61150a91925060203d602011611511575b6115028183611a01565b810190612e63565b903861106c565b503d6114f8565b611531915060203d602011611511576115028183611a01565b3861102c565b6024856032867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b6060833603126115b457602060609160405161157e816119c9565b61158786611839565b8152611594838701611839565b838201526115a460408701611839565b6040820152815201920191610f88565b8580fd5b8380fd5b823461013b576115cb3661185a565b879194969592989397506115df8784611b10565b94333b156117ef5761162291839160405193849283927f1b9d082d0000000000000000000000000000000000000000000000000000000084528d308b8601611a42565b038183335af180156117e4576117d5575b50906040840173ffffffffffffffffffffffffffffffffffffffff9061165b828251166121ae565b1561167c57505050505091602094916116749493612aa7565b604051908152f35b819097949596975116908216146000146117475750608084018051600381101561171b576001036116be5750505050926116b99291602094612401565b611674565b969395949296519060038210156116ef5750602096506002036116e557506116b993612247565b906116b994612536565b806021897f4e487b71000000000000000000000000000000000000000000000000000000006024945252fd5b6024836021877f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b949392915060808397969701805160038110156117a95760010361177757505050916116b9939160209593612954565b96949295939196519060038210156116ef57506020965060020361179e576116b994612668565b90506116b993612a88565b6024836021867f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b6117de90611986565b88611633565b6040513d84823e3d90fd5b8280fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361035957565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361035957565b359073ffffffffffffffffffffffffffffffffffffffff8216820361035957565b9060c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126103595773ffffffffffffffffffffffffffffffffffffffff90600435828116810361035957926024358381168103610359579260443590811681036103595791606435916084359160a43567ffffffffffffffff9283821161035957806023830112156103595781600401359384116103595760248483010111610359576024019190565b73ffffffffffffffffffffffffffffffffffffffff60005416330361192857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b67ffffffffffffffff811161199a57604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6060810190811067ffffffffffffffff82111761199a57604052565b60a0810190811067ffffffffffffffff82111761199a57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761199a57604052565b9293806080957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09473ffffffffffffffffffffffffffffffffffffffff601f951687526020870152606060408701528160608701528686013760008582860101520116010190565b60405190611ab7826119e5565b60006080838281528260208201528260408201528260608201520152565b6003821015611ae15752565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9190611b1a611aaa565b5073ffffffffffffffffffffffffffffffffffffffff80931660005260026020528260406000209116600052602052604060002091611b9960ff600260405195611b63876119e5565b84815416875284600182015416602088015201548381166040870152818160a01c161515606087015260a81c1660808501611ad5565b82511615611ba357565b60046040517ffee00694000000000000000000000000000000000000000000000000000000008152fd5b6040517f095ea7b3000000000000000000000000000000000000000000000000000000006020820181815273ffffffffffffffffffffffffffffffffffffffff8516602484015260448084019690965294825294939092611c2f606485611a01565b73ffffffffffffffffffffffffffffffffffffffff90818416600080809588519082855af190611c5d611e82565b82611d06575b5081611cfb575b5015611c7a575b50505050509050565b60405196602088015216602486015280604486015260448552608085019085821067ffffffffffffffff831117611cce5750611cc39394611cbe9160405282611d50565b611d50565b803880808080611c71565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526041600452fd5b90503b151538611c6a565b80519192508115918215611d1e575b50509038611c63565b611d319250602080918301019101611d38565b3880611d15565b90816020910312610359575180151581036103595790565b73ffffffffffffffffffffffffffffffffffffffff16604051604081019181831067ffffffffffffffff84111761199a57611dcd926040526000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af1611dc7611e82565b91611ee0565b805190828215928315611e6a575b50505015611de65750565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b611e7a9350820181019101611d38565b388281611ddb565b3d15611edb573d9067ffffffffffffffff821161199a5760405191611ecf60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184611a01565b82523d6000602084013e565b606090565b91929015611f5b5750815115611ef4575090565b3b15611efd5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015611f6e5750805190602001fd5b604051907f08c379a000000000000000000000000000000000000000000000000000000000825281602080600483015282519283602484015260005b848110611feb575050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f836000604480968601015201168101030190fd5b818101830151868201604401528593508201611faa565b9190820391821161200f57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9392909193612065848273ffffffffffffffffffffffffffffffffffffffff809816611bcd565b81600103916001831161200f576020938660c49360405197889687957fce7d650300000000000000000000000000000000000000000000000000000000875260048701526024860152604485015260009889938460648701528460848701521660a4850152165af19182156105dd5780926120df57505090565b9091506020823d8211612107575b816120fa60209383611a01565b8101031261013b57505190565b3d91506120ed565b90919492612135858373ffffffffffffffffffffffffffffffffffffffff809916611bcd565b80600103926001841161200f578660c49360209660405198899788967fce7d6503000000000000000000000000000000000000000000000000000000008852600488015260248701526044860152606485015260009889938460848701521660a4850152165af19182156105dd5780926120df57505090565b602073ffffffffffffffffffffffffffffffffffffffff916004604051809481937f204f83f9000000000000000000000000000000000000000000000000000000008352165afa90811561223b5760009161220a575b50421190565b906020823d8211612233575b8161222360209383611a01565b8101031261013b57505138612204565b3d9150612216565b6040513d6000823e3d90fd5b606081015191939291600090156123f9575060ff60015b16602060248184019473ffffffffffffffffffffffffffffffffffffffff928084885116604051948580927f0a28a4770000000000000000000000000000000000000000000000000000000082528660048301525afa92831561223b576000936123ca575b5061234a816122e2858b898b8a6040818351169201511690309061210f565b89516040517fb460af94000000000000000000000000000000000000000000000000000000008152600481019690965273ffffffffffffffffffffffffffffffffffffffff8d1660248701523060448701529094928391881690829060009082906064820190565b03925af1801561223b576123a1575b505081811461239657829161236d91612002565b93511693511690600103906001821161200f576123939561238d9461203e565b90612002565b90565b505050505050905090565b813d83116123c3575b6123b48183611a01565b81010312610359573880612359565b503d6123aa565b90928382813d83116123f2575b6123e18183611a01565b8101031261013b57505191386122c3565b503d6123d7565b60ff9061225e565b6060810151919392916000901561252e575060ff60015b1660208083019373ffffffffffffffffffffffffffffffffffffffff918083875116926024604051809581937f404b9d8100000000000000000000000000000000000000000000000000000000835260048301525afa91821561223b576000926124ff575b50612497828886868951168760408b01511690309061210f565b86516040517ffb183a020000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff8b16602482015230604482015291929190829082908716816000816064810161234a565b90918282813d8311612527575b6125168183611a01565b8101031261013b575051903861247d565b503d61250c565b60ff90612418565b606081015192949392909190600090156125fc575060ff60015b1673ffffffffffffffffffffffffffffffffffffffff61257f858784848851168560408a01511690309061210f565b968588106125d2578584836125949316612604565b8487146125c8576020818551169401511690600103916001831161200f576125c261238d9561239398612002565b9361203e565b5050505050905090565b60046040517f24df576f000000000000000000000000000000000000000000000000000000008152fd5b60ff90612550565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff92909216602483015260448083019390935291815261266691611cbe606483611a01565b565b9094939192946020938483019261269b8573ffffffffffffffffffffffffffffffffffffffff9384808851169116611bcd565b83516040517f6e553f65000000000000000000000000000000000000000000000000000000008152600481018790523060248201529083169890918783806044810103816000809e5af19081156128075785908b926127d0575b6126ff9450612812565b9283156127c657516040517fba087652000000000000000000000000000000000000000000000000000000008152600481019490945273ffffffffffffffffffffffffffffffffffffffff90921660248401523060448401528491839116818881606481015b03925af19283156127bb578593612784575b5050612393929350612002565b9080929350813d83116127b4575b61279c8183611a01565b810103126115b8576123939293505190839238612777565b503d612792565b6040513d87823e3d90fd5b5092955050505050565b9150508783813d8311612800575b6127e88183611a01565b810103126127fc57846126ff9351916126f5565b8980fd5b503d6127de565b6040513d8c823e3d90fd5b6060810151919390929091156128ab5760ff60005b16916128578173ffffffffffffffffffffffffffffffffffffffff9385858851168660208a01511690309061210f565b8181106125d25761287082604087019785895116612604565b8181146128a057829161288291612002565b93511693511690600103906001821161200f5761239393309061203e565b505050505050600090565b60ff6001612827565b60608101519092901561294b5760ff60005b16906128f68573ffffffffffffffffffffffffffffffffffffffff9284848851168560208a01511690309061210f565b948086106125d25760408501956129118286858a5116612604565b81811461293f57829161292391612002565b94511694511690600103916001831161200f576123939461203e565b50505050505050600090565b60ff60016128c6565b909493919294602093848301926129878573ffffffffffffffffffffffffffffffffffffffff9384808851169116611bcd565b83516040517f13bac820000000000000000000000000000000000000000000000000000000008152600481018790523060248201529083169890918783806044810103816000809e5af19081156128075785908b92612a55575b6129eb9450612812565b9283156127c657516040517ffb183a02000000000000000000000000000000000000000000000000000000008152600481019490945273ffffffffffffffffffffffffffffffffffffffff9092166024840152306044840152849183911681888160648101612765565b9150508783813d8311612a81575b612a6d8183611a01565b810103126127fc57846129eb9351916129e1565b503d612a63565b612a94929184916128b4565b8015612aa35761239391612002565b5090565b94939290916040918287019173ffffffffffffffffffffffffffffffffffffffff9384808551169216918214612e3a576080890180516003811015611ae157600103612d055750602080990198602481878c51168451928380927f404b9d810000000000000000000000000000000000000000000000000000000082528960048301525afa908115612c8d57600091612cd8575b50855183517e77e1460000000000000000000000000000000000000000000000000000000081526004810183905230602482018190526044820152908390829060649082906000908d165af1908115612ccd5783918991600091612c98575b509c5185517ffb183a0200000000000000000000000000000000000000000000000000000000815260048101949094523060248501819052604485015283911681600081606481015b03925af1918215612c8d5790859291600092612c5c575b505010612c3357509084612c0d92612604565b858414612c2d5785612666949392612c2792511693612002565b91612604565b50505050565b600490517f5945ea56000000000000000000000000000000000000000000000000000000008152fd5b90809350813d8311612c86575b612c738183611a01565b8101031261013b57508390513880612bfa565b503d612c69565b83513d6000823e3d90fd5b8381949293503d8311612cc6575b612cb08183611a01565b8101031261013b57505182908890612be3612b9a565b503d612ca6565b84513d6000823e3d90fd5b908282813d8311612cfe575b612cee8183611a01565b8101031261013b57505138612b3b565b503d612ce4565b9150929750516003811015611ae157600091602091600203612dd757885184517fb460af94000000000000000000000000000000000000000000000000000000008152600481019290925273ffffffffffffffffffffffffffffffffffffffff8716602483015230604483015290928391861690829081606481015b03925af1918215612dcd5750600091612d9c575b5094612c0d565b906020823d8211612dc5575b81612db560209383611a01565b8101031261013b57505138612d95565b3d9150612da8565b513d6000823e3d90fd5b885184517e77e146000000000000000000000000000000000000000000000000000000008152600481019290925273ffffffffffffffffffffffffffffffffffffffff871660248301523060448301529092839186169082908160648101612d81565b600490517fa0387940000000000000000000000000000000000000000000000000000000008152fd5b90816020910312610359575173ffffffffffffffffffffffffffffffffffffffff811681036103595790565b73ffffffffffffffffffffffffffffffffffffffff91821691908116808303612eba57505050600090565b604051907f38d52e0f0000000000000000000000000000000000000000000000000000000082526020918281600481855afa90811561223b5785918591600091612fa2575b501603612f0f5750505050600290565b81600491604051928380927f732e86fe0000000000000000000000000000000000000000000000000000000082525afa91821561223b57600092612f85575b50501603612f5b57600190565b60046040517f25c1cddd000000000000000000000000000000000000000000000000000000008152fd5b612f9b9250803d10611511576115028183611a01565b3880612f4e565b612fb99150853d8711611511576115028183611a01565b38612eff56fea264697066735822122039644e2f1648230afdb1df728361c9a8e5cc437e079e1cafc79437452c0eae8364736f6c63430008130033000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000004a977653c58cfd82d42fd706cf68a0c1b6d0ca5600000000000000000000000066a1e37c9b0eaddca17d3662d6c05f4decf3e11000000000000000000000000016d050778b6599ce94993d2ff83f8da7136421a9