0 txs
15.4k calls
constructor
constructor(address bundler3, address morpho, address weth, address wStEth, address morphoToken, address morphoWrapper)
functions
BUNDLER3
viewfunction BUNDLER3() view returns (address)
MORPHO_TOKEN_LEGACY
viewfunction MORPHO_TOKEN_LEGACY() view returns (address)
MORPHO_TOKEN
viewfunction MORPHO_TOKEN() view returns (address)
MORPHO_WRAPPER
viewfunction MORPHO_WRAPPER() view returns (address)
MORPHO
viewfunction MORPHO() view returns (address)
ST_ETH
viewfunction ST_ETH() view returns (address)
WRAPPED_NATIVE
viewfunction WRAPPED_NATIVE() view returns (address)
WST_ETH
viewfunction WST_ETH() view returns (address)
erc20Transfer
nonpayablefunction erc20Transfer(address token, address receiver, uint256 amount)
erc20TransferFrom
nonpayablefunction erc20TransferFrom(address token, address receiver, uint256 amount)
erc4626Deposit
nonpayablefunction erc4626Deposit(address vault, uint256 assets, uint256 maxSharePriceE27, address receiver)
erc4626Mint
nonpayablefunction erc4626Mint(address vault, uint256 shares, uint256 maxSharePriceE27, address receiver)
erc4626Redeem
nonpayablefunction erc4626Redeem(address vault, uint256 shares, uint256 minSharePriceE27, address receiver, address owner)
erc4626Withdraw
nonpayablefunction erc4626Withdraw(address vault, uint256 assets, uint256 minSharePriceE27, address receiver, address owner)
morphoBorrow
nonpayablefunction morphoBorrow(tuple marketParams, uint256 assets, uint256 shares, uint256 minSharePriceE27, address receiver)
morphoFlashLoan
nonpayablefunction morphoFlashLoan(address token, uint256 assets, bytes data)
morphoRepay
nonpayablefunction morphoRepay(tuple marketParams, uint256 assets, uint256 shares, uint256 maxSharePriceE27, address onBehalf, bytes data)
morphoSupply
nonpayablefunction morphoSupply(tuple marketParams, uint256 assets, uint256 shares, uint256 maxSharePriceE27, address onBehalf, bytes data)
morphoSupplyCollateral
nonpayablefunction morphoSupplyCollateral(tuple marketParams, uint256 assets, address onBehalf, bytes data)
morphoWithdraw
nonpayablefunction morphoWithdraw(tuple marketParams, uint256 assets, uint256 shares, uint256 minSharePriceE27, address receiver)
morphoWithdrawCollateral
nonpayablefunction morphoWithdrawCollateral(tuple marketParams, uint256 assets, address receiver)
morphoWrapperDepositFor
nonpayablefunction morphoWrapperDepositFor(address receiver, uint256 amount)
morphoWrapperWithdrawTo
nonpayablefunction morphoWrapperWithdrawTo(address receiver, uint256 amount)
nativeTransfer
nonpayablefunction nativeTransfer(address receiver, uint256 amount)
onMorphoFlashLoan
nonpayablefunction onMorphoFlashLoan(uint256, bytes data)
onMorphoRepay
nonpayablefunction onMorphoRepay(uint256, bytes data)
onMorphoSupply
nonpayablefunction onMorphoSupply(uint256, bytes data)
onMorphoSupplyCollateral
nonpayablefunction onMorphoSupplyCollateral(uint256, bytes data)
permit2TransferFrom
nonpayablefunction permit2TransferFrom(address token, address receiver, uint256 amount)
stakeEth
nonpayablefunction stakeEth(uint256 amount, uint256 maxSharePriceE27, address referral, address receiver)
unwrapNative
nonpayablefunction unwrapNative(uint256 amount, address receiver)
unwrapStEth
nonpayablefunction unwrapStEth(uint256 amount, address receiver)
wrapNative
nonpayablefunction wrapNative(uint256 amount, address receiver)
wrapStEth
nonpayablefunction wrapStEth(uint256 amount, address receiver)
events
No events.
errors
AdapterAddress
error AdapterAddress()
DepositFailed
error DepositFailed()
FailedCall
error FailedCall()
InsufficientBalance
error InsufficientBalance(uint256 balance, uint256 needed)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
SlippageExceeded
error SlippageExceeded()
UnauthorizedSender
error UnauthorizedSender()
UnexpectedOwner
error UnexpectedOwner()
UnsafeCast
error UnsafeCast()
WithdrawFailed
error WithdrawFailed()
ZeroAddress
error ZeroAddress()
ZeroAmount
error ZeroAmount()
ZeroShares
error ZeroShares()
creation bytecode
0x610180806040523461033c5760c08161489a803803809161002082856103a7565b83398101031261033c57610033816103de565b90610040602082016103de565b9061004d604082016103de565b610059606083016103de565b9261007260a061006b608086016103de565b94016103de565b946001600160a01b03811615610398576080526001600160a01b0316908115610398576001600160a01b03169081156103985760a05260c0526001600160a01b038216908115610398576001600160a01b03811615610398576001600160a01b0384169182156103985760206004916040519283809263183fc7c960e31b82525afa908115610348575f91610353575b50906004936020939260e052610100526101205260405192838092636f307dc360e01b82525afa908115610348575f91610302575b506001600160a01b031661014052610160526040516144a790816103f382396080518181816101ec01528181610396015281816105520152818161081c01528181610a8701528181610cb201528181610f32015281816111e10152818161144801528181611727015281816119b401528181611a0201528181611ce301528181611f41015281816122080152818161229e0152818161256101528181612881015281816129fd01528181612df001528181612fd20152818161321201528181613379015281816137780152613e85015260a0518181816103f401528181610b3601528181611aad01528181611c1c0152818161234c01528181612ad401528181612b6f01528181612da2015281816133e40152818161357401526136de015260c0518181816107d00152818161124d01528181611342015261327d015260e051818181610664015281816125f20152818161271d015281816128ec015261319b0152610100518181816105f00152818161071d015281816125cc01526127d00152610120518181816117bf015281816119000152612d33015261014051818181610fca0152818161112601526113fb015261016051818181610f8f0152818161178401526136260152f35b90506020813d602011610340575b8161031d602093836103a7565b8101031261033c57516001600160a01b038116810361033c575f610137565b5f80fd5b3d9150610310565b6040513d5f823e3d90fd5b929190506020833d602011610390575b81610370602093836103a7565b8101031261033c576004936103866020946103de565b9192935093610102565b3d9150610363565b63d92e233d60e01b5f5260045ffd5b601f909101601f19168101906001600160401b038211908210176103ca57604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361033c5756fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c90816301b37d46146135de5750806305b4591c146113ab5780631af3bbc61461331f5780632075be03146113ab57806331f57072146113ab5780633244c12c146131bf578063338346d2146131505780633790767d14612fab57806339029ab614612dc65780633acb562414612d5757806343adae8014612ce85780634d5fcf68146129d057806354f09129146127f45780635664cb48146127855780635a18a7d01461250e5780635b866db61461227157806362577ad0146121dc5780636ef5eeae14611f18578063827fcfcc14611cb957806384d287ef146119d8578063a317e4b514611969578063a387bd8e146116d4578063a7f6e6061461141f578063ab7be3a5146113b0578063b1022fdf146113ab578063b172af6d1461118f578063bff6317014610edf578063c956570614610c89578063ca46367314610a0a578063d96ca0b9146107f4578063d999984d14610785578063e17aeb46146104ff578063e2975912146103225763f2522bcd0361000f573461031f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f576101d16137f7565b6024359073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036102f75773ffffffffffffffffffffffffffffffffffffffff16908082156102cf573083146102a7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810361027a575050475b8061026b578280f35b61027491614327565b5f808280f35b610262575b6004837f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b6004847fde8b5909000000000000000000000000000000000000000000000000000000008152fd5b6004847fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b6004837f08094908000000000000000000000000000000000000000000000000000000008152fd5b80fd5b503461031f5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f5761035a6137f7565b60243560443567ffffffffffffffff81116104fb5761037d90369060040161364a565b909273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036104d35782156104ab579073ffffffffffffffffffffffffffffffffffffffff859392169173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169061041f8285614033565b813b156104a757848094610474604051988996879586947fe0232b4200000000000000000000000000000000000000000000000000000000865260048601526024850152606060448501526064840191613d5a565b03925af1801561049a576104855780f35b61048e91613af1565b805f1261031f575f8180f35b50604051903d90823e3d90fd5b8480fd5b6004857f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b6004857f08094908000000000000000000000000000000000000000000000000000000008152fd5b8380fd5b503461031f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f5760043561053a6137d4565b9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036102f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106d3575b801561027f57604051907fde0e9a3e00000000000000000000000000000000000000000000000000000000825260048201526020816024818673ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af19081156106c8578391610692575b503073ffffffffffffffffffffffffffffffffffffffff8316141580610689575b610649578280f35b6102749173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016613fca565b50801515610641565b90506020813d6020116106c0575b816106ad60209383613af1565b810103126106bc57515f610620565b5f80fd5b3d91506106a0565b6040513d85823e3d90fd5b506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156106c8578391610753575b506105a0565b90506020813d60201161077d575b8161076e60209383613af1565b810103126106bc57515f61074d565b3d9150610761565b503461031f57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461031f576108033661383b565b919073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036109e25773ffffffffffffffffffffffffffffffffffffffff83911680156109ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610889613e42565b9414610905575b81156104ab579173ffffffffffffffffffffffffffffffffffffffff91610902949383604051957f23b872dd00000000000000000000000000000000000000000000000000000000602088015216602486015260448501526064840152606483526108fc608484613af1565b16614413565b80f35b90506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260208160248173ffffffffffffffffffffffffffffffffffffffff87165afa9081156109af57859161097d575b5090610890565b90506020813d6020116109a7575b8161099860209383613af1565b810103126106bc57515f610976565b3d915061098b565b6040513d87823e3d90fd5b6004857fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b6004847f08094908000000000000000000000000000000000000000000000000000000008152fd5b503461031f577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36016101008112610c855760a01361031f5760a435610a4e6137b1565b60e43567ffffffffffffffff81116104fb57610a6e90369060040161364a565b909273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036104d3579173ffffffffffffffffffffffffffffffffffffffff1682308214610c5d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610bc0575b82156104ab579084929173ffffffffffffffffffffffffffffffffffffffff610b1a613d00565b1690610b5d73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168093614033565b813b156104a757848094610474604051988996879586947f238d6579000000000000000000000000000000000000000000000000000000008652610ba360048701613b94565b60a486015260c485015261010060e4850152610104840191613d5a565b91506024602073ffffffffffffffffffffffffffffffffffffffff610be3613d00565b16604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa9081156109af578591610c2b575b5091610af3565b90506020813d602011610c55575b81610c4660209383613af1565b810103126106bc57515f610c24565b3d9150610c39565b6004867fde8b5909000000000000000000000000000000000000000000000000000000008152fd5b5080fd5b503461031f57610c9836613a11565b91939073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610eb75773ffffffffffffffffffffffffffffffffffffffff811615610e8f5773ffffffffffffffffffffffffffffffffffffffff8316308114908115610e68575b5015610e40578315610e18576040517fb460af940000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff91821660248201529281166044840152919291602091849160649183918991165af1918215610e0d578492610dd7575b5090610da2610da7926141b2565b61420b565b10610daf5780f35b807f8199f5f30000000000000000000000000000000000000000000000000000000060049252fd5b91506020823d602011610e05575b81610df260209383613af1565b810103126106bc57905190610da2610d94565b3d9150610de5565b6040513d86823e3d90fd5b6004867f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b6004867fd459cda8000000000000000000000000000000000000000000000000000000008152fd5b905073ffffffffffffffffffffffffffffffffffffffff610e87613e42565b16145f610d16565b6004867fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b6004867f08094908000000000000000000000000000000000000000000000000000000008152fd5b503461031f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f57610f176137f7565b6024359073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036102f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82146110db575b811561027f5761105d916020917f000000000000000000000000000000000000000000000000000000000000000090610fef8273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016614033565b8573ffffffffffffffffffffffffffffffffffffffff6040518097819682957f2f4f21e2000000000000000000000000000000000000000000000000000000008452600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0393165af19081156110d05782916110a1575b50156110795780f35b807f79cacff10000000000000000000000000000000000000000000000000000000060049252fd5b6110c3915060203d6020116110c9575b6110bb8183613af1565b810190613e2a565b5f611070565b503d6110b1565b6040513d84823e3d90fd5b90506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156106c857839161115d575b5090610f80565b90506020813d602011611187575b8161117860209383613af1565b810103126106bc57515f611156565b3d915061116b565b503461031f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f576004356111ca6137d4565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036102f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82146112f6575b811561027f578273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15610c85578180916024604051809481937f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528960048401525af180156110d0576112da575b505073ffffffffffffffffffffffffffffffffffffffff169030820361026b578280f35b906112e491613af1565b825f126112f257825f6112b6565b8280fd5b90506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818673ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af19081156106c8578391611379575b509061122f565b90506020813d6020116113a3575b8161139460209383613af1565b810103126106bc57515f611372565b3d9150611387565b613678565b503461031f57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461031f5761142e36613a11565b91939073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610eb7578373ffffffffffffffffffffffffffffffffffffffff8216156116ac5773ffffffffffffffffffffffffffffffffffffffff8416903082148015611686575b1561165e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146115bd575b508315611595576040517fba0876520000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff91821660248201529281166044840152919291602091849160649183918991165af1918215610e0d57849261155f575b50610da2610da7926141b2565b91506020823d60201161158d575b8161157a60209383613af1565b810103126106bc57905190610da2611552565b3d915061156d565b6004867f9811e0c7000000000000000000000000000000000000000000000000000000008152fd5b909350604051907f70a08231000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff86165afa908115611653578691611621575b50925f6114d9565b90506020813d60201161164b575b8161163c60209383613af1565b810103126106bc57515f611619565b3d915061162f565b6040513d88823e3d90fd5b6004887fd459cda8000000000000000000000000000000000000000000000000000000008152fd5b5073ffffffffffffffffffffffffffffffffffffffff6116a4613e42565b1682146114ad565b6004877fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b503461031f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f5761170c6137f7565b6024359073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036102f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82146118b5575b811561027f57611852916020917f0000000000000000000000000000000000000000000000000000000000000000906117e48273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016614033565b8573ffffffffffffffffffffffffffffffffffffffff6040518097819682957f205c2878000000000000000000000000000000000000000000000000000000008452600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0393165af19081156110d0578291611896575b501561186e5780f35b807f750b219c0000000000000000000000000000000000000000000000000000000060049252fd5b6118af915060203d6020116110c9576110bb8183613af1565b5f611865565b90506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156106c8578391611937575b5090611775565b90506020813d602011611961575b8161195260209383613af1565b810103126106bc57515f611930565b3d9150611945565b503461031f57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461031f576119e7366139ac565b73ffffffffffffffffffffffffffffffffffffffff949391947f0000000000000000000000000000000000000000000000000000000000000000163303610eb7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8314611b20575b92611a9360409394611a60613e42565b855196879586957f5c2bea4900000000000000000000000000000000000000000000000000000000875260048701613de3565b03818673ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af180156106c857610da79184908592611aec575b50610da2906141b2565b610da29250611b13915060403d604011611b19575b611b0b8183613af1565b810190613d44565b91611ae2565b503d611b01565b9150611c035f611bd060a0611b353688613b32565b20611b9c611bc8611b44613e42565b92604051602081019182526002604082015260408152611b65606082613af1565b5190206040519283916020830195866020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282613af1565b5190206143ec565b604051809381927f7784c68500000000000000000000000000000000000000000000000000000000835260048301613f57565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015611cae57611c55915f91611c8c575b50613f90565b51928315611c64579291611a50565b7f1f2a2005000000000000000000000000000000000000000000000000000000005f5260045ffd5b611ca891503d805f833e611ca08183613af1565b810190613ed1565b5f611c4f565b6040513d5f823e3d90fd5b503461031f57611cc83661383b565b9073ffffffffffffffffffffffffffffffffffffffff9392937f00000000000000000000000000000000000000000000000000000000000000001633036102f75773ffffffffffffffffffffffffffffffffffffffff8291169384156102cf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611d51613e42565b9314611e6e575b8115611e465773ffffffffffffffffffffffffffffffffffffffff8211611e1e5783946e22d473030f116ddee9f6b43ac78ba33b156104a75773ffffffffffffffffffffffffffffffffffffffff92839182604051967f36c7851600000000000000000000000000000000000000000000000000000000885216600487015260248601521660448401521660648201528181608481836e22d473030f116ddee9f6b43ac78ba35af180156110d057611e0d5750f35b81611e1791613af1565b61031f5780f35b6004847fc4bd89a9000000000000000000000000000000000000000000000000000000008152fd5b6004847f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b90506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260208160248173ffffffffffffffffffffffffffffffffffffffff86165afa908115610e0d578491611ee6575b5090611d58565b90506020813d602011611f10575b81611f0160209383613af1565b810103126106bc57515f611edf565b3d9150611ef4565b503461031f57611f27366138ad565b90929173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036104d357809173ffffffffffffffffffffffffffffffffffffffff811615610e8f5773ffffffffffffffffffffffffffffffffffffffff8416906040517f38d52e0f000000000000000000000000000000000000000000000000000000008152602081600481865afa9081156121d1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9173ffffffffffffffffffffffffffffffffffffffff918a916121a2575b50169314612119575b83156120f15761208e8392602092612035888b9897614033565b6040519687809481937f6e553f65000000000000000000000000000000000000000000000000000000008352896004840190929173ffffffffffffffffffffffffffffffffffffffff6020916040840195845216910152565b03925af19283156116535786936120bb575b506120b3936120ae91614152565b614242565b11610daf5780f35b9092506020813d6020116120e9575b816120d760209383613af1565b810103126106bc5751916120b36120a0565b3d91506120ca565b6004877f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b92506040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152602081602481865afa908115612197578791612165575b509261201b565b90506020813d60201161218f575b8161218060209383613af1565b810103126106bc57515f61215e565b3d9150612173565b6040513d89823e3d90fd5b6121c4915060203d6020116121ca575b6121bc8183613af1565b810190613cd4565b5f612012565b503d6121b2565b6040513d8a823e3d90fd5b503461031f576121eb366139ac565b73ffffffffffffffffffffffffffffffffffffffff9491949392937f0000000000000000000000000000000000000000000000000000000000000000163303610eb75790611a936040939261223e613e42565b855196879586957f50d8cd4b00000000000000000000000000000000000000000000000000000000875260048701613de3565b503461031f5761228036613923565b93929573ffffffffffffffffffffffffffffffffffffffff959192957f00000000000000000000000000000000000000000000000000000000000000001633036124e657813073ffffffffffffffffffffffffffffffffffffffff8816146124be57907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8992146123e7575b6123a860409673ffffffffffffffffffffffffffffffffffffffff61233084613d23565b169561237373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168098614033565b8851998a98899788967fa99aad8900000000000000000000000000000000000000000000000000000000885260048801613d98565b03925af180156106c8576120b391849085926123c5575b50614242565b90506123e0915060403d604011611b1957611b0b8183613af1565b905f6123bf565b9150506024919293602073ffffffffffffffffffffffffffffffffffffffff61240f84613d23565b16604051948580927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa9283156121d157889361248a575b5082156124625793929190879061230c565b6004887f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b9092506020813d6020116124b6575b816124a660209383613af1565b810103126106bc5751915f612450565b3d9150612499565b6004897fde8b5909000000000000000000000000000000000000000000000000000000008152fd5b6004887f08094908000000000000000000000000000000000000000000000000000000008152fd5b503461031f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f576004356125496137d4565b9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036102f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146126d3575b801561027f5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000061261781837f000000000000000000000000000000000000000000000000000000000000000016614033565b1691604051917fea598cb0000000000000000000000000000000000000000000000000000000008352600483015260208260248187875af1918215610e0d57849261269f575b503073ffffffffffffffffffffffffffffffffffffffff8216141580612696575b612686578380f35b61268f92613fca565b5f80808380f35b5081151561267e565b9091506020813d6020116126cb575b816126bb60209383613af1565b810103126106bc5751905f61265d565b3d91506126ae565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156106c8578391612753575b506125af565b90506020813d60201161277d575b8161276e60209383613af1565b810103126106bc57515f61274d565b3d9150612761565b503461031f57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461031f5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f576004356044359073ffffffffffffffffffffffffffffffffffffffff82168092036112f25760643573ffffffffffffffffffffffffffffffffffffffff81168082036104a75773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036104d3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83146129c8575b82156104ab5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001693604051907fa1903eab000000000000000000000000000000000000000000000000000000008252600482015260208160248187895af1908115611653578691612996575b5061295f6024359185614242565b1161296e573003612686578380f35b6004857f8199f5f3000000000000000000000000000000000000000000000000000000008152fd5b90506020813d6020116129c0575b816129b160209383613af1565b810103126106bc57515f612951565b3d91506129a4565b4792506128cf565b503461031f576129df36613923565b93929573ffffffffffffffffffffffffffffffffffffffff959192957f00000000000000000000000000000000000000000000000000000000000000001633036124e65783823073ffffffffffffffffffffffffffffffffffffffff891614612cc057907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8a939214612be2575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14612b30575b6123a860409673ffffffffffffffffffffffffffffffffffffffff612ab884613d23565b1695612afb73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168098614033565b8851998a98899788967f20b76e8100000000000000000000000000000000000000000000000000000000885260048801613d98565b91929350612b5690611bd0612b518860a0612b4b3688613b32565b206143b4565b6143ec565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156121d1576fffffffffffffffffffffffffffffffff91612bba918a91612bce5750613f90565b511693841561246257939291908790612a94565b611ca891503d808c833e611ca08183613af1565b90915060249250602073ffffffffffffffffffffffffffffffffffffffff612c0984613d23565b16604051948580927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa928315612cb5578993612c81575b508215612c5957908891612a6d565b6004897f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b9092506020813d602011612cad575b81612c9d60209383613af1565b810103126106bc5751915f612c4a565b3d9150612c90565b6040513d8b823e3d90fd5b60048a7fde8b5909000000000000000000000000000000000000000000000000000000008152fd5b503461031f57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461031f57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461031f57612dd5366138ad565b73ffffffffffffffffffffffffffffffffffffffff939291937f00000000000000000000000000000000000000000000000000000000000000001633036104d35773ffffffffffffffffffffffffffffffffffffffff8116156109ba578115612f8357849073ffffffffffffffffffffffffffffffffffffffff8416604051907f38d52e0f000000000000000000000000000000000000000000000000000000008252602082600481845afa908115610e0d5773ffffffffffffffffffffffffffffffffffffffff612f11926020948791612f66575b501693612eb88886614033565b6040519586809481937f94bf804d0000000000000000000000000000000000000000000000000000000083528a6004840190929173ffffffffffffffffffffffffffffffffffffffff6020916040840195845216910152565b03925af1918215611653578692612f3057506120b3936120ae91614152565b9091506020813d602011612f5e575b81612f4c60209383613af1565b810103126106bc5751906120b36120a0565b3d9150612f3f565b612f7d9150853d87116121ca576121bc8183613af1565b5f612eab565b6004857f9811e0c7000000000000000000000000000000000000000000000000000000008152fd5b503461031f57612fba3661383b565b9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036109e2578173ffffffffffffffffffffffffffffffffffffffff82168015610e8f573014613128577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81036130fc575090506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff87165afa908115610e0d5784916130ca575b50905b816130ab578380f35b73ffffffffffffffffffffffffffffffffffffffff61268f9316613fca565b90506020813d6020116130f4575b816130e560209383613af1565b810103126106bc57515f61309f565b3d91506130d8565b6130a2576004847f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b6004857fde8b5909000000000000000000000000000000000000000000000000000000008152fd5b503461031f57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461031f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f576004356131fa6137d4565b9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036102f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114613318575b801561027f5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b156104fb57836040517fd0e30db0000000000000000000000000000000000000000000000000000000008152818160048187895af180156110d057613303575b50503073ffffffffffffffffffffffffffffffffffffffff821603612686578380f35b8161330d91613af1565b6104fb57835f6132e0565b5047613260565b50346106bc577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360160e081126106bc5760a0136106bc5760a4356133626137b1565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036135b6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214613496575b8115611c645773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661340c613e42565b90803b156106bc5773ffffffffffffffffffffffffffffffffffffffff935f6101049286829660405198899788967f8720316d00000000000000000000000000000000000000000000000000000000885261346960048901613b94565b60a48801521660c48601521660e48401525af18015611cae5761348a575080f35b61001a91505f90613af1565b90506040516134a481613aa8565b60043573ffffffffffffffffffffffffffffffffffffffff811681036106bc57815260243573ffffffffffffffffffffffffffffffffffffffff811681036106bc57602082015260443573ffffffffffffffffffffffffffffffffffffffff811681036106bc5760408201526064359073ffffffffffffffffffffffffffffffffffffffff821682036106bc57611bd0612b5160a08361355b9560605f960152608435608082015220613555613e42565b906143b4565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015611cae576135ac915f91611c8c5750613f90565b5160801c906133c7565b7f08094908000000000000000000000000000000000000000000000000000000005f5260045ffd5b346106bc575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126106bc5760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9181601f840112156106bc5782359167ffffffffffffffff83116106bc57602083818601950101116106bc57565b346106bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126106bc5760243567ffffffffffffffff81116106bc576136c790369060040161364a565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036135b6575f918291613773602460405183819460208301967f803a7fba000000000000000000000000000000000000000000000000000000008852848401378101868382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282613af1565b5190827f00000000000000000000000000000000000000000000000000000000000000005af16137a16142ca565b90156137a957005b805190602001fd5b60c4359073ffffffffffffffffffffffffffffffffffffffff821682036106bc57565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036106bc57565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036106bc57565b359073ffffffffffffffffffffffffffffffffffffffff821682036106bc57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126106bc5760043573ffffffffffffffffffffffffffffffffffffffff811681036106bc579060243573ffffffffffffffffffffffffffffffffffffffff811681036106bc579060443590565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60809101126106bc5760043573ffffffffffffffffffffffffffffffffffffffff811681036106bc5790602435906044359060643573ffffffffffffffffffffffffffffffffffffffff811681036106bc5790565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820161014081126106bc5760a0136106bc5760049160a4359160c4359160e435916101043573ffffffffffffffffffffffffffffffffffffffff811681036106bc5791610124359067ffffffffffffffff82116106bc576139a89160040161364a565b9091565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0161012081126106bc5760a0136106bc5760049060a4359060c4359060e435906101043573ffffffffffffffffffffffffffffffffffffffff811681036106bc5790565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a09101126106bc5760043573ffffffffffffffffffffffffffffffffffffffff811681036106bc5790602435906044359060643573ffffffffffffffffffffffffffffffffffffffff811681036106bc579060843573ffffffffffffffffffffffffffffffffffffffff811681036106bc5790565b60a0810190811067ffffffffffffffff821117613ac457604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117613ac457604052565b91908260a09103126106bc57604051613b4a81613aa8565b6080808294613b588161381a565b8452613b666020820161381a565b6020850152613b776040820161381a565b6040850152613b886060820161381a565b60608501520135910152565b60043573ffffffffffffffffffffffffffffffffffffffff81168091036106bc57815260243573ffffffffffffffffffffffffffffffffffffffff81168091036106bc57602082015260443573ffffffffffffffffffffffffffffffffffffffff81168091036106bc57604082015260643573ffffffffffffffffffffffffffffffffffffffff81168091036106bc5760608201526080608435910152565b6080809173ffffffffffffffffffffffffffffffffffffffff613c558261381a565b16845273ffffffffffffffffffffffffffffffffffffffff613c796020830161381a565b16602085015273ffffffffffffffffffffffffffffffffffffffff613ca06040830161381a565b16604085015273ffffffffffffffffffffffffffffffffffffffff613cc76060830161381a565b1660608501520135910152565b908160209103126106bc575173ffffffffffffffffffffffffffffffffffffffff811681036106bc5790565b60243573ffffffffffffffffffffffffffffffffffffffff811681036106bc5790565b3573ffffffffffffffffffffffffffffffffffffffff811681036106bc5790565b91908260409103126106bc576020825192015190565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b919361012093613de09795613dc28573ffffffffffffffffffffffffffffffffffffffff95613c33565b60a085015260c08401521660e0820152816101008201520191613d5a565b90565b9373ffffffffffffffffffffffffffffffffffffffff929061010094849298979398613e148861012081019b613c33565b60a088015260c08701521660e085015216910152565b908160209103126106bc575180151581036106bc5790565b6040517f5c39fcc100000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115611cae575f91613eb8575090565b613de0915060203d6020116121ca576121bc8183613af1565b6020818303126106bc5780519067ffffffffffffffff82116106bc57019080601f830112156106bc5781519167ffffffffffffffff8311613ac4578260051b906020820193613f236040519586613af1565b84526020808501928201019283116106bc57602001905b828210613f475750505090565b8151815260209182019101613f3a565b60206040818301928281528451809452019201905f5b818110613f7a5750505090565b8251845260209384019390920191600101613f6d565b805115613f9d5760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff9290921660248301526044808301939093529181526140319161402c606483613af1565b614413565b565b6040519060205f73ffffffffffffffffffffffffffffffffffffffff828501957f095ea7b300000000000000000000000000000000000000000000000000000000875216948560248601527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6044860152604485526140b3606486613af1565b84519082855af15f513d82614120575b5050156140cf57505050565b61402c61403193604051907f095ea7b300000000000000000000000000000000000000000000000000000000602083015260248201525f60448201526044815261411a606482613af1565b82614413565b90915061414a575073ffffffffffffffffffffffffffffffffffffffff81163b15155b5f806140c3565b600114614143565b6040519060205f73ffffffffffffffffffffffffffffffffffffffff828501957f095ea7b30000000000000000000000000000000000000000000000000000000087521694856024860152816044860152604485526140b3606486613af1565b906b033b2e3c9fd0803ce80000008202918083046b033b2e3c9fd0803ce800000014901517156141de57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8115614215570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b906b033b2e3c9fd0803ce80000008202918083046b033b2e3c9fd0803ce800000014901517156141de57807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101116141de577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818301018092116141de57613de09161420b565b3d15614322573d9067ffffffffffffffff8211613ac4576040519161431760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184613af1565b82523d5f602084013e565b606090565b814710614384575f80809373ffffffffffffffffffffffffffffffffffffffff8294165af16143546142ca565b501561435c57565b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b50477fcf479181000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b6143db611b9c91604051602081019182526002604082015260408152611b65606082613af1565b519020600181018091116141de5790565b604051906143fb604083613af1565b600182526020368184013761440f82613f90565b5290565b905f602091828151910182855af115611cae575f513d614491575073ffffffffffffffffffffffffffffffffffffffff81163b155b61444f5750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001141561444856fea164736f6c634300081c000a0000000000000000000000006566194141eefa99af43bb5aa71460ca2dc90245000000000000000000000000bbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca000000000000000000000000058d97b57bb95320f9a05dc918aef65434969c2b20000000000000000000000009d03bb2092270648d7480049d0e58d2fcf0e5123