1 tx
2 calls
constructor
constructor()
functions
ETH
viewfunction ETH() view returns (address)
getPrices
viewfunction getPrices(tuple[] v4Pools, address[] v3Pools, address[] v2Pools) view returns (uint128[] pricesX96)
mulDiv
purefunction mulDiv(uint256 a, uint256 b, uint256 denominator) pure returns (uint256 result)
owner
viewfunction owner() view returns (address)
permit2
viewfunction permit2() view returns (address)
poolManager
viewfunction poolManager() view returns (address)
router
viewfunction router() view returns (address)
sqrt
purefunction sqrt(uint256 x) pure returns (uint128)
WETH
viewfunction WETH() view returns (address)
renounceOwnership
nonpayablefunction renounceOwnership()
rescueTokens
nonpayablefunction rescueTokens(address[] tokens)
setCanCollect
nonpayablefunction setCanCollect(address collector, bool canCollect)
swapManyWithLend
nonpayablefunction swapManyWithLend(tuple[] v2Swaps, tuple[] v3Swaps, tuple[] v4Swaps, address[] tokensToTake, uint256 deadline)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes _data)
unlockCallback
nonpayablefunction unlockCallback(bytes data) returns (bytes)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RevenueGenerated
event RevenueGenerated(uint256 ethEarned, uint256 estimatedTransactionFee, uint256 txFeeRefund)
errors
DeltaNotNegative
error DeltaNotNegative(address currency)
DeltaNotPositive
error DeltaNotPositive(address currency)
InsufficientBalance
error InsufficientBalance()
NotPoolManager
error NotPoolManager()
creation bytecode
0x60a060405234801561000f575f5ffd5b506e04444c5dc75cb358380d2e3de08a908061002a33610078565b6001600160a01b0316608052506001805f61004c5f546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556100c7565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b608051613df86101335f395f81816102c20152818161037d0152818161072601528181610c64015281816114be0152818161220b015281816123ff015281816124ac01528181612520015281816125bb0152818161288c015281816129610152612a200152613df85ff3fe6080604052600436106100e9575f3560e01c806391dd734611610083578063e144cca811610055578063e144cca8146102e4578063f2fde38b14610303578063f887ea4014610322578063fa461e331461034957005b806391dd734614610231578063aa9a09121461025d578063ad5c46481461028a578063dc4c90d3146102b157005b8063677342ce116100bc578063677342ce146101a1578063715018a6146101e15780638322fff2146101f55780638da5cb5b1461020857005b80630f2f3227146100eb57806312261ee71461010a57806327cbfeb01461015657806335db1c2514610182575b005b3480156100f6575f5ffd5b506100e9610105366004612be7565b610368565b348015610115575f5ffd5b5061012c6e22d473030f116ddee9f6b43ac78ba381565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015610161575f5ffd5b50610175610170366004612cee565b610667565b60405161014d9190612dbc565b34801561018d575f5ffd5b506100e961019c366004612e3e565b610a59565b3480156101ac575f5ffd5b506101c06101bb366004612e75565b610ab6565b6040516fffffffffffffffffffffffffffffffff909116815260200161014d565b3480156101ec575f5ffd5b506100e9610c37565b348015610200575f5ffd5b5061012c5f81565b348015610213575f5ffd5b505f5473ffffffffffffffffffffffffffffffffffffffff1661012c565b34801561023c575f5ffd5b5061025061024b366004612eca565b610c4a565b60405161014d9190612f55565b348015610268575f5ffd5b5061027c610277366004612f67565b610cce565b60405190815260200161014d565b348015610295575f5ffd5b5061012c73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b3480156102bc575f5ffd5b5061012c7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102ef575f5ffd5b506100e96102fe366004612f90565b610d98565b34801561030e575f5ffd5b506100e961031d366004612fc3565b610ff2565b34801561032d575f5ffd5b5061012c7366a9893cc07d91d95644aedd05d03f95e1dba8af81565b348015610354575f5ffd5b506100e9610363366004612fde565b6110a9565b5f5a90504282101561037a575061065c565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166348c894916040518060a001604052808e8e808060200260200160405190810160405280939291908181526020015f905b8282101561040f5761040060808302860136819003810190613176565b815260200190600101906103e3565b505050505081526020018c8c808060200260200160405190810160405280939291908181526020015f905b828210156104665761045760808302860136819003810190613176565b8152602001906001019061043a565b505050505081526020018a8a808060200260200160405190810160405280939291908181526020015f905b828210156104be576104af6101008302860136819003810190613275565b81526020019060010190610491565b505050505081526020018888808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250505090825250602090810187905260405161051392910161346f565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161053e9190612f55565b5f604051808303815f875af1158015610559573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261059e91908101906135e7565b8060200190518101906105b19190613699565b90505a6105be90836136dd565b91505f3a6105ce846161a86136f0565b6105d89190613703565b90505f323303610616578183116105ef57826105f1565b815b604051909150329082156108fc029083905f818181858888f1935050505061061657505f5b60408051848152602081018490529081018290527f7595fd16636bf3cf86d46d699438dc239f70845e8d9607be21306e61a1bdf0079060600160405180910390a1505050505b505050505050505050565b60608161067485886136f0565b61067e91906136f0565b67ffffffffffffffff8111156106965761069661302d565b6040519080825280602002602001820160405280156106bf578160200160208202803683370190505b5090505f805b63ffffffff82168811156107db575f61074c61070f8b8b8663ffffffff168181106106f2576106f261371a565b905060a002018036038101906107089190613747565b60a0902090565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690611180565b50505090506107958173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000610cce565b848363ffffffff16815181106107ad576107ad61371a565b6fffffffffffffffffffffffffffffffff9092166020928302919091019091015250600191820191016106c5565b5f91505b63ffffffff8216861115610919575f87878463ffffffff168181106108065761080661371a565b905060200201602081019061081b9190612fc3565b73ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610863573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108879190613772565b50505050505090506108d38173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000610cce565b848363ffffffff16815181106108eb576108eb61371a565b6fffffffffffffffffffffffffffffffff9092166020928302919091019091015250600191820191016107df565b5f91505b63ffffffff8216841115610a4d575f5f86868563ffffffff168181106109455761094561371a565b905060200201602081019061095a9190612fc3565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156109a2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c69190613821565b509092509050610a066dffffffffffffffffffffffffffff831679ffffffffffffffffffffffffffff000000000000000000000000606084901b1661389a565b858463ffffffff1681518110610a1e57610a1e61371a565b6fffffffffffffffffffffffffffffffff9092166020928302919091019091015250506001918201910161091d565b50509695505050505050565b610a61611265565b73ffffffffffffffffffffffffffffffffffffffff919091165f90815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b5f815f03610ac557505f919050565b8160017001000000000000000000000000000000008210610aeb5760809190911c9060401b5b680100000000000000008210610b065760409190911c9060201b5b6401000000008210610b1d5760209190911c9060101b5b620100008210610b325760109190911c9060081b5b6101008210610b465760089190911c9060041b5b60108210610b595760049190911c9060021b5b60088210610b655760011b5b6001818581610b7657610b7661386d565b048201901c90506001818581610b8e57610b8e61386d565b048201901c90506001818581610ba657610ba661386d565b048201901c90506001818581610bbe57610bbe61386d565b048201901c90506001818581610bd657610bd661386d565b048201901c90506001818581610bee57610bee61386d565b048201901c90506001818581610c0657610c0661386d565b0491909101901c5f610c18828661389a565b9050808210610c275780610c29565b815b95945050505050565b919050565b610c3f611265565b610c485f6112e5565b565b60603373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610cbb576040517fae18210a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cc58383611359565b90505b92915050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050805f03610d21575f8411610d16575f5ffd5b508290049050610d91565b808411610d2c575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b335f8181526001602052604090205460ff16610e15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4e6f7420612066656520636f6c6c6563746f720000000000000000000000000060448201526064015b60405180910390fd5b5f5b61ffff8116831115610fac575f84848361ffff16818110610e3a57610e3a61371a565b9050602002016020810190610e4f9190612fc3565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa158015610eb9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610edd9190613699565b905084848361ffff16818110610ef557610ef561371a565b9050602002016020810190610f0a9190612fc3565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201849052919091169063a9059cbb906044016020604051808303815f875af1158015610f7e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fa291906138d2565b5050600101610e17565b5060405173ffffffffffffffffffffffffffffffffffffffff8216904780156108fc02915f818181858888f19350505050158015610fec573d5f5f3e3d5ffd5b50505050565b610ffa611265565b73ffffffffffffffffffffffffffffffffffffffff811661109d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610e0c565b6110a6816112e5565b50565b5f80806110b8848601866138ed565b9194509250905073ffffffffffffffffffffffffffffffffffffffff831633146110e0575f5ffd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820183905283169063a9059cbb906044016020604051808303815f875af1158015611152573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061117691906138d2565b5050505050505050565b5f5f5f5f5f61118e86612363565b6040517f1e2eaeaf000000000000000000000000000000000000000000000000000000008152600481018290529091505f9073ffffffffffffffffffffffffffffffffffffffff891690631e2eaeaf90602401602060405180830381865afa1580156111fc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112209190613699565b905073ffffffffffffffffffffffffffffffffffffffff811695508060a01c60020b945062ffffff8160b81c16935062ffffff8160d01c169250505092959194509250565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610c48576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610e0c565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60605f61136883850185613a8a565b90505f5b8160400151518163ffffffff16101561157c575f82604001518263ffffffff168151811061139c5761139c61371a565b602002602001015190505f8160600151611404576113ff825f01516fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000084602001516fffffffffffffffffffffffffffffffff16610cce565b611453565b61145382602001516fffffffffffffffffffffffffffffffff167801000000000000000000000000000000000000000000000000845f01516fffffffffffffffffffffffffffffffff16610cce565b90505f61145f82610ab6565b6fffffffffffffffffffffffffffffffff1690505f6040518060600160405280856060015115158152602001855f015161149890613b83565b600f0b81526020018373ffffffffffffffffffffffffffffffffffffffff1681525090507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f3cd914c85604001518360405180602001604052805f8152506040518463ffffffff1660e01b815260040161152b93929190613bbf565b6020604051808303815f875af1158015611547573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156b9190613699565b50506001909301925061136c915050565b505f5b8160200151518163ffffffff161015611aa9575f82602001518263ffffffff16815181106115af576115af61371a565b602002602001015190505f816060015161163957816040015173ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611610573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116349190613c89565b6116aa565b816040015173ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611686573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116aa9190613c89565b90505f826060015161172c57826040015173ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611703573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117279190613c89565b61179d565b826040015173ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611779573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061179d9190613c89565b90507fffffffffffffffffffffffff3fd555c64ddc0172f5f1a3b0d81526f7c38a933e73ffffffffffffffffffffffffffffffffffffffff831601611887576117fc5f30855f01516fffffffffffffffffffffffffffffffff1661239f565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0845f01516fffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004015f604051808303818588803b15801561186b575f5ffd5b505af115801561187d573d5f5f3e3d5ffd5b50505050506118a7565b6118a78230855f01516fffffffffffffffffffffffffffffffff1661239f565b5f836060015161190557611900845f01516fffffffffffffffffffffffffffffffff16780100000000000000000000000000000000000000000000000086602001516fffffffffffffffffffffffffffffffff16610cce565b611954565b61195484602001516fffffffffffffffffffffffffffffffff167801000000000000000000000000000000000000000000000000865f01516fffffffffffffffffffffffffffffffff16610cce565b90505f61196082610ab6565b6040868101516060808901518951845173ffffffffffffffffffffffffffffffffffffffff94851660208201819052948b16818701526fffffffffffffffffffffffffffffffff808316828601528651808303909501855260808201968790527f128acb0800000000000000000000000000000000000000000000000000000000909652959094169550919363128acb0893611a059330939092889190608401613ca4565b60408051808303815f875af1158015611a20573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a449190613cff565b505073ffffffffffffffffffffffffffffffffffffffff831673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc214611a9857611a98833087602001516fffffffffffffffffffffffffffffffff1661245b565b50506001909301925061157f915050565b505f5b81515163ffffffff821610156120e2575f825f01518263ffffffff1681518110611ad857611ad861371a565b602002602001015190505f8160600151611b6257816040015173ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b39573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b5d9190613c89565b611bd3565b816040015173ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611baf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bd39190613c89565b90505f8260600151611c5557826040015173ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c2c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c509190613c89565b611cc6565b826040015173ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ca2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cc69190613c89565b90507fffffffffffffffffffffffff3fd555c64ddc0172f5f1a3b0d81526f7c38a933e73ffffffffffffffffffffffffffffffffffffffff831601611db057611d255f30855f01516fffffffffffffffffffffffffffffffff1661239f565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0845f01516fffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004015f604051808303818588803b158015611d94575f5ffd5b505af1158015611da6573d5f5f3e3d5ffd5b5050505050611dd0565b611dd08230855f01516fffffffffffffffffffffffffffffffff1661239f565b604083810151845191517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526fffffffffffffffffffffffffffffffff909216602483015283169063a9059cbb906044016020604051808303815f875af1158015611e5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e7f91906138d2565b505f5f846040015173ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611ecf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ef39190613821565b5091509150846060015115611f0457905b5f611f45865f01516fffffffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff16612647565b905085602001516fffffffffffffffffffffffffffffffff16811015611fc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f56323a204e6f7420656e6f7567682072656365697665640000000000000000006044820152606401610e0c565b856040015173ffffffffffffffffffffffffffffffffffffffff1663022c0d9f8760600151611ff65782611ff8565b5f5b8860600151612007575f612009565b835b604080516020810182525f815290517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526120519392913091600401613d21565b5f604051808303815f87803b158015612068575f5ffd5b505af115801561207a573d5f5f3e3d5ffd5b5050505073ffffffffffffffffffffffffffffffffffffffff841673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2146120d0576120d0843088602001516fffffffffffffffffffffffffffffffff1661245b565b505060019094019350611aac92505050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2906370a0823190602401602060405180830381865afa15801561214a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061216e9190613699565b905080156121f0576040517f2e1a7d4d0000000000000000000000000000000000000000000000000000000081526004810182905273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc290632e1a7d4d906024015f604051808303815f87803b1580156121d9575f5ffd5b505af11580156121eb573d5f5f3e3d5ffd5b505050505b5f61223273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630836127bb565b90505f81131561224c576122475f308361239f565b612267565b5f811215612267576122675f3061226284613d65565b61245b565b5f6122728284613d9b565b90505f8112156122de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f43616e6e6f74206c6f73652065746800000000000000000000000000000000006044820152606401610e0c565b5f93505b8460600151518463ffffffff16101561233b575f85606001518563ffffffff16815181106123125761231261371a565b6020026020010151905061232f813061232a84612870565b61239f565b506001909301926122e2565b6040805160208101839052016040516020818303038152906040529550505050505092915050565b6040515f90612382908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b805f036123ab57505050565b6040517f0b0d9c0900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528381166024830152604482018390527f00000000000000000000000000000000000000000000000000000000000000001690630b0d9c09906064015f604051808303815f87803b158015612440575f5ffd5b505af1158015612452573d5f5f3e3d5ffd5b50505050505050565b805f0361246757505050565b6040517fa584119400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a5841194906024015f604051808303815f87803b1580156124ed575f5ffd5b505af11580156124ff573d5f5f3e3d5ffd5b5050505073ffffffffffffffffffffffffffffffffffffffff83166125ae577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b4826040518263ffffffff1660e01b815260040160206040518083038185885af1158015612589573d5f5f3e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fec9190613699565b6125b9838383612907565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015612623573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fec9190613699565b5f5f84116126d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f556e697377617056324c6962726172793a20494e53554646494349454e545f4960448201527f4e5055545f414d4f554e540000000000000000000000000000000000000000006064820152608401610e0c565b5f831180156126e557505f82115b612771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f556e697377617056324c6962726172793a20494e53554646494349454e545f4c60448201527f49515549444954590000000000000000000000000000000000000000000000006064820152608401610e0c565b5f61277e856103e5612a5e565b90505f61278b8285612a5e565b90505f6127a48361279e886103e8612a5e565b90612ae7565b90506127b0818361389a565b979650505050505050565b5f5f73ffffffffffffffffffffffffffffffffffffffff84165f5273ffffffffffffffffffffffffffffffffffffffff831660205260405f2090508473ffffffffffffffffffffffffffffffffffffffff1663f135baaa826040518263ffffffff1660e01b815260040161283191815260200190565b602060405180830381865afa15801561284c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c299190613699565b5f806128b373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630856127bb565b90505f811215610cc8576040517f4c085bf100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610e0c565b3073ffffffffffffffffffffffffffffffffffffffff8316036129db576040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820183905284169063a9059cbb906044015b6020604051808303815f875af11580156129b7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fec91906138d2565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301527f000000000000000000000000000000000000000000000000000000000000000081166024830152604482018390528416906323b872dd9060640161299b565b5f811580612a8157508282612a738183613703565b9250612a7f908361389a565b145b610cc8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f770000000000000000000000006044820152606401610e0c565b5f82612af383826136f0565b9150811015610cc8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f770000000000000000000000006044820152606401610e0c565b5f5f83601f840112612b6e575f5ffd5b50813567ffffffffffffffff811115612b85575f5ffd5b6020830191508360208260071b8501011115612b9f575f5ffd5b9250929050565b5f5f83601f840112612bb6575f5ffd5b50813567ffffffffffffffff811115612bcd575f5ffd5b6020830191508360208260051b8501011115612b9f575f5ffd5b5f5f5f5f5f5f5f5f5f60a08a8c031215612bff575f5ffd5b893567ffffffffffffffff811115612c15575f5ffd5b612c218c828d01612b5e565b909a5098505060208a013567ffffffffffffffff811115612c40575f5ffd5b612c4c8c828d01612b5e565b90985096505060408a013567ffffffffffffffff811115612c6b575f5ffd5b8a01601f81018c13612c7b575f5ffd5b803567ffffffffffffffff811115612c91575f5ffd5b8c60208260081b8401011115612ca5575f5ffd5b6020919091019550935060608a013567ffffffffffffffff811115612cc8575f5ffd5b612cd48c828d01612ba6565b9a9d999c50979a9699959894979660800135949350505050565b5f5f5f5f5f5f60608789031215612d03575f5ffd5b863567ffffffffffffffff811115612d19575f5ffd5b8701601f81018913612d29575f5ffd5b803567ffffffffffffffff811115612d3f575f5ffd5b89602060a083028401011115612d53575f5ffd5b60209182019750955087013567ffffffffffffffff811115612d73575f5ffd5b612d7f89828a01612ba6565b909550935050604087013567ffffffffffffffff811115612d9e575f5ffd5b612daa89828a01612ba6565b979a9699509497509295939492505050565b602080825282518282018190525f918401906040840190835b81811015612e055783516fffffffffffffffffffffffffffffffff16835260209384019390920191600101612dd5565b509095945050505050565b73ffffffffffffffffffffffffffffffffffffffff811681146110a6575f5ffd5b80151581146110a6575f5ffd5b5f5f60408385031215612e4f575f5ffd5b8235612e5a81612e10565b91506020830135612e6a81612e31565b809150509250929050565b5f60208284031215612e85575f5ffd5b5035919050565b5f5f83601f840112612e9c575f5ffd5b50813567ffffffffffffffff811115612eb3575f5ffd5b602083019150836020828501011115612b9f575f5ffd5b5f5f60208385031215612edb575f5ffd5b823567ffffffffffffffff811115612ef1575f5ffd5b612efd85828601612e8c565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610cc56020830184612f09565b5f5f5f60608486031215612f79575f5ffd5b505081359360208301359350604090920135919050565b5f5f60208385031215612fa1575f5ffd5b823567ffffffffffffffff811115612fb7575f5ffd5b612efd85828601612ba6565b5f60208284031215612fd3575f5ffd5b8135610d9181612e10565b5f5f5f5f60608587031215612ff1575f5ffd5b8435935060208501359250604085013567ffffffffffffffff811115613015575f5ffd5b61302187828801612e8c565b95989497509550505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff8111828210171561307d5761307d61302d565b60405290565b60405160a0810167ffffffffffffffff8111828210171561307d5761307d61302d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156130ed576130ed61302d565b604052919050565b80356fffffffffffffffffffffffffffffffff81168114610c32575f5ffd5b5f60808284031215613124575f5ffd5b61312c61305a565b9050613137826130f5565b8152613145602083016130f5565b6020820152604082013561315881612e10565b6040820152606082013561316b81612e31565b606082015292915050565b5f60808284031215613186575f5ffd5b610cc58383613114565b8060020b81146110a6575f5ffd5b5f60a082840312156131ae575f5ffd5b6131b6613083565b905081356131c381612e10565b815260208201356131d381612e10565b6020820152604082013562ffffff811681146131ed575f5ffd5b6040820152606082013561320081613190565b6060820152608082013561321381612e10565b608082015292915050565b5f610100828403121561322f575f5ffd5b61323761305a565b9050613242826130f5565b8152613250602083016130f5565b6020820152613262836040840161319e565b604082015260e082013561316b81612e31565b5f6101008284031215613286575f5ffd5b610cc5838361321e565b5f8151808452602084019350602083015f5b82811015613328576133128683516fffffffffffffffffffffffffffffffff81511682526fffffffffffffffffffffffffffffffff602082015116602083015273ffffffffffffffffffffffffffffffffffffffff60408201511660408301526060810151151560608301525050565b60809590950194602091909101906001016132a2565b5093949350505050565b5f8151808452602084019350602083015f5b828110156133285781516fffffffffffffffffffffffffffffffff81511687526fffffffffffffffffffffffffffffffff60208201511660208801526040810151613407604089018273ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b5060600151151560e08701526101009095019460209190910190600101613344565b5f8151808452602084019350602083015f5b8281101561332857815173ffffffffffffffffffffffffffffffffffffffff1686526020958601959091019060010161343b565b6020808252825160a083830152805160c084018190525f929190910190829060e08501905b8083101561351b576135048285516fffffffffffffffffffffffffffffffff81511682526fffffffffffffffffffffffffffffffff602082015116602083015273ffffffffffffffffffffffffffffffffffffffff60408201511660408301526060810151151560608301525050565b608082019150602084019350600183019250613494565b50602086015192507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08582030160408601526135578184613290565b9250505060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160608501526135948282613332565b91505060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160808501526135d08282613429565b915050608084015160a08401528091505092915050565b5f602082840312156135f7575f5ffd5b815167ffffffffffffffff81111561360d575f5ffd5b8201601f8101841361361d575f5ffd5b805167ffffffffffffffff8111156136375761363761302d565b61366860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016130a6565b81815285602083850101111561367c575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f602082840312156136a9575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610cc857610cc86136b0565b80820180821115610cc857610cc86136b0565b8082028115828204841417610cc857610cc86136b0565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60a08284031215613757575f5ffd5b610cc5838361319e565b805161ffff81168114610c32575f5ffd5b5f5f5f5f5f5f5f60e0888a031215613788575f5ffd5b875161379381612e10565b60208901519097506137a481613190565b95506137b260408901613761565b94506137c060608901613761565b93506137ce60808901613761565b925060a088015160ff811681146137e3575f5ffd5b60c08901519092506137f481612e31565b8091505092959891949750929550565b80516dffffffffffffffffffffffffffff81168114610c32575f5ffd5b5f5f5f60608486031215613833575f5ffd5b61383c84613804565b925061384a60208501613804565b9150604084015163ffffffff81168114613862575f5ffd5b809150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f826138cd577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f602082840312156138e2575f5ffd5b8151610d9181612e31565b5f5f5f606084860312156138ff575f5ffd5b833561390a81612e10565b9250602084013561391a81612e10565b929592945050506040919091013590565b5f67ffffffffffffffff8211156139445761394461302d565b5060051b60200190565b5f82601f83011261395d575f5ffd5b8135602083015f6139756139708461392b565b6130a6565b83815260079390931b82019290506020810186841115613993575f5ffd5b838310156139b6576139a58784613114565b815260809290920191602001613993565b5095945050505050565b5f82601f8301126139cf575f5ffd5b81356139dd6139708261392b565b8082825260208201915060208360081b8601019250858311156139fe575f5ffd5b602085015b838110156139b657613a15878261321e565b835260209092019161010001613a03565b5f82601f830112613a35575f5ffd5b8135613a436139708261392b565b8082825260208201915060208360051b860101925085831115613a64575f5ffd5b602085015b838110156139b6578035613a7c81612e10565b835260209283019201613a69565b5f60208284031215613a9a575f5ffd5b813567ffffffffffffffff811115613ab0575f5ffd5b820160a08185031215613ac1575f5ffd5b613ac9613083565b813567ffffffffffffffff811115613adf575f5ffd5b613aeb8682850161394e565b825250602082013567ffffffffffffffff811115613b07575f5ffd5b613b138682850161394e565b602083015250604082013567ffffffffffffffff811115613b32575f5ffd5b613b3e868285016139c0565b604083015250606082013567ffffffffffffffff811115613b5d575f5ffd5b613b6986828501613a26565b606083015250608091820135918101919091529392505050565b5f81600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008103613bb757613bb76136b0565b5f0392915050565b613c3e818573ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8251151560a0820152602083015160c082015273ffffffffffffffffffffffffffffffffffffffff60408401511660e08201526101206101008201525f610c29610120830184612f09565b5f60208284031215613c99575f5ffd5b8151610d9181612e10565b73ffffffffffffffffffffffffffffffffffffffff86168152841515602082015283600f0b604082015273ffffffffffffffffffffffffffffffffffffffff8316606082015260a060808201525f6127b060a0830184612f09565b5f5f60408385031215613d10575f5ffd5b505080516020909101519092909150565b84815283602082015273ffffffffffffffffffffffffffffffffffffffff83166040820152608060608201525f613d5b6080830184612f09565b9695505050505050565b5f7f80000000000000000000000000000000000000000000000000000000000000008203613d9557613d956136b0565b505f0390565b8082018281125f831280158216821582161715613dba57613dba6136b0565b50509291505056fea26469706673582212207d19fc4afad45fb63d3fbe9043c0550261690b7b871f8c948568ddbab8f61fd964736f6c634300081d0033