0 txs
9 calls
constructor
constructor(address bundler3, address morpho, address weth, address wStEth, address morphoToken, address morphoWrapper)
functions
BUNDLER3
viewfunction BUNDLER3() 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)
erc20WrapperDepositFor
nonpayablefunction erc20WrapperDepositFor(address wrapper, address receiver, uint256 amount)
erc20WrapperWithdrawTo
nonpayablefunction erc20WrapperWithdrawTo(address wrapper, 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)
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
0x61016080604052346102e15760c08161494c80380380916100208285610307565b8339810103126102e1576100338161033e565b906100406020820161033e565b61004c6040830161033e565b6100586060840161033e565b9161007160a061006a6080870161033e565b950161033e565b946001600160a01b038116156102f8576080526001600160a01b03169081156102f8576001600160a01b03169081156102f85760a05260c0526001600160a01b03811680156102f8576001600160a01b038316156102f8576001600160a01b038416156102f85760206004916040519283809263183fc7c960e31b82525afa9081156102ed575f916102af575b5060e0526101005261012052610140526040516145f9908161035382396080518181816101ec01528181610396015281816105520152818161081c01528181610a3101528181610dac01528181610fd70152818161122301528181611426015281816116fa01528181611987015281816119d501528181611cb601528181611f14015281816121d001528181612261015281816123f0015281816126b3015281816129d301528181612b4f01528181612f420152818161312401528181613364015281816134cb015281816138ca0152613fd7015260a0518181816103f401528181610e5b01528181611a8001528181611bef0152818161249e01528181612c2601528181612cc101528181612ef401528181613536015281816136c60152613830015260c0518181816107d00152818161128f0152818161138f01526133cf015260e051818181610664015281816127440152818161286f01528181612a3e01526132ed0152610100518181816105f00152818161071d0152818161271e0152612922015261012051818181611792015281816118d30152612e8501526101405181818161175701526137780152f35b90506020813d6020116102e5575b816102ca60209383610307565b810103126102e1576102db9061033e565b5f6100fe565b5f80fd5b3d91506102bd565b6040513d5f823e3d90fd5b63d92e233d60e01b5f5260045ffd5b601f909101601f19168101906001600160401b0382119082101761032a57604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036102e15756fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c90816301b37d46146137305750806305b4591c146113f85780631af3bbc6146134715780632075be03146113f857806331f57072146113f85780633244c12c14613311578063338346d2146132a25780633790767d146130fd57806339029ab614612f185780633acb562414612ea957806343adae8014612e3a5780634d5fcf6814612b2257806354f09129146129465780635664cb48146128d75780635a18a7d0146126605780635b866db6146123c3578063602444081461223957806362577ad0146121a45780636ef5eeae14611eeb578063827fcfcc14611c8c57806384d287ef146119ab578063a317e4b51461193c578063a387bd8e146116a7578063a7f6e606146113fd578063b1022fdf146113f8578063b172af6d146111d1578063c956570614610fae578063ca46367314610d2f578063d77e108914610a0a578063d96ca0b9146107f4578063d999984d14610785578063e17aeb46146104ff578063e2975912146103225763f2522bcd0361000f573461031f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f576101d1613949565b6024359073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036102f75773ffffffffffffffffffffffffffffffffffffffff16908082156102cf573083146102a7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810361027a575050475b8061026b578280f35b61027491614479565b5f808280f35b610262575b6004837f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b6004847fde8b5909000000000000000000000000000000000000000000000000000000008152fd5b6004847fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b6004837f08094908000000000000000000000000000000000000000000000000000000008152fd5b80fd5b503461031f5760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f5761035a613949565b60243560443567ffffffffffffffff81116104fb5761037d90369060040161379c565b909273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036104d35782156104ab579073ffffffffffffffffffffffffffffffffffffffff859392169173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169061041f8285614185565b813b156104a757848094610474604051988996879586947fe0232b4200000000000000000000000000000000000000000000000000000000865260048601526024850152606060448501526064840191613eac565b03925af1801561049a576104855780f35b61048e91613c43565b805f1261031f575f8180f35b50604051903d90823e3d90fd5b8480fd5b6004857f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b6004857f08094908000000000000000000000000000000000000000000000000000000008152fd5b8380fd5b503461031f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f5760043561053a613926565b9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036102f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106d3575b801561027f57604051907fde0e9a3e00000000000000000000000000000000000000000000000000000000825260048201526020816024818673ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af19081156106c8578391610692575b503073ffffffffffffffffffffffffffffffffffffffff8316141580610689575b610649578280f35b6102749173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661411c565b50801515610641565b90506020813d6020116106c0575b816106ad60209383613c43565b810103126106bc57515f610620565b5f80fd5b3d91506106a0565b6040513d85823e3d90fd5b506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156106c8578391610753575b506105a0565b90506020813d60201161077d575b8161076e60209383613c43565b810103126106bc57515f61074d565b3d9150610761565b503461031f57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461031f576108033661398d565b919073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036109e25773ffffffffffffffffffffffffffffffffffffffff83911680156109ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610889613f94565b9414610905575b81156104ab579173ffffffffffffffffffffffffffffffffffffffff91610902949383604051957f23b872dd00000000000000000000000000000000000000000000000000000000602088015216602486015260448501526064840152606483526108fc608484613c43565b16614565565b80f35b90506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260208160248173ffffffffffffffffffffffffffffffffffffffff87165afa9081156109af57859161097d575b5090610890565b90506020813d6020116109a7575b8161099860209383613c43565b810103126106bc57515f610976565b3d915061098b565b6040513d87823e3d90fd5b6004857fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b6004847f08094908000000000000000000000000000000000000000000000000000000008152fd5b503461031f57610a193661398d565b9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036109e257819073ffffffffffffffffffffffffffffffffffffffff8116156109ba5773ffffffffffffffffffffffffffffffffffffffff841690604051937f6f307dc3000000000000000000000000000000000000000000000000000000008552602085600481865afa948515610d24578795610caf575b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610c10575b8215610be85791602091610b6493610b0b8787614185565b876040518096819582947f2f4f21e2000000000000000000000000000000000000000000000000000000008452600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b03925af1908115610bdd578491610bae575b5015610b865790610902916142a4565b6004837f79cacff1000000000000000000000000000000000000000000000000000000008152fd5b610bd0915060203d602011610bd6575b610bc88183613c43565b810190613f35565b5f610b76565b503d610bbe565b6040513d86823e3d90fd5b6004867f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b91506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff88165afa908115610ca4578691610c72575b5091610af3565b90506020813d602011610c9c575b81610c8d60209383613c43565b810103126106bc57515f610c6b565b3d9150610c80565b6040513d88823e3d90fd5b9094506020813d602011610d1c575b81610ccb60209383613c43565b81010312610d18575173ffffffffffffffffffffffffffffffffffffffff81168103610d1857937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610acb565b8680fd5b3d9150610cbe565b6040513d89823e3d90fd5b503461031f577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36016101008112610faa5760a01361031f5760a435610d73613903565b60e43567ffffffffffffffff81116104fb57610d9390369060040161379c565b909273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036104d3579173ffffffffffffffffffffffffffffffffffffffff1682308214610f82577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ee5575b82156104ab579084929173ffffffffffffffffffffffffffffffffffffffff610e3f613e52565b1690610e8273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168093614185565b813b156104a757848094610474604051988996879586947f238d6579000000000000000000000000000000000000000000000000000000008652610ec860048701613ce6565b60a486015260c485015261010060e4850152610104840191613eac565b91506024602073ffffffffffffffffffffffffffffffffffffffff610f08613e52565b16604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa9081156109af578591610f50575b5091610e18565b90506020813d602011610f7a575b81610f6b60209383613c43565b810103126106bc57515f610f49565b3d9150610f5e565b6004867fde8b5909000000000000000000000000000000000000000000000000000000008152fd5b5080fd5b503461031f57610fbd36613b63565b91939073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036111a95773ffffffffffffffffffffffffffffffffffffffff8116156111815773ffffffffffffffffffffffffffffffffffffffff831630811490811561115a575b5015611132578315610be8576040517fb460af940000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff91821660248201529281166044840152919291602091849160649183918991165af1918215610bdd5784926110fc575b50906110c76110cc92614304565b61435d565b106110d45780f35b807f8199f5f30000000000000000000000000000000000000000000000000000000060049252fd5b91506020823d60201161112a575b8161111760209383613c43565b810103126106bc579051906110c76110b9565b3d915061110a565b6004867fd459cda8000000000000000000000000000000000000000000000000000000008152fd5b905073ffffffffffffffffffffffffffffffffffffffff611179613f94565b16145f61103b565b6004867fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b6004867f08094908000000000000000000000000000000000000000000000000000000008152fd5b503461031f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f5760043561120c613926565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036102f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214611343575b811561027f578273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b15610faa578180916024604051809481937f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528960048401525af180156113385761131c575b505073ffffffffffffffffffffffffffffffffffffffff169030820361026b578280f35b9061132691613c43565b825f1261133457825f6112f8565b8280fd5b6040513d84823e3d90fd5b90506040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526020816024818673ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af19081156106c85783916113c6575b5090611271565b90506020813d6020116113f0575b816113e160209383613c43565b810103126106bc57515f6113bf565b3d91506113d4565b6137ca565b503461031f5761140c36613b63565b91939073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036111a9578373ffffffffffffffffffffffffffffffffffffffff82161561167f5773ffffffffffffffffffffffffffffffffffffffff8416903082148015611659575b15611631577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461159b575b508315611573576040517fba0876520000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff91821660248201529281166044840152919291602091849160649183918991165af1918215610bdd57849261153d575b506110c76110cc92614304565b91506020823d60201161156b575b8161155860209383613c43565b810103126106bc579051906110c7611530565b3d915061154b565b6004867f9811e0c7000000000000000000000000000000000000000000000000000000008152fd5b909350604051907f70a08231000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff86165afa908115610ca45786916115ff575b50925f6114b7565b90506020813d602011611629575b8161161a60209383613c43565b810103126106bc57515f6115f7565b3d915061160d565b6004887fd459cda8000000000000000000000000000000000000000000000000000000008152fd5b5073ffffffffffffffffffffffffffffffffffffffff611677613f94565b16821461148b565b6004877fd92e233d000000000000000000000000000000000000000000000000000000008152fd5b503461031f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f576116df613949565b6024359073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036102f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214611888575b811561027f57611825916020917f0000000000000000000000000000000000000000000000000000000000000000906117b78273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016614185565b8573ffffffffffffffffffffffffffffffffffffffff6040518097819682957f205c2878000000000000000000000000000000000000000000000000000000008452600484016020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b0393165af1908115611338578291611869575b50156118415780f35b807f750b219c0000000000000000000000000000000000000000000000000000000060049252fd5b611882915060203d602011610bd657610bc88183613c43565b5f611838565b90506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156106c857839161190a575b5090611748565b90506020813d602011611934575b8161192560209383613c43565b810103126106bc57515f611903565b3d9150611918565b503461031f57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461031f576119ba36613afe565b73ffffffffffffffffffffffffffffffffffffffff949391947f00000000000000000000000000000000000000000000000000000000000000001633036111a9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8314611af3575b92611a6660409394611a33613f94565b855196879586957f5c2bea4900000000000000000000000000000000000000000000000000000000875260048701613f4d565b03818673ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af180156106c8576110cc9184908592611abf575b506110c790614304565b6110c79250611ae6915060403d604011611aec575b611ade8183613c43565b810190613e96565b91611ab5565b503d611ad4565b9150611bd65f611ba360a0611b083688613c84565b20611b6f611b9b611b17613f94565b92604051602081019182526002604082015260408152611b38606082613c43565b5190206040519283916020830195866020909392919373ffffffffffffffffffffffffffffffffffffffff60408201951681520152565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282613c43565b51902061453e565b604051809381927f7784c685000000000000000000000000000000000000000000000000000000008352600483016140a9565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015611c8157611c28915f91611c5f575b506140e2565b51928315611c37579291611a23565b7f1f2a2005000000000000000000000000000000000000000000000000000000005f5260045ffd5b611c7b91503d805f833e611c738183613c43565b810190614023565b5f611c22565b6040513d5f823e3d90fd5b503461031f57611c9b3661398d565b9073ffffffffffffffffffffffffffffffffffffffff9392937f00000000000000000000000000000000000000000000000000000000000000001633036102f75773ffffffffffffffffffffffffffffffffffffffff8291169384156102cf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611d24613f94565b9314611e41575b8115611e195773ffffffffffffffffffffffffffffffffffffffff8211611df15783946e22d473030f116ddee9f6b43ac78ba33b156104a75773ffffffffffffffffffffffffffffffffffffffff92839182604051967f36c7851600000000000000000000000000000000000000000000000000000000885216600487015260248601521660448401521660648201528181608481836e22d473030f116ddee9f6b43ac78ba35af1801561133857611de05750f35b81611dea91613c43565b61031f5780f35b6004847fc4bd89a9000000000000000000000000000000000000000000000000000000008152fd5b6004847f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b90506040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260208160248173ffffffffffffffffffffffffffffffffffffffff86165afa908115610bdd578491611eb9575b5090611d2b565b90506020813d602011611ee3575b81611ed460209383613c43565b810103126106bc57515f611eb2565b3d9150611ec7565b503461031f57611efa366139ff565b90929173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036104d357809173ffffffffffffffffffffffffffffffffffffffff8116156111815773ffffffffffffffffffffffffffffffffffffffff8416906040517f38d52e0f000000000000000000000000000000000000000000000000000000008152602081600481865afa908115612199577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9173ffffffffffffffffffffffffffffffffffffffff918a9161216a575b501693146120ec575b83156120c4576120618392602092612008888b9897614185565b6040519687809481937f6e553f65000000000000000000000000000000000000000000000000000000008352896004840190929173ffffffffffffffffffffffffffffffffffffffff6020916040840195845216910152565b03925af1928315610ca457869361208e575b5061208693612081916142a4565b614394565b116110d45780f35b9092506020813d6020116120bc575b816120aa60209383613c43565b810103126106bc575191612086612073565b3d915061209d565b6004877f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b92506040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152602081602481865afa908115610d24578791612138575b5092611fee565b90506020813d602011612162575b8161215360209383613c43565b810103126106bc57515f612131565b3d9150612146565b61218c915060203d602011612192575b6121848183613c43565b810190613e26565b5f611fe5565b503d61217a565b6040513d8a823e3d90fd5b503461031f576121b336613afe565b73ffffffffffffffffffffffffffffffffffffffff9491949392937f00000000000000000000000000000000000000000000000000000000000000001633036111a95790611a6660409392612206613f94565b855196879586957f50d8cd4b00000000000000000000000000000000000000000000000000000000875260048701613f4d565b503461031f576122483661398d565b919073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036109e2578273ffffffffffffffffffffffffffffffffffffffff8216156109ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461232f575b8215611e19576040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260248101939093526020918391829086908260448101611825565b91506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff86165afa908115610bdd578491612391575b50916122cb565b90506020813d6020116123bb575b816123ac60209383613c43565b810103126106bc57515f61238a565b3d915061239f565b503461031f576123d236613a75565b93929573ffffffffffffffffffffffffffffffffffffffff959192957f000000000000000000000000000000000000000000000000000000000000000016330361263857813073ffffffffffffffffffffffffffffffffffffffff88161461261057907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff899214612539575b6124fa60409673ffffffffffffffffffffffffffffffffffffffff61248284613e75565b16956124c573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168098614185565b8851998a98899788967fa99aad8900000000000000000000000000000000000000000000000000000000885260048801613eea565b03925af180156106c8576120869184908592612517575b50614394565b9050612532915060403d604011611aec57611ade8183613c43565b905f612511565b9150506024919293602073ffffffffffffffffffffffffffffffffffffffff61256184613e75565b16604051948580927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa9283156121995788936125dc575b5082156125b45793929190879061245e565b6004887f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b9092506020813d602011612608575b816125f860209383613c43565b810103126106bc5751915f6125a2565b3d91506125eb565b6004897fde8b5909000000000000000000000000000000000000000000000000000000008152fd5b6004887f08094908000000000000000000000000000000000000000000000000000000008152fd5b503461031f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f5760043561269b613926565b9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036102f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612825575b801561027f5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000061276981837f000000000000000000000000000000000000000000000000000000000000000016614185565b1691604051917fea598cb0000000000000000000000000000000000000000000000000000000008352600483015260208260248187875af1918215610bdd5784926127f1575b503073ffffffffffffffffffffffffffffffffffffffff82161415806127e8575b6127d8578380f35b6127e19261411c565b5f80808380f35b508115156127d0565b9091506020813d60201161281d575b8161280d60209383613c43565b810103126106bc5751905f6127af565b3d9150612800565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa9081156106c85783916128a5575b50612701565b90506020813d6020116128cf575b816128c060209383613c43565b810103126106bc57515f61289f565b3d91506128b3565b503461031f57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461031f5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f576004356044359073ffffffffffffffffffffffffffffffffffffffff82168092036113345760643573ffffffffffffffffffffffffffffffffffffffff81168082036104a75773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036104d3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8314612b1a575b82156104ab5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001693604051907fa1903eab000000000000000000000000000000000000000000000000000000008252600482015260208160248187895af1908115610ca4578691612ae8575b50612ab16024359185614394565b11612ac05730036127d8578380f35b6004857f8199f5f3000000000000000000000000000000000000000000000000000000008152fd5b90506020813d602011612b12575b81612b0360209383613c43565b810103126106bc57515f612aa3565b3d9150612af6565b479250612a21565b503461031f57612b3136613a75565b93929573ffffffffffffffffffffffffffffffffffffffff959192957f00000000000000000000000000000000000000000000000000000000000000001633036126385783823073ffffffffffffffffffffffffffffffffffffffff891614612e1257907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8a939214612d34575b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14612c82575b6124fa60409673ffffffffffffffffffffffffffffffffffffffff612c0a84613e75565b1695612c4d73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168098614185565b8851998a98899788967f20b76e8100000000000000000000000000000000000000000000000000000000885260048801613eea565b91929350612ca890611ba3612ca38860a0612c9d3688613c84565b20614506565b61453e565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115612199576fffffffffffffffffffffffffffffffff91612d0c918a91612d2057506140e2565b51169384156125b457939291908790612be6565b611c7b91503d808c833e611c738183613c43565b90915060249250602073ffffffffffffffffffffffffffffffffffffffff612d5b84613e75565b16604051948580927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa928315612e07578993612dd3575b508215612dab57908891612bbf565b6004897f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b9092506020813d602011612dff575b81612def60209383613c43565b810103126106bc5751915f612d9c565b3d9150612de2565b6040513d8b823e3d90fd5b60048a7fde8b5909000000000000000000000000000000000000000000000000000000008152fd5b503461031f57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461031f57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461031f57612f27366139ff565b73ffffffffffffffffffffffffffffffffffffffff939291937f00000000000000000000000000000000000000000000000000000000000000001633036104d35773ffffffffffffffffffffffffffffffffffffffff8116156109ba5781156130d557849073ffffffffffffffffffffffffffffffffffffffff8416604051907f38d52e0f000000000000000000000000000000000000000000000000000000008252602082600481845afa908115610bdd5773ffffffffffffffffffffffffffffffffffffffff6130639260209487916130b8575b50169361300a8886614185565b6040519586809481937f94bf804d0000000000000000000000000000000000000000000000000000000083528a6004840190929173ffffffffffffffffffffffffffffffffffffffff6020916040840195845216910152565b03925af1918215610ca4578692613082575061208693612081916142a4565b9091506020813d6020116130b0575b8161309e60209383613c43565b810103126106bc575190612086612073565b3d9150613091565b6130cf9150853d8711612192576121848183613c43565b5f612ffd565b6004857f9811e0c7000000000000000000000000000000000000000000000000000000008152fd5b503461031f5761310c3661398d565b9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036109e2578173ffffffffffffffffffffffffffffffffffffffff8216801561118157301461327a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810361324e575090506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260208160248173ffffffffffffffffffffffffffffffffffffffff87165afa908115610bdd57849161321c575b50905b816131fd578380f35b73ffffffffffffffffffffffffffffffffffffffff6127e1931661411c565b90506020813d602011613246575b8161323760209383613c43565b810103126106bc57515f6131f1565b3d915061322a565b6131f4576004847f1f2a2005000000000000000000000000000000000000000000000000000000008152fd5b6004857fde8b5909000000000000000000000000000000000000000000000000000000008152fd5b503461031f57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b503461031f5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261031f5760043561334c613926565b9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633036102f7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461346a575b801561027f5773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b156104fb57836040517fd0e30db0000000000000000000000000000000000000000000000000000000008152818160048187895af1801561133857613455575b50503073ffffffffffffffffffffffffffffffffffffffff8216036127d8578380f35b8161345f91613c43565b6104fb57835f613432565b50476133b2565b50346106bc577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360160e081126106bc5760a0136106bc5760a4356134b4613903565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303613708577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82146135e8575b8115611c375773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661355e613f94565b90803b156106bc5773ffffffffffffffffffffffffffffffffffffffff935f6101049286829660405198899788967f8720316d0000000000000000000000000000000000000000000000000000000088526135bb60048901613ce6565b60a48801521660c48601521660e48401525af18015611c81576135dc575080f35b61001a91505f90613c43565b90506040516135f681613bfa565b60043573ffffffffffffffffffffffffffffffffffffffff811681036106bc57815260243573ffffffffffffffffffffffffffffffffffffffff811681036106bc57602082015260443573ffffffffffffffffffffffffffffffffffffffff811681036106bc5760408201526064359073ffffffffffffffffffffffffffffffffffffffff821682036106bc57611ba3612ca360a0836136ad9560605f9601526084356080820152206136a7613f94565b90614506565b038173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa8015611c81576136fe915f91611c5f57506140e2565b5160801c90613519565b7f08094908000000000000000000000000000000000000000000000000000000005f5260045ffd5b346106bc575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126106bc5760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9181601f840112156106bc5782359167ffffffffffffffff83116106bc57602083818601950101116106bc57565b346106bc5760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126106bc5760243567ffffffffffffffff81116106bc5761381990369060040161379c565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303613708575f9182916138c5602460405183819460208301967f803a7fba000000000000000000000000000000000000000000000000000000008852848401378101868382015203017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282613c43565b5190827f00000000000000000000000000000000000000000000000000000000000000005af16138f361441c565b90156138fb57005b805190602001fd5b60c4359073ffffffffffffffffffffffffffffffffffffffff821682036106bc57565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036106bc57565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036106bc57565b359073ffffffffffffffffffffffffffffffffffffffff821682036106bc57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126106bc5760043573ffffffffffffffffffffffffffffffffffffffff811681036106bc579060243573ffffffffffffffffffffffffffffffffffffffff811681036106bc579060443590565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60809101126106bc5760043573ffffffffffffffffffffffffffffffffffffffff811681036106bc5790602435906044359060643573ffffffffffffffffffffffffffffffffffffffff811681036106bc5790565b907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820161014081126106bc5760a0136106bc5760049160a4359160c4359160e435916101043573ffffffffffffffffffffffffffffffffffffffff811681036106bc5791610124359067ffffffffffffffff82116106bc57613afa9160040161379c565b9091565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0161012081126106bc5760a0136106bc5760049060a4359060c4359060e435906101043573ffffffffffffffffffffffffffffffffffffffff811681036106bc5790565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a09101126106bc5760043573ffffffffffffffffffffffffffffffffffffffff811681036106bc5790602435906044359060643573ffffffffffffffffffffffffffffffffffffffff811681036106bc579060843573ffffffffffffffffffffffffffffffffffffffff811681036106bc5790565b60a0810190811067ffffffffffffffff821117613c1657604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117613c1657604052565b91908260a09103126106bc57604051613c9c81613bfa565b6080808294613caa8161396c565b8452613cb86020820161396c565b6020850152613cc96040820161396c565b6040850152613cda6060820161396c565b60608501520135910152565b60043573ffffffffffffffffffffffffffffffffffffffff81168091036106bc57815260243573ffffffffffffffffffffffffffffffffffffffff81168091036106bc57602082015260443573ffffffffffffffffffffffffffffffffffffffff81168091036106bc57604082015260643573ffffffffffffffffffffffffffffffffffffffff81168091036106bc5760608201526080608435910152565b6080809173ffffffffffffffffffffffffffffffffffffffff613da78261396c565b16845273ffffffffffffffffffffffffffffffffffffffff613dcb6020830161396c565b16602085015273ffffffffffffffffffffffffffffffffffffffff613df26040830161396c565b16604085015273ffffffffffffffffffffffffffffffffffffffff613e196060830161396c565b1660608501520135910152565b908160209103126106bc575173ffffffffffffffffffffffffffffffffffffffff811681036106bc5790565b60243573ffffffffffffffffffffffffffffffffffffffff811681036106bc5790565b3573ffffffffffffffffffffffffffffffffffffffff811681036106bc5790565b91908260409103126106bc576020825192015190565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b919361012093613f329795613f148573ffffffffffffffffffffffffffffffffffffffff95613d85565b60a085015260c08401521660e0820152816101008201520191613eac565b90565b908160209103126106bc575180151581036106bc5790565b9373ffffffffffffffffffffffffffffffffffffffff929061010094849298979398613f7e8861012081019b613d85565b60a088015260c08701521660e085015216910152565b6040517f5c39fcc100000000000000000000000000000000000000000000000000000000815260208160048173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa908115611c81575f9161400a575090565b613f32915060203d602011612192576121848183613c43565b6020818303126106bc5780519067ffffffffffffffff82116106bc57019080601f830112156106bc5781519167ffffffffffffffff8311613c16578260051b9060208201936140756040519586613c43565b84526020808501928201019283116106bc57602001905b8282106140995750505090565b815181526020918201910161408c565b60206040818301928281528451809452019201905f5b8181106140cc5750505090565b82518452602093840193909201916001016140bf565b8051156140ef5760200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff9290921660248301526044808301939093529181526141839161417e606483613c43565b614565565b565b6040519060205f73ffffffffffffffffffffffffffffffffffffffff828501957f095ea7b300000000000000000000000000000000000000000000000000000000875216948560248601527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604486015260448552614205606486613c43565b84519082855af15f513d82614272575b50501561422157505050565b61417e61418393604051907f095ea7b300000000000000000000000000000000000000000000000000000000602083015260248201525f60448201526044815261426c606482613c43565b82614565565b90915061429c575073ffffffffffffffffffffffffffffffffffffffff81163b15155b5f80614215565b600114614295565b6040519060205f73ffffffffffffffffffffffffffffffffffffffff828501957f095ea7b3000000000000000000000000000000000000000000000000000000008752169485602486015281604486015260448552614205606486613c43565b906b033b2e3c9fd0803ce80000008202918083046b033b2e3c9fd0803ce8000000149015171561433057565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b8115614367570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b906b033b2e3c9fd0803ce80000008202918083046b033b2e3c9fd0803ce8000000149015171561433057807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810111614330577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183010180921161433057613f329161435d565b3d15614474573d9067ffffffffffffffff8211613c16576040519161446960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160184613c43565b82523d5f602084013e565b606090565b8147106144d6575f80809373ffffffffffffffffffffffffffffffffffffffff8294165af16144a661441c565b50156144ae57565b7fd6bda275000000000000000000000000000000000000000000000000000000005f5260045ffd5b50477fcf479181000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b61452d611b6f91604051602081019182526002604082015260408152611b38606082613c43565b519020600181018091116143305790565b6040519061454d604083613c43565b6001825260203681840137614561826140e2565b5290565b905f602091828151910182855af115611c81575f513d6145e3575073ffffffffffffffffffffffffffffffffffffffff81163b155b6145a15750565b73ffffffffffffffffffffffffffffffffffffffff907f5274afe7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001141561459a56fea164736f6c634300081c000a0000000000000000000000006566194141eefa99af43bb5aa71460ca2dc90245000000000000000000000000bbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000007f39c581f595b53c5cb19bd0b3f8da6c935e2ca000000000000000000000000058d97b57bb95320f9a05dc918aef65434969c2b20000000000000000000000009d03bb2092270648d7480049d0e58d2fcf0e5123