diff --git a/proto/adaptors/aave/aave_v3_debt_token.proto b/proto/adaptors/aave/aave_v3_debt_token.proto index fc8dc2e4..2944868b 100644 --- a/proto/adaptors/aave/aave_v3_debt_token.proto +++ b/proto/adaptors/aave/aave_v3_debt_token.proto @@ -13,6 +13,11 @@ import "adaptors/aave/aave_v3_a_token.proto"; import "adaptors/compound/c_token.proto"; import "adaptors/balancer/balancer_pool.proto"; import "adaptors/frax/f_token.proto"; +import "adaptors/morpho/morpho_aave_v2_a_token.proto"; +import "adaptors/morpho/morpho_aave_v2_debt_token.proto"; +import "adaptors/morpho/morpho_aave_v3_a_token_collateral.proto"; +import "adaptors/morpho/morpho_aave_v3_a_token_p2p.proto"; +import "adaptors/morpho/morpho_aave_v3_debt_token.proto"; import "adaptors/uniswap/uniswap_v3.proto"; import "adaptors/uniswap/swap_with_uniswap.proto"; import "adaptors/fees_and_reserves.proto"; @@ -137,6 +142,16 @@ message AaveV3DebtTokenAdaptorV1 { BalancerPoolAdaptorV1Calls balancer_pool_v1_calls = 18; // Represents function calls to the FTokenAdaptor V1 FTokenAdaptorV1Calls f_token_v1_calls = 19; + // Represents function calls to the MorphoAaveV2AToken V1 + MorphoAaveV2ATokenAdaptorV1Calls morpho_aave_v2_a_token_v1_calls = 20; + // Represents function calls to the MorphoAaveV2DebtToken V1 + MorphoAaveV2DebtTokenAdaptorV1Calls morpho_aave_v2_debt_token_v1_calls = 21; + // Represents function calls to the MorphoAaveV3ATokenCollateral V1 + MorphoAaveV3ATokenCollateralAdaptorV1Calls morpho_aave_v3_a_token_collateral_v1_calls = 22; + // Represents function calls to the MorphoAaveV3ATokenP2P V1 + MorphoAaveV3ATokenP2PAdaptorV1Calls morpho_aave_v3_a_token_p2p_v1_calls = 23; + // Represents function calls to the MorphoAaveV3DebtToken V1 + MorphoAaveV3DebtTokenAdaptorV1Calls morpho_aave_v3_debt_token_v1_calls = 24; } } } diff --git a/proto/adaptors/balancer/balancer_pool.proto b/proto/adaptors/balancer/balancer_pool.proto index 2ea53446..5c31f74c 100644 --- a/proto/adaptors/balancer/balancer_pool.proto +++ b/proto/adaptors/balancer/balancer_pool.proto @@ -1,5 +1,5 @@ /* -* Protos for function calls to the Compound CToken adaptor. +* Protos for function calls to the Balancer Pool adaptor. */ syntax = "proto3"; @@ -9,7 +9,7 @@ option go_package = "/steward_proto"; import "adaptors/base.proto"; -// Represents call data for the Compound C Token adaptor V2, managing lending positions on Compound. +// Represents call data for the Balancer Pool adaptor V1, for managing pool positions on Balancer. message BalancerPoolAdaptorV1 { oneof function { /***** BASE ADAPTOR FUNCTIONS *****/ diff --git a/proto/adaptors/frax/f_token.proto b/proto/adaptors/frax/f_token.proto index 0186bff3..d280bc17 100644 --- a/proto/adaptors/frax/f_token.proto +++ b/proto/adaptors/frax/f_token.proto @@ -1,5 +1,5 @@ /* -* Protos for function calls to the OneInch adaptor. +* Protos for function calls to the Frax adaptor. */ syntax = "proto3"; @@ -9,7 +9,7 @@ option go_package = "/steward_proto"; import "adaptors/base.proto"; -// Represents call data for the OneInch adaptor. +// Represents call data for the Frax adaptor. message FTokenAdaptorV1 { oneof function { /***** BASE ADAPTOR FUNCTIONS *****/ diff --git a/proto/adaptors/morpho/morpho_aave_v2_a_token.proto b/proto/adaptors/morpho/morpho_aave_v2_a_token.proto new file mode 100644 index 00000000..1224de5e --- /dev/null +++ b/proto/adaptors/morpho/morpho_aave_v2_a_token.proto @@ -0,0 +1,58 @@ +/* +* Protos for function calls to the Morpho Aave V2 AToken adaptor. +*/ + +syntax = "proto3"; +package steward.v3; + +option go_package = "/steward_proto"; + +import "adaptors/base.proto"; + +// Represents call data for the Morpho Aave V2 AToken adaptor. +message MorphoAaveV2ATokenAdaptorV1 { + oneof function { + /***** BASE ADAPTOR FUNCTIONS *****/ + + // Represents function `revokeApproval(ERC20 asset, address spender)` + RevokeApproval revoke_approval = 1; + + /***** ADAPTOR-SPECIFIC FUNCTIONS *****/ + + // Represents function `depositToAaveV2Morpho(IAaveToken aToken, uint256 amountToDeposit)` + DepositToAaveV2Morpho deposit_to_aave_v2_morpho = 2; + // Represents function `withdrawFromAaveV2Morpho(IAaveToken aToken, uint256 amountToWithdraw)` + WithdrawFromAaveV2Morpho withdraw_from_aave_v2_morpho = 3; + } + + /* + * Allows strategists to lend assets on Morpho. + * + * Represents function `depositToAaveV2Morpho(IAaveToken aToken, uint256 amountToDeposit)` + */ + message DepositToAaveV2Morpho { + // The address of the Aave V2 aToken to deposit to. + string a_token = 1; + + // The amount of the asset to deposit. + string amount_to_deposit = 2; + } + + /* + * Allows strategists to withdraw assets from Morpho. + * + * Represents function `withdrawFromAaveV2Morpho(IAaveToken aToken, uint256 amountToWithdraw)` + */ + message WithdrawFromAaveV2Morpho { + // The address of the Aave V2 aToken to withdraw from. + string a_token = 1; + + // The amount of the asset to withdraw. + string amount_to_withdraw = 2; + } + +} + +message MorphoAaveV2ATokenAdaptorV1Calls { + repeated MorphoAaveV2ATokenAdaptorV1 calls = 1; +} diff --git a/proto/adaptors/morpho/morpho_aave_v2_debt_token.proto b/proto/adaptors/morpho/morpho_aave_v2_debt_token.proto new file mode 100644 index 00000000..29d0f7fd --- /dev/null +++ b/proto/adaptors/morpho/morpho_aave_v2_debt_token.proto @@ -0,0 +1,58 @@ +/* +* Protos for function calls to the Morpho Aave V2 Debt Token adaptor. +*/ + +syntax = "proto3"; +package steward.v3; + +option go_package = "/steward_proto"; + +import "adaptors/base.proto"; + +// Represents call data for the Morpho Aave V2 Debt Token adaptor. +message MorphoAaveV2DebtTokenAdaptorV1 { + oneof function { + /***** BASE ADAPTOR FUNCTIONS *****/ + + // Represents function `revokeApproval(ERC20 asset, address spender)` + RevokeApproval revoke_approval = 1; + + /***** ADAPTOR-SPECIFIC FUNCTIONS *****/ + + // Represents function `borrowFromAaveV2Morpho(address aToken, uint256 amountToBorrow)` + BorrowFromAaveV2Morpho borrow_from_aave_v2_morpho = 2; + // Represents function `repayAaveV2MorphoDebt(IAaveToken aToken, uint256 amountToRepay)` + RepayAaveV2MorphoDebt repay_aave_v2_morpho_debt = 3; + } + + /* + * Allows strategists to borrow assets from Aave. + * + * Represents function `borrowFromAaveV2Morpho(address aToken, uint256 amountToBorrow)` + */ + message BorrowFromAaveV2Morpho { + // The address of the Aave V2 aToken to borrow. + string a_token = 1; + + // The amount of the asset to borrow. + string amount_to_borrow = 2; + } + + /* + * Allows strategists to repay loan debt on Aave. + * + * Represents function `repayAaveV2MorphoDebt(IAaveToken aToken, uint256 amountToRepay)` + */ + message RepayAaveV2MorphoDebt { + // The address of the Aave V2 aToken to repay. + string a_token = 1; + + // The amount of the asset to repay. + string amount_to_repay = 2; + } + +} + +message MorphoAaveV2DebtTokenAdaptorV1Calls { + repeated MorphoAaveV2DebtTokenAdaptorV1 calls = 1; +} diff --git a/proto/adaptors/morpho/morpho_aave_v3_a_token_collateral.proto b/proto/adaptors/morpho/morpho_aave_v3_a_token_collateral.proto new file mode 100644 index 00000000..f83eae1a --- /dev/null +++ b/proto/adaptors/morpho/morpho_aave_v3_a_token_collateral.proto @@ -0,0 +1,57 @@ +/* +* Protos for function calls to the Morpho Aave V3 AToken Collateral adaptor. +*/ + +syntax = "proto3"; +package steward.v3; + +option go_package = "/steward_proto"; + +import "adaptors/base.proto"; + +// Represents call data for the Morpho Aave V3 AToken Collateral adaptor. +message MorphoAaveV3ATokenCollateralAdaptorV1 { + oneof function { + /***** BASE ADAPTOR FUNCTIONS *****/ + + // Represents function `revokeApproval(ERC20 asset, address spender)` + RevokeApproval revoke_approval = 1; + + /***** ADAPTOR-SPECIFIC FUNCTIONS *****/ + + // Represents function `depositToAaveV3Morpho(ERC20 tokenToDeposit, uint256 amountToDeposit)` + DepositToAaveV3Morpho deposit_to_aave_v3_morpho = 2; + // Represents function `withdrawFromAaveV3Morpho(ERC20 tokenToWithdraw, uint256 amountToWithdraw)` + WithdrawFromAaveV3Morpho withdraw_from_aave_v3_morpho = 3; + } + + /* + * Allows strategists to lend assets on Morpho + * + * Represents function `depositToAaveV3Morpho(ERC20 tokenToDeposit, uint256 amountToDeposit)` + */ + message DepositToAaveV3Morpho { + // The address of the token to deposit + string token_to_deposit = 1; + + // The amount of tokens to deposit + string amount_to_deposit = 2; + } + + /* + * Allows strategists to withdraw assets from Morpho + * + * Represents function `withdrawFromAaveV3Morpho(ERC20 tokenToWithdraw, uint256 amountToWithdraw)` + */ + message WithdrawFromAaveV3Morpho { + // The address of the token to withdraw + string token_to_withdraw = 1; + + // The amount of tokens to withdraw + string amount_to_withdraw = 2; + } +} + +message MorphoAaveV3ATokenCollateralAdaptorV1Calls { + repeated MorphoAaveV3ATokenCollateralAdaptorV1 calls = 1; +} diff --git a/proto/adaptors/morpho/morpho_aave_v3_a_token_p2p.proto b/proto/adaptors/morpho/morpho_aave_v3_a_token_p2p.proto new file mode 100644 index 00000000..2ae1ddb6 --- /dev/null +++ b/proto/adaptors/morpho/morpho_aave_v3_a_token_p2p.proto @@ -0,0 +1,63 @@ +/* +* Protos for function calls to the Morpho Aave V3 AToken P2P adaptor. +*/ + +syntax = "proto3"; +package steward.v3; + +option go_package = "/steward_proto"; + +import "adaptors/base.proto"; + +// Represents call data for the Morpho Aave V3 A Token P2P adaptor. +message MorphoAaveV3ATokenP2PAdaptorV1 { + oneof function { + /***** BASE ADAPTOR FUNCTIONS *****/ + + // Represents function `revokeApproval(ERC20 asset, address spender)` + RevokeApproval revoke_approval = 1; + + /***** ADAPTOR-SPECIFIC FUNCTIONS *****/ + + // Represents function `depositToAaveV3Morpho(ERC20 tokenToDeposit, uint256 amountToDeposit, uint256 maxIterations)` + DepositToAaveV3Morpho deposit_to_aave_v3_morpho = 2; + // Represents function `withdrawFromAaveV3Morpho(ERC20 tokenToWithdraw, uint256 amountToWithdraw, uint256 maxIterations)` + WithdrawFromAaveV3Morpho withdraw_from_aave_v3_morpho = 3; + } + + /* + * Allows strategists to lend assets on Morpho + * + * Represents function `depositToAaveV3Morpho(ERC20 tokenToDeposit, uint256 amountToDeposit, uint256 maxIterations)` + */ + message DepositToAaveV3Morpho { + // The address of the token to deposit + string token_to_deposit = 1; + + // The amount of tokens to deposit + string amount_to_deposit = 2; + + // The maximum number of iterations to run + string max_iterations = 3; + } + + /* + * Allows strategists to withdraw assets from Morpho + * + * Represents function `withdrawFromAaveV3Morpho(ERC20 tokenToWithdraw, uint256 amountToWithdraw, uint256 maxIterations)` + */ + message WithdrawFromAaveV3Morpho { + // The address of the token to withdraw + string token_to_withdraw = 1; + + // The amount of tokens to withdraw + string amount_to_withdraw = 2; + + // The maximum number of iterations to run + string max_iterations = 3; + } +} + +message MorphoAaveV3ATokenP2PAdaptorV1Calls { + repeated MorphoAaveV3ATokenP2PAdaptorV1 calls = 1; +} diff --git a/proto/adaptors/morpho/morpho_aave_v3_debt_token.proto b/proto/adaptors/morpho/morpho_aave_v3_debt_token.proto new file mode 100644 index 00000000..6486d397 --- /dev/null +++ b/proto/adaptors/morpho/morpho_aave_v3_debt_token.proto @@ -0,0 +1,60 @@ +/* +* Protos for function calls to the Morpho Aave V3 Debt Token adaptor. +*/ + +syntax = "proto3"; +package steward.v3; + +option go_package = "/steward_proto"; + +import "adaptors/base.proto"; + +// Represents call data for the Morpho Aave V3 Debt Token adaptor. +message MorphoAaveV3DebtTokenAdaptorV1 { + oneof function { + /***** BASE ADAPTOR FUNCTIONS *****/ + + // Represents function `revokeApproval(ERC20 asset, address spender)` + RevokeApproval revoke_approval = 1; + + /***** ADAPTOR-SPECIFIC FUNCTIONS *****/ + + // Represents function `borrowFromAaveV3Morpho(address underlying, uint256 amountToBorrow, uint256 maxIterations)` + BorrowFromAaveV3Morpho borrow_from_aave_v3_morpho = 2; + // Represents function `repayAaveV3MorphoDebt(ERC20 tokenToRepay, uint256 amountToRepay)` + RepayAaveV3MorphoDebt repay_aave_v3_morpho_debt = 3; + } + + /* + * Allows strategists to borrow assets from Morpho + * + * Represents function `borrowFromAaveV3Morpho(address underlying, uint256 amountToBorrow, uint256 maxIterations)` + */ + message BorrowFromAaveV3Morpho { + // The underlying asset to borrow + string underlying = 1; + + // The amount of the underlying asset to borrow + string amount_to_borrow = 2; + + // The maximum number of iterations to perform + string max_iterations = 3; + } + + /* + * Allows strategists to repay loan debt on Morpho + * + * Represents function `repayAaveV3MorphoDebt(ERC20 tokenToRepay, uint256 amountToRepay)` + */ + message RepayAaveV3MorphoDebt { + // The token to repay + string token_to_repay = 1; + + // The amount of the token to repay + string amount_to_repay = 2; + } +} + +message MorphoAaveV3DebtTokenAdaptorV1Calls { + repeated MorphoAaveV3DebtTokenAdaptorV1 calls = 1; +} diff --git a/proto/cellar_v2.proto b/proto/cellar_v2.proto index 06442817..4135eaf6 100644 --- a/proto/cellar_v2.proto +++ b/proto/cellar_v2.proto @@ -16,6 +16,11 @@ import "adaptors/aave/aave_v3_debt_token.proto"; import "adaptors/balancer/balancer_pool.proto"; import "adaptors/compound/c_token.proto"; import "adaptors/frax/f_token.proto"; +import "adaptors/morpho/morpho_aave_v2_a_token.proto"; +import "adaptors/morpho/morpho_aave_v2_debt_token.proto"; +import "adaptors/morpho/morpho_aave_v3_a_token_collateral.proto"; +import "adaptors/morpho/morpho_aave_v3_a_token_p2p.proto"; +import "adaptors/morpho/morpho_aave_v3_debt_token.proto"; import "adaptors/uniswap/uniswap_v3.proto"; import "adaptors/uniswap/swap_with_uniswap.proto"; import "adaptors/fees_and_reserves.proto"; @@ -404,5 +409,15 @@ message AdaptorCall { BalancerPoolAdaptorV1Calls balancer_pool_v1_calls = 18; // Represents function calls to the FTokenAdaptor V1 FTokenAdaptorV1Calls f_token_v1_calls = 19; + // Represents function calls to the MorphoAaveV2AToken V1 + MorphoAaveV2ATokenAdaptorV1Calls morpho_aave_v2_a_token_v1_calls = 20; + // Represents function calls to the MorphoAaveV2DebtToken V1 + MorphoAaveV2DebtTokenAdaptorV1Calls morpho_aave_v2_debt_token_v1_calls = 21; + // Represents function calls to the MorphoAaveV3ATokenCollateral V1 + MorphoAaveV3ATokenCollateralAdaptorV1Calls morpho_aave_v3_a_token_collateral_v1_calls = 22; + // Represents function calls to the MorphoAaveV3ATokenP2P V1 + MorphoAaveV3ATokenP2PAdaptorV1Calls morpho_aave_v3_a_token_p2p_v1_calls = 23; + // Represents function calls to the MorphoAaveV3DebtToken V1 + MorphoAaveV3DebtTokenAdaptorV1Calls morpho_aave_v3_debt_token_v1_calls = 24; } } diff --git a/steward/src/cellars/adaptors.rs b/steward/src/cellars/adaptors.rs index cf30b932..31760cf6 100644 --- a/steward/src/cellars/adaptors.rs +++ b/steward/src/cellars/adaptors.rs @@ -5,6 +5,7 @@ pub mod balancer_pool; pub mod compound; pub mod f_token; pub mod fees_and_reserves; +pub mod morpho; pub mod oneinch; pub mod sommelier; pub mod swap_with_uniswap; diff --git a/steward/src/cellars/adaptors/aave_v3.rs b/steward/src/cellars/adaptors/aave_v3.rs index 5cac2f21..50362fa4 100644 --- a/steward/src/cellars/adaptors/aave_v3.rs +++ b/steward/src/cellars/adaptors/aave_v3.rs @@ -238,6 +238,21 @@ fn get_encoded_adaptor_calls( FTokenV1Calls(params) => { calls.extend(adaptors::f_token::f_token_adaptor_v1_calls(params)?) } + MorphoAaveV2ATokenV1Calls(params) => calls.extend( + adaptors::morpho::morpho_aave_v2_a_token_adaptor_v1_calls(params)?, + ), + MorphoAaveV2DebtTokenV1Calls(params) => { + calls.extend(adaptors::morpho::morpho_aave_v2_debt_token_adaptor_v1_calls(params)?) + } + MorphoAaveV3ATokenCollateralV1Calls(params) => calls.extend( + adaptors::morpho::morpho_aave_v3_a_token_collateral_adaptor_v1_calls(params)?, + ), + MorphoAaveV3ATokenP2pV1Calls(params) => { + calls.extend(adaptors::morpho::morpho_aave_v3_a_token_p2p_adaptor_v1_calls(params)?) + } + MorphoAaveV3DebtTokenV1Calls(params) => { + calls.extend(adaptors::morpho::morpho_aave_v3_debt_token_adaptor_v1_calls(params)?) + } }; result.push(AbiAdaptorCall { diff --git a/steward/src/cellars/adaptors/morpho.rs b/steward/src/cellars/adaptors/morpho.rs new file mode 100644 index 00000000..24187e95 --- /dev/null +++ b/steward/src/cellars/adaptors/morpho.rs @@ -0,0 +1,274 @@ +use ethers::{abi::AbiEncode, types::Bytes}; +use steward_abi::{ + morpho_aave_v2_a_token_adaptor_v1::MorphoAaveV2ATokenAdaptorV1Calls, + morpho_aave_v2_debt_token_adaptor_v1::MorphoAaveV2DebtTokenAdaptorV1Calls, + morpho_aave_v3_a_token_collateral_adaptor_v1::MorphoAaveV3ATokenCollateralAdaptorV1Calls, + morpho_aave_v3_a_token_p2p_adaptor_v1::MorphoAaveV3ATokenP2PAdaptorV1Calls, + morpho_aave_v3_debt_token_adaptor_v1::MorphoAaveV3DebtTokenAdaptorV1Calls, +}; +use steward_proto::steward::{ + morpho_aave_v2_debt_token_adaptor_v1, morpho_aave_v2a_token_adaptor_v1, + morpho_aave_v3_debt_token_adaptor_v1, morpho_aave_v3a_token_collateral_adaptor_v1, + morpho_aave_v3a_token_p2p_adaptor_v1, +}; + +use crate::{ + error::Error, + utils::{sp_call_error, sp_call_parse_address, string_to_u256}, +}; + +pub(crate) fn morpho_aave_v2_a_token_adaptor_v1_calls( + params: steward_proto::steward::MorphoAaveV2aTokenAdaptorV1Calls, +) -> Result, Error> { + let mut calls = Vec::new(); + for c in params.calls { + let function = c + .function + .ok_or_else(|| sp_call_error("function cannot be empty".to_string()))?; + + match function { + morpho_aave_v2a_token_adaptor_v1::Function::RevokeApproval(p) => { + let call = steward_abi::morpho_aave_v2_a_token_adaptor_v1::RevokeApprovalCall { + asset: sp_call_parse_address(p.asset)?, + spender: sp_call_parse_address(p.spender)?, + }; + calls.push( + MorphoAaveV2ATokenAdaptorV1Calls::RevokeApproval(call) + .encode() + .into(), + ) + } + morpho_aave_v2a_token_adaptor_v1::Function::DepositToAaveV2Morpho(p) => { + let call = + steward_abi::morpho_aave_v2_a_token_adaptor_v1::DepositToAaveV2MorphoCall { + a_token: sp_call_parse_address(p.a_token)?, + amount_to_deposit: string_to_u256(p.amount_to_deposit)?, + }; + calls.push( + MorphoAaveV2ATokenAdaptorV1Calls::DepositToAaveV2Morpho(call) + .encode() + .into(), + ) + } + morpho_aave_v2a_token_adaptor_v1::Function::WithdrawFromAaveV2Morpho(p) => { + let call = + steward_abi::morpho_aave_v2_a_token_adaptor_v1::WithdrawFromAaveV2MorphoCall { + a_token: sp_call_parse_address(p.a_token)?, + amount_to_withdraw: string_to_u256(p.amount_to_withdraw)?, + }; + calls.push( + MorphoAaveV2ATokenAdaptorV1Calls::WithdrawFromAaveV2Morpho(call) + .encode() + .into(), + ) + } + } + } + + Ok(calls) +} + +pub(crate) fn morpho_aave_v2_debt_token_adaptor_v1_calls( + params: steward_proto::steward::MorphoAaveV2DebtTokenAdaptorV1Calls, +) -> Result, Error> { + let mut calls = Vec::new(); + for c in params.calls { + let function = c + .function + .ok_or_else(|| sp_call_error("function cannot be empty".to_string()))?; + + match function { + morpho_aave_v2_debt_token_adaptor_v1::Function::RevokeApproval(p) => { + let call = steward_abi::morpho_aave_v2_debt_token_adaptor_v1::RevokeApprovalCall { + asset: sp_call_parse_address(p.asset)?, + spender: sp_call_parse_address(p.spender)?, + }; + calls.push( + MorphoAaveV2DebtTokenAdaptorV1Calls::RevokeApproval(call) + .encode() + .into(), + ) + } + morpho_aave_v2_debt_token_adaptor_v1::Function::BorrowFromAaveV2Morpho(p) => { + let call = + steward_abi::morpho_aave_v2_debt_token_adaptor_v1::BorrowFromAaveV2MorphoCall { + a_token: sp_call_parse_address(p.a_token)?, + amount_to_borrow: string_to_u256(p.amount_to_borrow)?, + }; + calls.push( + MorphoAaveV2DebtTokenAdaptorV1Calls::BorrowFromAaveV2Morpho(call) + .encode() + .into(), + ) + } + morpho_aave_v2_debt_token_adaptor_v1::Function::RepayAaveV2MorphoDebt(p) => { + let call = + steward_abi::morpho_aave_v2_debt_token_adaptor_v1::RepayAaveV2MorphoDebtCall { + a_token: sp_call_parse_address(p.a_token)?, + amount_to_repay: string_to_u256(p.amount_to_repay)?, + }; + calls.push( + MorphoAaveV2DebtTokenAdaptorV1Calls::RepayAaveV2MorphoDebt(call) + .encode() + .into(), + ) + } + } + } + + Ok(calls) +} + +pub(crate) fn morpho_aave_v3_a_token_collateral_adaptor_v1_calls( + params: steward_proto::steward::MorphoAaveV3aTokenCollateralAdaptorV1Calls, +) -> Result, Error> { + let mut calls = Vec::new(); + for c in params.calls { + let function = c + .function + .ok_or_else(|| sp_call_error("function cannot be empty".to_string()))?; + + match function { + morpho_aave_v3a_token_collateral_adaptor_v1::Function::RevokeApproval(p) => { + let call = + steward_abi::morpho_aave_v3_a_token_collateral_adaptor_v1::RevokeApprovalCall { + asset: sp_call_parse_address(p.asset)?, + spender: sp_call_parse_address(p.spender)?, + }; + calls.push( + MorphoAaveV3ATokenCollateralAdaptorV1Calls::RevokeApproval(call) + .encode() + .into(), + ) + } + morpho_aave_v3a_token_collateral_adaptor_v1::Function::DepositToAaveV3Morpho(p) => { + let call = steward_abi::morpho_aave_v3_a_token_collateral_adaptor_v1::DepositToAaveV3MorphoCall { + token_to_deposit: sp_call_parse_address(p.token_to_deposit)?, + amount_to_deposit: string_to_u256(p.amount_to_deposit)?, + }; + calls.push( + MorphoAaveV3ATokenCollateralAdaptorV1Calls::DepositToAaveV3Morpho(call) + .encode() + .into(), + ) + } + morpho_aave_v3a_token_collateral_adaptor_v1::Function::WithdrawFromAaveV3Morpho(p) => { + let call = steward_abi::morpho_aave_v3_a_token_collateral_adaptor_v1::WithdrawFromAaveV3MorphoCall { + token_to_withdraw: sp_call_parse_address(p.token_to_withdraw)?, + amount_to_withdraw: string_to_u256(p.amount_to_withdraw)?, + }; + calls.push( + MorphoAaveV3ATokenCollateralAdaptorV1Calls::WithdrawFromAaveV3Morpho(call) + .encode() + .into(), + ) + } + } + } + + Ok(calls) +} + +pub(crate) fn morpho_aave_v3_a_token_p2p_adaptor_v1_calls( + params: steward_proto::steward::MorphoAaveV3aTokenP2pAdaptorV1Calls, +) -> Result, Error> { + let mut calls = Vec::new(); + for c in params.calls { + let function = c + .function + .ok_or_else(|| sp_call_error("function cannot be empty".to_string()))?; + + match function { + morpho_aave_v3a_token_p2p_adaptor_v1::Function::RevokeApproval(p) => { + let call = steward_abi::morpho_aave_v3_a_token_p2p_adaptor_v1::RevokeApprovalCall { + asset: sp_call_parse_address(p.asset)?, + spender: sp_call_parse_address(p.spender)?, + }; + calls.push( + MorphoAaveV3ATokenP2PAdaptorV1Calls::RevokeApproval(call) + .encode() + .into(), + ) + } + morpho_aave_v3a_token_p2p_adaptor_v1::Function::DepositToAaveV3Morpho(p) => { + let call = + steward_abi::morpho_aave_v3_a_token_p2p_adaptor_v1::DepositToAaveV3MorphoCall { + token_to_deposit: sp_call_parse_address(p.token_to_deposit)?, + amount_to_deposit: string_to_u256(p.amount_to_deposit)?, + max_iterations: string_to_u256(p.max_iterations)?, + }; + calls.push( + MorphoAaveV3ATokenP2PAdaptorV1Calls::DepositToAaveV3Morpho(call) + .encode() + .into(), + ) + } + morpho_aave_v3a_token_p2p_adaptor_v1::Function::WithdrawFromAaveV3Morpho(p) => { + let call = steward_abi::morpho_aave_v3_a_token_p2p_adaptor_v1::WithdrawFromAaveV3MorphoCall { + token_to_withdraw: sp_call_parse_address(p.token_to_withdraw)?, + amount_to_withdraw: string_to_u256(p.amount_to_withdraw)?, + max_iterations: string_to_u256(p.max_iterations)?, + }; + calls.push( + MorphoAaveV3ATokenP2PAdaptorV1Calls::WithdrawFromAaveV3Morpho(call) + .encode() + .into(), + ) + } + } + } + + Ok(calls) +} + +pub(crate) fn morpho_aave_v3_debt_token_adaptor_v1_calls( + params: steward_proto::steward::MorphoAaveV3DebtTokenAdaptorV1Calls, +) -> Result, Error> { + let mut calls = Vec::new(); + for c in params.calls { + let function = c + .function + .ok_or_else(|| sp_call_error("function cannot be empty".to_string()))?; + + match function { + morpho_aave_v3_debt_token_adaptor_v1::Function::RevokeApproval(p) => { + let call = steward_abi::morpho_aave_v3_debt_token_adaptor_v1::RevokeApprovalCall { + asset: sp_call_parse_address(p.asset)?, + spender: sp_call_parse_address(p.spender)?, + }; + calls.push( + MorphoAaveV3DebtTokenAdaptorV1Calls::RevokeApproval(call) + .encode() + .into(), + ) + } + morpho_aave_v3_debt_token_adaptor_v1::Function::BorrowFromAaveV3Morpho(p) => { + let call = + steward_abi::morpho_aave_v3_debt_token_adaptor_v1::BorrowFromAaveV3MorphoCall { + underlying: sp_call_parse_address(p.underlying)?, + amount_to_borrow: string_to_u256(p.amount_to_borrow)?, + max_iterations: string_to_u256(p.max_iterations)?, + }; + calls.push( + MorphoAaveV3DebtTokenAdaptorV1Calls::BorrowFromAaveV3Morpho(call) + .encode() + .into(), + ) + } + morpho_aave_v3_debt_token_adaptor_v1::Function::RepayAaveV3MorphoDebt(p) => { + let call = + steward_abi::morpho_aave_v3_debt_token_adaptor_v1::RepayAaveV3MorphoDebtCall { + token_to_repay: sp_call_parse_address(p.token_to_repay)?, + amount_to_repay: string_to_u256(p.amount_to_repay)?, + }; + calls.push( + MorphoAaveV3DebtTokenAdaptorV1Calls::RepayAaveV3MorphoDebt(call) + .encode() + .into(), + ) + } + } + } + + Ok(calls) +} diff --git a/steward/src/cellars/cellar_v2.rs b/steward/src/cellars/cellar_v2.rs index edb712e7..c87a78b3 100644 --- a/steward/src/cellars/cellar_v2.rs +++ b/steward/src/cellars/cellar_v2.rs @@ -258,6 +258,21 @@ fn get_encoded_adaptor_calls(data: Vec) -> Result { calls.extend(adaptors::f_token::f_token_adaptor_v1_calls(params)?) } + MorphoAaveV2ATokenV1Calls(params) => calls.extend( + adaptors::morpho::morpho_aave_v2_a_token_adaptor_v1_calls(params)?, + ), + MorphoAaveV2DebtTokenV1Calls(params) => { + calls.extend(adaptors::morpho::morpho_aave_v2_debt_token_adaptor_v1_calls(params)?) + } + MorphoAaveV3ATokenCollateralV1Calls(params) => calls.extend( + adaptors::morpho::morpho_aave_v3_a_token_collateral_adaptor_v1_calls(params)?, + ), + MorphoAaveV3ATokenP2pV1Calls(params) => { + calls.extend(adaptors::morpho::morpho_aave_v3_a_token_p2p_adaptor_v1_calls(params)?) + } + MorphoAaveV3DebtTokenV1Calls(params) => { + calls.extend(adaptors::morpho::morpho_aave_v3_debt_token_adaptor_v1_calls(params)?) + } }; result.push(AbiAdaptorCall { diff --git a/steward/src/cellars/cellar_v2_2.rs b/steward/src/cellars/cellar_v2_2.rs index ea3d4821..7e139a05 100644 --- a/steward/src/cellars/cellar_v2_2.rs +++ b/steward/src/cellars/cellar_v2_2.rs @@ -340,6 +340,21 @@ fn get_encoded_adaptor_calls(data: Vec) -> Result { calls.extend(adaptors::f_token::f_token_adaptor_v1_calls(params)?) } + MorphoAaveV2ATokenV1Calls(params) => calls.extend( + adaptors::morpho::morpho_aave_v2_a_token_adaptor_v1_calls(params)?, + ), + MorphoAaveV2DebtTokenV1Calls(params) => { + calls.extend(adaptors::morpho::morpho_aave_v2_debt_token_adaptor_v1_calls(params)?) + } + MorphoAaveV3ATokenCollateralV1Calls(params) => calls.extend( + adaptors::morpho::morpho_aave_v3_a_token_collateral_adaptor_v1_calls(params)?, + ), + MorphoAaveV3ATokenP2pV1Calls(params) => { + calls.extend(adaptors::morpho::morpho_aave_v3_a_token_p2p_adaptor_v1_calls(params)?) + } + MorphoAaveV3DebtTokenV1Calls(params) => { + calls.extend(adaptors::morpho::morpho_aave_v3_debt_token_adaptor_v1_calls(params)?) + } }; result.push(AbiAdaptorCall { diff --git a/steward_abi/AaveATokenAdaptorV1.json b/steward_abi/abi/AaveATokenAdaptorV1.json similarity index 100% rename from steward_abi/AaveATokenAdaptorV1.json rename to steward_abi/abi/AaveATokenAdaptorV1.json diff --git a/steward_abi/AaveATokenAdaptorV2.json b/steward_abi/abi/AaveATokenAdaptorV2.json similarity index 100% rename from steward_abi/AaveATokenAdaptorV2.json rename to steward_abi/abi/AaveATokenAdaptorV2.json diff --git a/steward_abi/AaveDebtTokenAdaptorV1.json b/steward_abi/abi/AaveDebtTokenAdaptorV1.json similarity index 100% rename from steward_abi/AaveDebtTokenAdaptorV1.json rename to steward_abi/abi/AaveDebtTokenAdaptorV1.json diff --git a/steward_abi/AaveDebtTokenAdaptorV2.json b/steward_abi/abi/AaveDebtTokenAdaptorV2.json similarity index 100% rename from steward_abi/AaveDebtTokenAdaptorV2.json rename to steward_abi/abi/AaveDebtTokenAdaptorV2.json diff --git a/steward_abi/AaveV2EnableAssetAsCollateralAdaptorV1.json b/steward_abi/abi/AaveV2EnableAssetAsCollateralAdaptorV1.json similarity index 100% rename from steward_abi/AaveV2EnableAssetAsCollateralAdaptorV1.json rename to steward_abi/abi/AaveV2EnableAssetAsCollateralAdaptorV1.json diff --git a/steward_abi/AaveV2StablecoinCellar.json b/steward_abi/abi/AaveV2StablecoinCellar.json similarity index 100% rename from steward_abi/AaveV2StablecoinCellar.json rename to steward_abi/abi/AaveV2StablecoinCellar.json diff --git a/steward_abi/AaveV3ATokenAdaptorV1.json b/steward_abi/abi/AaveV3ATokenAdaptorV1.json similarity index 100% rename from steward_abi/AaveV3ATokenAdaptorV1.json rename to steward_abi/abi/AaveV3ATokenAdaptorV1.json diff --git a/steward_abi/AaveV3DebtTokenAdaptorV1.json b/steward_abi/abi/AaveV3DebtTokenAdaptorV1.json similarity index 100% rename from steward_abi/AaveV3DebtTokenAdaptorV1.json rename to steward_abi/abi/AaveV3DebtTokenAdaptorV1.json diff --git a/steward_abi/BalancerPoolAdaptorV1.json b/steward_abi/abi/BalancerPoolAdaptorV1.json similarity index 100% rename from steward_abi/BalancerPoolAdaptorV1.json rename to steward_abi/abi/BalancerPoolAdaptorV1.json diff --git a/steward_abi/Cellar.json b/steward_abi/abi/Cellar.json similarity index 100% rename from steward_abi/Cellar.json rename to steward_abi/abi/Cellar.json diff --git a/steward_abi/CellarAdaptorV1.json b/steward_abi/abi/CellarAdaptorV1.json similarity index 100% rename from steward_abi/CellarAdaptorV1.json rename to steward_abi/abi/CellarAdaptorV1.json diff --git a/steward_abi/CellarV1.json b/steward_abi/abi/CellarV1.json similarity index 100% rename from steward_abi/CellarV1.json rename to steward_abi/abi/CellarV1.json diff --git a/steward_abi/CellarV2.json b/steward_abi/abi/CellarV2.json similarity index 100% rename from steward_abi/CellarV2.json rename to steward_abi/abi/CellarV2.json diff --git a/steward_abi/CellarV2_2.json b/steward_abi/abi/CellarV2_2.json similarity index 100% rename from steward_abi/CellarV2_2.json rename to steward_abi/abi/CellarV2_2.json diff --git a/steward_abi/CompoundCTokenAdaptorV2.json b/steward_abi/abi/CompoundCTokenAdaptorV2.json similarity index 100% rename from steward_abi/CompoundCTokenAdaptorV2.json rename to steward_abi/abi/CompoundCTokenAdaptorV2.json diff --git a/steward_abi/FTokenAdaptor.json b/steward_abi/abi/FTokenAdaptor.json similarity index 100% rename from steward_abi/FTokenAdaptor.json rename to steward_abi/abi/FTokenAdaptor.json diff --git a/steward_abi/FeesAndReservesAdaptorV1.json b/steward_abi/abi/FeesAndReservesAdaptorV1.json similarity index 100% rename from steward_abi/FeesAndReservesAdaptorV1.json rename to steward_abi/abi/FeesAndReservesAdaptorV1.json diff --git a/steward_abi/abi/MorphoAaveV2ATokenAdaptorV1.json b/steward_abi/abi/MorphoAaveV2ATokenAdaptorV1.json new file mode 100644 index 00000000..a520ed8e --- /dev/null +++ b/steward_abi/abi/MorphoAaveV2ATokenAdaptorV1.json @@ -0,0 +1,7531 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_morpho", + "type": "address" + }, + { + "internalType": "address", + "name": "_morphoLens", + "type": "address" + }, + { + "internalType": "uint256", + "name": "minHealthFactor", + "type": "uint256" + }, + { + "internalType": "address", + "name": "rewardDistributor", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "BaseAdaptor__ConstructorHealthFactorTooLow", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__ExternalReceiverBlocked", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "BaseAdaptor__PricingNotSupported", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__Slippage", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__UserDepositsNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__UserWithdrawsNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "MorphoAaveV2ATokenAdaptor__HealthFactorTooLow", + "type": "error" + }, + { + "inputs": [], + "name": "BORROWING_MASK", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "name": "assetOf", + "outputs": [ + { + "internalType": "contract ERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "name": "assetsUsed", + "outputs": [ + { + "internalType": "contract ERC20[]", + "name": "assets", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "claimable", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "proof", + "type": "bytes32[]" + } + ], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IAaveToken", + "name": "aToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountToDeposit", + "type": "uint256" + } + ], + "name": "depositToAaveV2Morpho", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "identifier", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "name": "isBorrowingAny", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isDebt", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "minimumHealthFactor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "morpho", + "outputs": [ + { + "internalType": "contract IMorphoV2", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "morphoLens", + "outputs": [ + { + "internalType": "contract IMorphoLensV2", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "morphoRewardsDistributor", + "outputs": [ + { + "internalType": "contract RewardsDistributor", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "revokeApproval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "slippage", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IAaveToken", + "name": "aToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountToWithdraw", + "type": "uint256" + } + ], + "name": "withdrawFromAaveV2Morpho", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "withdrawableFrom", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": { + "object": "0x6101006040523480156200001257600080fd5b50604051620016e1380380620016e18339810160408190526200003591620000b4565b6001600160a01b0381166080526200004d826200006a565b506001600160a01b0392831660a052911660c05260e05262000108565b670e92596fd629000081101562000094576040516397ed5f4160e01b815260040160405180910390fd5b50565b80516001600160a01b0381168114620000af57600080fd5b919050565b60008060008060808587031215620000cb57600080fd5b620000d68562000097565b9350620000e66020860162000097565b925060408501519150620000fd6060860162000097565b905092959194509250565b60805160a05160c05160e051611536620001ab6000396000818161012b01526108ca0152600081816101ad01526108520152600081816102db015281816103cd015281816104e40152818161052f015281816105910152818161064701528181610692015281816106f4015281816107df015281816109e301528181610cdf01528181610d7b0152610e280152600081816101ff015261033a01526115366000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80637998a1c4116100ad578063c9111bd711610071578063c9111bd7146102b0578063d3bfe76a146102c3578063d8fbc833146102d6578063e170a9bf146102fd578063fa50e5d21461031057600080fd5b80637998a1c414610247578063872de8121461024f57806389353a0914610262578063aeffddde14610269578063b505e7a21461028957600080fd5b8063425734d3116100f4578063425734d3146101a85780635528481b146101e75780635b5d4d78146101fa57806369445c3114610221578063784153651461023457600080fd5b80631caff8b1146101265780632f52ebb7146101605780632f93417c146101755780633e032a3b14610198575b600080fd5b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61017361016e366004610fc9565b610323565b005b610188610183366004611090565b6103a9565b6040519015158152602001610157565b6040516123288152602001610157565b6101cf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610157565b6101736101f53660046110ad565b610463565b6101cf7f000000000000000000000000000000000000000000000000000000000000000081565b61017361022f366004611149565b6105ba565b61014d6102423660046111b6565b61071f565b61014d610749565b61017361025d3660046110ad565b6107b3565b6000610188565b61027c6102773660046111b6565b610909565b60405161015791906111f3565b61014d7f555555555555555555555555555555555555555555555555555555555555555581565b6101736102be366004611240565b61096c565b6101736102d13660046112c0565b610a48565b6101cf7f000000000000000000000000000000000000000000000000000000000000000081565b6101cf61030b3660046111b6565b610a61565b61014d61031e3660046112f9565b610adc565b604051630f44fe1d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633d13f874906103739030908690869060040161135d565b600060405180830381600087803b15801561038d57600080fd5b505af11580156103a1573d6000803e3d6000fd5b505050505050565b604051630bc45d1960e41b81526001600160a01b03828116600483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063bc45d19090602401602060405180830381865afa158015610414573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043891906113ba565b7f55555555555555555555555555555555555555555555555555555555555555551615159392505050565b6000826001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c791906113d3565b90506104d38183610b20565b91506105096001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000084610ba1565b604051631e573fb760e31b81526001600160a01b038481166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063f2b9fdb890604401600060405180830381600087803b15801561057357600080fd5b505af1158015610587573d6000803e3d6000fd5b505050506105b5817f0000000000000000000000000000000000000000000000000000000000000000610c22565b505050565b6000828060200190518101906105d091906113d3565b90506000816001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610612573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063691906113d3565b905061066c6001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000087610ba1565b604051631e573fb760e31b81526001600160a01b038381166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063f2b9fdb890604401600060405180830381600087803b1580156106d657600080fd5b505af11580156106ea573d6000803e3d6000fd5b50505050610718817f0000000000000000000000000000000000000000000000000000000000000000610c22565b5050505050565b6000808280602001905181019061073691906113d3565b90506107428133610cb1565b9392505050565b60006040516020016107989060208082526023908201527f4d6f7270686f20416176652056322061546f6b656e2041646170746f7220562060408201526218971960e91b606082015260800190565b60405160208183030381529060405280519060200120905090565b604051631a4ca37b60e21b81526001600160a01b038381166004830152602482018390523060448301527f000000000000000000000000000000000000000000000000000000000000000016906369328dec90606401600060405180830381600087803b15801561082357600080fd5b505af1158015610837573d6000803e3d6000fd5b5050604051630e397f9360e31b8152306004820152600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691506371cbfc9890602401602060405180830381865afa1580156108a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c691906113ba565b90507f00000000000000000000000000000000000000000000000000000000000000008110156105b557604051630d32445160e21b815260040160405180910390fd5b6040805160018082528183019092526060916020808301908036833701905050905061093482610a61565b81600081518110610947576109476113f0565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b61097583610ecc565b61097e306103a9565b1561099c57604051635f5003c560e11b815260040160405180910390fd5b6000828060200190518101906109b291906113d3565b604051631a4ca37b60e21b81526001600160a01b0380831660048301526024820188905286811660448301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906369328dec90606401600060405180830381600087803b158015610a2957600080fd5b505af1158015610a3d573d6000803e3d6000fd5b505050505050505050565b610a5d6001600160a01b038316826000610ba1565b5050565b60008082806020019051810190610a7891906113d3565b9050806001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ab8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074291906113d3565b6000610ae7336103a9565b15610af457506000610b1a565b600083806020019051810190610b0a91906113d3565b9050610b168133610cb1565b9150505b92915050565b60006000198203610b9a576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9391906113ba565b9050610b1a565b5080610b1a565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610c1c5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b604482015260640160405180910390fd5b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa158015610c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9691906113ba565b1115610a5d57610a5d6001600160a01b038316826000610ba1565b6040516339407b4160e21b81526001600160a01b0383811660048301528281166024830152600091829182917f00000000000000000000000000000000000000000000000000000000000000009091169063e501ed04906044016040805180830381865afa158015610d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4b9190611406565b909250905060008215610dff5760405163854f7ebb60e01b81526001600160a01b038781166004830152610dfc917f00000000000000000000000000000000000000000000000000000000000000009091169063854f7ebb90602401602060405180830381865afa158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de891906113ba565b84906b033b2e3c9fd0803ce8000000610f63565b90505b8115610ec357604051631987357f60e21b81526001600160a01b038781166004830152610eb6917f00000000000000000000000000000000000000000000000000000000000000009091169063661cd5fc90602401606060405180830381865afa158015610e71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e959190611446565b6020015183906001600160701b03166b033b2e3c9fd0803ce8000000610f63565b610ec090826114bd565b90505b95945050505050565b6001600160a01b0381163014801590610f425750306001600160a01b0316634c4602da6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4291906114de565b15610f60576040516307de9b5160e21b815260040160405180910390fd5b50565b828202811515841585830485141716610f7b57600080fd5b0492915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610fc157610fc1610f82565b604052919050565b60008060408385031215610fdc57600080fd5b8235915060208084013567ffffffffffffffff80821115610ffc57600080fd5b818601915086601f83011261101057600080fd5b81358181111561102257611022610f82565b8060051b9150611033848301610f98565b818152918301840191848101908984111561104d57600080fd5b938501935b8385101561106b57843582529385019390850190611052565b8096505050505050509250929050565b6001600160a01b0381168114610f6057600080fd5b6000602082840312156110a257600080fd5b81356107428161107b565b600080604083850312156110c057600080fd5b82356110cb8161107b565b946020939093013593505050565b600082601f8301126110ea57600080fd5b813567ffffffffffffffff81111561110457611104610f82565b611117601f8201601f1916602001610f98565b81815284602083860101111561112c57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561115e57600080fd5b83359250602084013567ffffffffffffffff8082111561117d57600080fd5b611189878388016110d9565b9350604086013591508082111561119f57600080fd5b506111ac868287016110d9565b9150509250925092565b6000602082840312156111c857600080fd5b813567ffffffffffffffff8111156111df57600080fd5b6111eb848285016110d9565b949350505050565b6020808252825182820181905260009190848201906040850190845b818110156112345783516001600160a01b03168352928401929184019160010161120f565b50909695505050505050565b6000806000806080858703121561125657600080fd5b8435935060208501356112688161107b565b9250604085013567ffffffffffffffff8082111561128557600080fd5b611291888389016110d9565b935060608701359150808211156112a757600080fd5b506112b4878288016110d9565b91505092959194509250565b600080604083850312156112d357600080fd5b82356112de8161107b565b915060208301356112ee8161107b565b809150509250929050565b6000806040838503121561130c57600080fd5b823567ffffffffffffffff8082111561132457600080fd5b611330868387016110d9565b9350602085013591508082111561134657600080fd5b50611353858286016110d9565b9150509250929050565b6001600160a01b038416815260208082018490526060604083018190528351908301819052600091848101916080850190845b818110156113ac57845183529383019391830191600101611390565b509098975050505050505050565b6000602082840312156113cc57600080fd5b5051919050565b6000602082840312156113e557600080fd5b81516107428161107b565b634e487b7160e01b600052603260045260246000fd5b6000806040838503121561141957600080fd5b505080516020909101519092909150565b80516001600160701b038116811461144157600080fd5b919050565b60006060828403121561145857600080fd5b6040516060810181811067ffffffffffffffff8211171561147b5761147b610f82565b604052825163ffffffff8116811461149257600080fd5b81526114a06020840161142a565b60208201526114b16040840161142a565b60408201529392505050565b80820180821115610b1a57634e487b7160e01b600052601160045260246000fd5b6000602082840312156114f057600080fd5b8151801515811461074257600080fdfea26469706673582212208d0b9e9929cd445f957cd709018304e40085baf90a6dc5e1569d164efc0f8c9664736f6c63430008100033", + "sourceMap": "621:8489:197:-:0;;;2235:383;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;629:72:203;;;;2424:54:197::1;2462:15:::0;2424:37:::1;:54::i;:::-;-1:-1:-1::0;;;;;;2488:27:197;;::::1;;::::0;2525:39;::::1;;::::0;2574:37:::1;::::0;621:8489;;8743:233:188;2760:7;8847:19;:57;8843:126;;;8925:44;;-1:-1:-1;;;8925:44:188;;;;;;;;;;;8843:126;8743:233;:::o;14:177:258:-;93:13;;-1:-1:-1;;;;;135:31:258;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:440::-;293:6;301;309;317;370:3;358:9;349:7;345:23;341:33;338:53;;;387:1;384;377:12;338:53;410:40;440:9;410:40;:::i;:::-;400:50;;469:49;514:2;503:9;499:18;469:49;:::i;:::-;459:59;;558:2;547:9;543:18;537:25;527:35;;581:49;626:2;615:9;611:18;581:49;:::i;:::-;571:59;;196:440;;;;;;;:::o;:::-;621:8489:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c80637998a1c4116100ad578063c9111bd711610071578063c9111bd7146102b0578063d3bfe76a146102c3578063d8fbc833146102d6578063e170a9bf146102fd578063fa50e5d21461031057600080fd5b80637998a1c414610247578063872de8121461024f57806389353a0914610262578063aeffddde14610269578063b505e7a21461028957600080fd5b8063425734d3116100f4578063425734d3146101a85780635528481b146101e75780635b5d4d78146101fa57806369445c3114610221578063784153651461023457600080fd5b80631caff8b1146101265780632f52ebb7146101605780632f93417c146101755780633e032a3b14610198575b600080fd5b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61017361016e366004610fc9565b610323565b005b610188610183366004611090565b6103a9565b6040519015158152602001610157565b6040516123288152602001610157565b6101cf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610157565b6101736101f53660046110ad565b610463565b6101cf7f000000000000000000000000000000000000000000000000000000000000000081565b61017361022f366004611149565b6105ba565b61014d6102423660046111b6565b61071f565b61014d610749565b61017361025d3660046110ad565b6107b3565b6000610188565b61027c6102773660046111b6565b610909565b60405161015791906111f3565b61014d7f555555555555555555555555555555555555555555555555555555555555555581565b6101736102be366004611240565b61096c565b6101736102d13660046112c0565b610a48565b6101cf7f000000000000000000000000000000000000000000000000000000000000000081565b6101cf61030b3660046111b6565b610a61565b61014d61031e3660046112f9565b610adc565b604051630f44fe1d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633d13f874906103739030908690869060040161135d565b600060405180830381600087803b15801561038d57600080fd5b505af11580156103a1573d6000803e3d6000fd5b505050505050565b604051630bc45d1960e41b81526001600160a01b03828116600483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063bc45d19090602401602060405180830381865afa158015610414573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043891906113ba565b7f55555555555555555555555555555555555555555555555555555555555555551615159392505050565b6000826001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c791906113d3565b90506104d38183610b20565b91506105096001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000084610ba1565b604051631e573fb760e31b81526001600160a01b038481166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063f2b9fdb890604401600060405180830381600087803b15801561057357600080fd5b505af1158015610587573d6000803e3d6000fd5b505050506105b5817f0000000000000000000000000000000000000000000000000000000000000000610c22565b505050565b6000828060200190518101906105d091906113d3565b90506000816001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610612573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063691906113d3565b905061066c6001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000087610ba1565b604051631e573fb760e31b81526001600160a01b038381166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063f2b9fdb890604401600060405180830381600087803b1580156106d657600080fd5b505af11580156106ea573d6000803e3d6000fd5b50505050610718817f0000000000000000000000000000000000000000000000000000000000000000610c22565b5050505050565b6000808280602001905181019061073691906113d3565b90506107428133610cb1565b9392505050565b60006040516020016107989060208082526023908201527f4d6f7270686f20416176652056322061546f6b656e2041646170746f7220562060408201526218971960e91b606082015260800190565b60405160208183030381529060405280519060200120905090565b604051631a4ca37b60e21b81526001600160a01b038381166004830152602482018390523060448301527f000000000000000000000000000000000000000000000000000000000000000016906369328dec90606401600060405180830381600087803b15801561082357600080fd5b505af1158015610837573d6000803e3d6000fd5b5050604051630e397f9360e31b8152306004820152600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691506371cbfc9890602401602060405180830381865afa1580156108a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c691906113ba565b90507f00000000000000000000000000000000000000000000000000000000000000008110156105b557604051630d32445160e21b815260040160405180910390fd5b6040805160018082528183019092526060916020808301908036833701905050905061093482610a61565b81600081518110610947576109476113f0565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b61097583610ecc565b61097e306103a9565b1561099c57604051635f5003c560e11b815260040160405180910390fd5b6000828060200190518101906109b291906113d3565b604051631a4ca37b60e21b81526001600160a01b0380831660048301526024820188905286811660448301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906369328dec90606401600060405180830381600087803b158015610a2957600080fd5b505af1158015610a3d573d6000803e3d6000fd5b505050505050505050565b610a5d6001600160a01b038316826000610ba1565b5050565b60008082806020019051810190610a7891906113d3565b9050806001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ab8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074291906113d3565b6000610ae7336103a9565b15610af457506000610b1a565b600083806020019051810190610b0a91906113d3565b9050610b168133610cb1565b9150505b92915050565b60006000198203610b9a576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9391906113ba565b9050610b1a565b5080610b1a565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610c1c5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b604482015260640160405180910390fd5b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa158015610c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9691906113ba565b1115610a5d57610a5d6001600160a01b038316826000610ba1565b6040516339407b4160e21b81526001600160a01b0383811660048301528281166024830152600091829182917f00000000000000000000000000000000000000000000000000000000000000009091169063e501ed04906044016040805180830381865afa158015610d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4b9190611406565b909250905060008215610dff5760405163854f7ebb60e01b81526001600160a01b038781166004830152610dfc917f00000000000000000000000000000000000000000000000000000000000000009091169063854f7ebb90602401602060405180830381865afa158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de891906113ba565b84906b033b2e3c9fd0803ce8000000610f63565b90505b8115610ec357604051631987357f60e21b81526001600160a01b038781166004830152610eb6917f00000000000000000000000000000000000000000000000000000000000000009091169063661cd5fc90602401606060405180830381865afa158015610e71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e959190611446565b6020015183906001600160701b03166b033b2e3c9fd0803ce8000000610f63565b610ec090826114bd565b90505b95945050505050565b6001600160a01b0381163014801590610f425750306001600160a01b0316634c4602da6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4291906114de565b15610f60576040516307de9b5160e21b815260040160405180910390fd5b50565b828202811515841585830485141716610f7b57600080fd5b0492915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610fc157610fc1610f82565b604052919050565b60008060408385031215610fdc57600080fd5b8235915060208084013567ffffffffffffffff80821115610ffc57600080fd5b818601915086601f83011261101057600080fd5b81358181111561102257611022610f82565b8060051b9150611033848301610f98565b818152918301840191848101908984111561104d57600080fd5b938501935b8385101561106b57843582529385019390850190611052565b8096505050505050509250929050565b6001600160a01b0381168114610f6057600080fd5b6000602082840312156110a257600080fd5b81356107428161107b565b600080604083850312156110c057600080fd5b82356110cb8161107b565b946020939093013593505050565b600082601f8301126110ea57600080fd5b813567ffffffffffffffff81111561110457611104610f82565b611117601f8201601f1916602001610f98565b81815284602083860101111561112c57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561115e57600080fd5b83359250602084013567ffffffffffffffff8082111561117d57600080fd5b611189878388016110d9565b9350604086013591508082111561119f57600080fd5b506111ac868287016110d9565b9150509250925092565b6000602082840312156111c857600080fd5b813567ffffffffffffffff8111156111df57600080fd5b6111eb848285016110d9565b949350505050565b6020808252825182820181905260009190848201906040850190845b818110156112345783516001600160a01b03168352928401929184019160010161120f565b50909695505050505050565b6000806000806080858703121561125657600080fd5b8435935060208501356112688161107b565b9250604085013567ffffffffffffffff8082111561128557600080fd5b611291888389016110d9565b935060608701359150808211156112a757600080fd5b506112b4878288016110d9565b91505092959194509250565b600080604083850312156112d357600080fd5b82356112de8161107b565b915060208301356112ee8161107b565b809150509250929050565b6000806040838503121561130c57600080fd5b823567ffffffffffffffff8082111561132457600080fd5b611330868387016110d9565b9350602085013591508082111561134657600080fd5b50611353858286016110d9565b9150509250929050565b6001600160a01b038416815260208082018490526060604083018190528351908301819052600091848101916080850190845b818110156113ac57845183529383019391830191600101611390565b509098975050505050505050565b6000602082840312156113cc57600080fd5b5051919050565b6000602082840312156113e557600080fd5b81516107428161107b565b634e487b7160e01b600052603260045260246000fd5b6000806040838503121561141957600080fd5b505080516020909101519092909150565b80516001600160701b038116811461144157600080fd5b919050565b60006060828403121561145857600080fd5b6040516060810181811067ffffffffffffffff8211171561147b5761147b610f82565b604052825163ffffffff8116811461149257600080fd5b81526114a06020840161142a565b60208201526114b16040840161142a565b60408201529392505050565b80820180821115610b1a57634e487b7160e01b600052601160045260246000fd5b6000602082840312156114f057600080fd5b8151801515811461074257600080fdfea26469706673582212208d0b9e9929cd445f957cd709018304e40085baf90a6dc5e1569d164efc0f8c9664736f6c63430008100033", + "sourceMap": "621:8489:197:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2184:44;;;;;;;;160:25:258;;;148:2;133:18;2184:44:197;;;;;;;;902:145:203;;;;;;:::i;:::-;;:::i;:::-;;8930:178:197;;;;;;:::i;:::-;;:::i;:::-;;;2180:14:258;;2173:22;2155:41;;2143:2;2128:18;8930:178:197;2015:187:258;2415:78:188;;;2481:5;2351:42:258;;2339:2;2324:18;2415:78:188;2207:192:258;1976:41:197;;;;;;;;-1:-1:-1;;;;;2591:32:258;;;2573:51;;2561:2;2546:18;1976:41:197;2404:226:258;6801:458:197;;;;;;:::i;:::-;;:::i;505:60:203:-;;;;;3649:482:197;;;;;;:::i;:::-;;:::i;5732:211::-;;;;;;:::i;:::-;;:::i;3037:145::-;;;:::i;7491:413::-;;;;;;:::i;:::-;;:::i;6320:83::-;6368:4;6320:83;;5934:180:188;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1359:107:197:-;;1400:66;1359:107;;4507:497;;;;;;:::i;:::-;;:::i;9204:107:188:-;;;;;;:::i;:::-;;:::i;1777:33:197:-;;;;;6027:209;;;;;;:::i;:::-;;:::i;5215:427::-;;;;;;:::i;:::-;;:::i;902:145:203:-;977:63;;-1:-1:-1;;;977:63:203;;-1:-1:-1;;;;;977:24:203;:30;;;;:63;;1016:4;;1023:9;;1034:5;;977:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;902:145;;:::o;8930:178:197:-;9027:24;;-1:-1:-1;;;9027:24:197;;-1:-1:-1;;;;;2591:32:258;;;9027:24:197;;;2573:51:258;8989:4:197;;;;9027:6;:18;;;;2546::258;;9027:24:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1400:66;9068:28;:33;;;8930:178;-1:-1:-1;;;8930:178:197:o;6801:458::-;6893:16;6918:6;-1:-1:-1;;;;;6918:31:197;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6893:59;;6980:42;6994:10;7006:15;6980:13;:42::i;:::-;6962:60;-1:-1:-1;7032:56:197;-1:-1:-1;;;;;7032:22:197;;7063:6;6962:60;7032:22;:56::i;:::-;7098:47;;-1:-1:-1;;;7098:47:197;;-1:-1:-1;;;;;9344:32:258;;;7098:47:197;;;9326:51:258;9393:18;;;9386:34;;;7098:6:197;:13;;;;9299:18:258;;7098:47:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7200:52;7224:10;7244:6;7200:23;:52::i;:::-;6883:376;6801:458;;:::o;3649:482::-;3785:17;3816:11;3805:37;;;;;;;;;;;;:::i;:::-;3785:57;;3852:16;3877:6;-1:-1:-1;;;;;3877:31:197;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3852:59;-1:-1:-1;3921:47:197;-1:-1:-1;;;;;3921:22:197;;3952:6;3961;3921:22;:47::i;:::-;3979:38;;-1:-1:-1;;;3979:38:197;;-1:-1:-1;;;;;9344:32:258;;;3979:38:197;;;9326:51:258;9393:18;;;9386:34;;;3979:6:197;:13;;;;9299:18:258;;3979:38:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4072:52;4096:10;4116:6;4072:23;:52::i;:::-;3738:393;;3649:482;;;:::o;5732:211::-;5807:7;5826:14;5854:11;5843:34;;;;;;;;;;;;:::i;:::-;5826:51;;5894:42;5917:6;5925:10;5894:22;:42::i;:::-;5887:49;5732:211;-1:-1:-1;;;5732:211:197:o;3037:145::-;3089:7;3125:49;;;;;;10173:2:258;10155:21;;;10212:2;10192:18;;;10185:30;10251:34;10246:2;10231:18;;10224:62;-1:-1:-1;;;10317:2:258;10302:18;;10295:33;10360:3;10345:19;;9971:399;3125:49:197;;;;;;;;;;;;;3115:60;;;;;;3108:67;;3037:145;:::o;7491:413::-;7587:65;;-1:-1:-1;;;7587:65:197;;-1:-1:-1;;;;;10633:15:258;;;7587:65:197;;;10615:34:258;10665:18;;;10658:34;;;7646:4:197;10708:18:258;;;10701:43;7587:6:197;:15;;;;10550:18:258;;7587:65:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7748:45:197;;-1:-1:-1;;;7748:45:197;;7787:4;7748:45;;;2573:51:258;7725:20:197;;-1:-1:-1;7748:10:197;-1:-1:-1;;;;;7748:30:197;;-1:-1:-1;7748:30:197;;2546:18:258;;7748:45:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7725:68;;7822:19;7807:12;:34;7803:94;;;7850:47;;-1:-1:-1;;;7850:47:197;;;;;;;;;;;5934:180:188;6051:14;;;6063:1;6051:14;;;;;;;;;6009:21;;6051:14;;;;;;;;;;;-1:-1:-1;6051:14:188;6042:23;;6087:20;6095:11;6087:7;:20::i;:::-;6075:6;6082:1;6075:9;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;6075:32:188;;;-1:-1:-1;;;;;6075:32:188;;;;;5934:180;;;:::o;4507:497:197:-;4665:32;4688:8;4665:22;:32::i;:::-;4767:29;4790:4;4767:14;:29::i;:::-;4763:80;;;4805:38;;-1:-1:-1;;;4805:38:197;;;;;;;;;;;4763:80;4854:14;4882:11;4871:34;;;;;;;;;;;;:::i;:::-;4956:41;;-1:-1:-1;;;4956:41:197;;-1:-1:-1;;;;;10633:15:258;;;4956:41:197;;;10615:34:258;10665:18;;;10658:34;;;10728:15;;;10708:18;;;10701:43;4854:51:197;;-1:-1:-1;4956:6:197;:15;;;;;;10550:18:258;;4956:41:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4615:389;4507:497;;;;:::o;9204:107:188:-;9275:29;-1:-1:-1;;;;;9275:17:188;;9293:7;9302:1;9275:17;:29::i;:::-;9204:107;;:::o;6027:209:197:-;6100:5;6117:16;6147:11;6136:37;;;;;;;;;;;;:::i;:::-;6117:56;;6196:5;-1:-1:-1;;;;;6196:30:197;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5215:427::-;5311:7;5446:26;5461:10;5446:14;:26::i;:::-;5442:194;;;-1:-1:-1;5481:1:197;5474:8;;5442:194;5511:14;5539:11;5528:34;;;;;;;;;;;;:::i;:::-;5511:51;;5583:42;5606:6;5614:10;5583:22;:42::i;:::-;5576:49;;;5442:194;5215:427;;;;:::o;7816:207:188:-;7899:7;-1:-1:-1;;7922:6:188;:27;7918:98;;7958:30;;-1:-1:-1;;;7958:30:188;;7982:4;7958:30;;;2573:51:258;-1:-1:-1;;;;;7958:15:188;;;;;2546:18:258;;7958:30:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7951:37;;;;7918:98;-1:-1:-1;8010:6:188;8003:13;;4327:1454:104;4438:12;4565:4;4559:11;-1:-1:-1;;;4688:17:104;4681:93;4821:2;4817:1;4798:17;4794:25;4787:37;4901:6;4896:2;4877:17;4873:26;4866:42;5703:2;5700:1;5696:2;5677:17;5674:1;5667:5;5660;5655:51;5224:16;5217:24;5211:2;5193:16;5190:24;5186:1;5182;5176:8;5173:15;5169:46;5166:76;4966:754;4955:765;;;5748:7;5740:34;;;;-1:-1:-1;;;5740:34:104;;11278:2:258;5740:34:104;;;11260:21:258;11317:2;11297:18;;;11290:30;-1:-1:-1;;;11336:18:258;;;11329:44;11390:18;;5740:34:104;;;;;;;;4428:1353;4327:1454;;;:::o;8158:167:188:-;8244:39;;-1:-1:-1;;;8244:39:188;;8268:4;8244:39;;;11631:34:258;-1:-1:-1;;;;;11701:15:258;;;11681:18;;;11674:43;8286:1:188;;8244:15;;;;;;11566:18:258;;8244:39:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;8240:78;;;8289:29;-1:-1:-1;;;;;8289:17:188;;8307:7;8316:1;8289:17;:29::i;8135:557:197:-;8276:41;;-1:-1:-1;;;8276:41:197;;-1:-1:-1;;;;;11649:15:258;;;8276:41:197;;;11631:34:258;11701:15;;;11681:18;;;11674:43;-1:-1:-1;;;;;;8276:6:197;:24;;;;;;11566:18:258;;8276:41:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8242:75;;-1:-1:-1;8242:75:197;-1:-1:-1;8328:27:197;8441:9;;8437:93;;8491:32;;-1:-1:-1;;;8491:32:197;;-1:-1:-1;;;;;2591:32:258;;;8491::197;;;2573:51:258;8474:56:197;;8491:6;:21;;;;;;2546:18:258;;8491:32:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8474:5;;8525:4;8474:16;:56::i;:::-;8452:78;;8437:93;8544:10;;8540:109;;8597:29;;-1:-1:-1;;;8597:29:197;;-1:-1:-1;;;;;2591:32:258;;;8597:29:197;;;2573:51:258;8579:70:197;;8597:6;:18;;;;;;2546::258;;8597:29:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;;8579:6;;-1:-1:-1;;;;;8579:70:197;8644:4;8579:17;:70::i;:::-;8556:93;;;;:::i;:::-;;;8540:109;8666:19;8135:557;-1:-1:-1;;;;;8135:557:197:o;8425:218:188:-;-1:-1:-1;;;;;8503:25:188;;8523:4;8503:25;;;;:74;;;8547:4;-1:-1:-1;;;;;8532:43:188;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8499:137;;;8598:38;;-1:-1:-1;;;8598:38:188;;;;;;;;;;;8499:137;8425:218;:::o;1357:535:221:-;1563:9;;;1694:19;;1687:27;1719:9;;1733;;;1730:16;;1716:31;1683:65;1673:121;;1778:1;1775;1768:12;1673:121;1857:19;;1357:535;-1:-1:-1;;1357:535:221:o;196:127:258:-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:275;399:2;393:9;464:2;445:13;;-1:-1:-1;;441:27:258;429:40;;499:18;484:34;;520:22;;;481:62;478:88;;;546:18;;:::i;:::-;582:2;575:22;328:275;;-1:-1:-1;328:275:258:o;608:1014::-;701:6;709;762:2;750:9;741:7;737:23;733:32;730:52;;;778:1;775;768:12;730:52;814:9;801:23;791:33;;843:2;896;885:9;881:18;868:32;919:18;960:2;952:6;949:14;946:34;;;976:1;973;966:12;946:34;1014:6;1003:9;999:22;989:32;;1059:7;1052:4;1048:2;1044:13;1040:27;1030:55;;1081:1;1078;1071:12;1030:55;1117:2;1104:16;1139:2;1135;1132:10;1129:36;;;1145:18;;:::i;:::-;1191:2;1188:1;1184:10;1174:20;;1214:28;1238:2;1234;1230:11;1214:28;:::i;:::-;1276:15;;;1346:11;;;1342:20;;;1307:12;;;;1374:19;;;1371:39;;;1406:1;1403;1396:12;1371:39;1430:11;;;;1450:142;1466:6;1461:3;1458:15;1450:142;;;1532:17;;1520:30;;1483:12;;;;1570;;;;1450:142;;;1611:5;1601:15;;;;;;;;608:1014;;;;;:::o;1627:131::-;-1:-1:-1;;;;;1702:31:258;;1692:42;;1682:70;;1748:1;1745;1738:12;1763:247;1822:6;1875:2;1863:9;1854:7;1850:23;1846:32;1843:52;;;1891:1;1888;1881:12;1843:52;1930:9;1917:23;1949:31;1974:5;1949:31;:::i;2635:335::-;2723:6;2731;2784:2;2772:9;2763:7;2759:23;2755:32;2752:52;;;2800:1;2797;2790:12;2752:52;2839:9;2826:23;2858:31;2883:5;2858:31;:::i;:::-;2908:5;2960:2;2945:18;;;;2932:32;;-1:-1:-1;;;2635:335:258:o;3211:530::-;3253:5;3306:3;3299:4;3291:6;3287:17;3283:27;3273:55;;3324:1;3321;3314:12;3273:55;3360:6;3347:20;3386:18;3382:2;3379:26;3376:52;;;3408:18;;:::i;:::-;3452:55;3495:2;3476:13;;-1:-1:-1;;3472:27:258;3501:4;3468:38;3452:55;:::i;:::-;3532:2;3523:7;3516:19;3578:3;3571:4;3566:2;3558:6;3554:15;3550:26;3547:35;3544:55;;;3595:1;3592;3585:12;3544:55;3660:2;3653:4;3645:6;3641:17;3634:4;3625:7;3621:18;3608:55;3708:1;3683:16;;;3701:4;3679:27;3672:38;;;;3687:7;3211:530;-1:-1:-1;;;3211:530:258:o;3746:607::-;3841:6;3849;3857;3910:2;3898:9;3889:7;3885:23;3881:32;3878:52;;;3926:1;3923;3916:12;3878:52;3962:9;3949:23;3939:33;;4023:2;4012:9;4008:18;3995:32;4046:18;4087:2;4079:6;4076:14;4073:34;;;4103:1;4100;4093:12;4073:34;4126:49;4167:7;4158:6;4147:9;4143:22;4126:49;:::i;:::-;4116:59;;4228:2;4217:9;4213:18;4200:32;4184:48;;4257:2;4247:8;4244:16;4241:36;;;4273:1;4270;4263:12;4241:36;;4296:51;4339:7;4328:8;4317:9;4313:24;4296:51;:::i;:::-;4286:61;;;3746:607;;;;;:::o;4358:320::-;4426:6;4479:2;4467:9;4458:7;4454:23;4450:32;4447:52;;;4495:1;4492;4485:12;4447:52;4535:9;4522:23;4568:18;4560:6;4557:30;4554:50;;;4600:1;4597;4590:12;4554:50;4623:49;4664:7;4655:6;4644:9;4640:22;4623:49;:::i;:::-;4613:59;4358:320;-1:-1:-1;;;;4358:320:258:o;4865:673::-;5051:2;5103:21;;;5173:13;;5076:18;;;5195:22;;;5022:4;;5051:2;5274:15;;;;5248:2;5233:18;;;5022:4;5317:195;5331:6;5328:1;5325:13;5317:195;;;5396:13;;-1:-1:-1;;;;;5392:39:258;5380:52;;5487:15;;;;5452:12;;;;5428:1;5346:9;5317:195;;;-1:-1:-1;5529:3:258;;4865:673;-1:-1:-1;;;;;;4865:673:258:o;5543:743::-;5647:6;5655;5663;5671;5724:3;5712:9;5703:7;5699:23;5695:33;5692:53;;;5741:1;5738;5731:12;5692:53;5777:9;5764:23;5754:33;;5837:2;5826:9;5822:18;5809:32;5850:31;5875:5;5850:31;:::i;:::-;5900:5;-1:-1:-1;5956:2:258;5941:18;;5928:32;5979:18;6009:14;;;6006:34;;;6036:1;6033;6026:12;6006:34;6059:49;6100:7;6091:6;6080:9;6076:22;6059:49;:::i;:::-;6049:59;;6161:2;6150:9;6146:18;6133:32;6117:48;;6190:2;6180:8;6177:16;6174:36;;;6206:1;6203;6196:12;6174:36;;6229:51;6272:7;6261:8;6250:9;6246:24;6229:51;:::i;:::-;6219:61;;;5543:743;;;;;;;:::o;6291:403::-;6374:6;6382;6435:2;6423:9;6414:7;6410:23;6406:32;6403:52;;;6451:1;6448;6441:12;6403:52;6490:9;6477:23;6509:31;6534:5;6509:31;:::i;:::-;6559:5;-1:-1:-1;6616:2:258;6601:18;;6588:32;6629:33;6588:32;6629:33;:::i;:::-;6681:7;6671:17;;;6291:403;;;;;:::o;7149:539::-;7235:6;7243;7296:2;7284:9;7275:7;7271:23;7267:32;7264:52;;;7312:1;7309;7302:12;7264:52;7352:9;7339:23;7381:18;7422:2;7414:6;7411:14;7408:34;;;7438:1;7435;7428:12;7408:34;7461:49;7502:7;7493:6;7482:9;7478:22;7461:49;:::i;:::-;7451:59;;7563:2;7552:9;7548:18;7535:32;7519:48;;7592:2;7582:8;7579:16;7576:36;;;7608:1;7605;7598:12;7576:36;;7631:51;7674:7;7663:8;7652:9;7648:24;7631:51;:::i;:::-;7621:61;;;7149:539;;;;;:::o;7693:801::-;-1:-1:-1;;;;;7969:32:258;;7951:51;;8021:2;8039:18;;;8032:34;;;7939:2;8097;8082:18;;8075:30;;;8154:13;;7924:18;;;8176:22;;;7891:4;;8256:15;;;;8229:3;8214:19;;;7891:4;8299:169;8313:6;8310:1;8307:13;8299:169;;;8374:13;;8362:26;;8443:15;;;;8408:12;;;;8335:1;8328:9;8299:169;;;-1:-1:-1;8485:3:258;;7693:801;-1:-1:-1;;;;;;;;7693:801:258:o;8707:184::-;8777:6;8830:2;8818:9;8809:7;8805:23;8801:32;8798:52;;;8846:1;8843;8836:12;8798:52;-1:-1:-1;8869:16:258;;8707:184;-1:-1:-1;8707:184:258:o;8896:251::-;8966:6;9019:2;9007:9;8998:7;8994:23;8990:32;8987:52;;;9035:1;9032;9025:12;8987:52;9067:9;9061:16;9086:31;9111:5;9086:31;:::i;10944:127::-;11005:10;11000:3;10996:20;10993:1;10986:31;11036:4;11033:1;11026:15;11060:4;11057:1;11050:15;11728:245;11807:6;11815;11868:2;11856:9;11847:7;11843:23;11839:32;11836:52;;;11884:1;11881;11874:12;11836:52;-1:-1:-1;;11907:16:258;;11963:2;11948:18;;;11942:25;11907:16;;11942:25;;-1:-1:-1;11728:245:258:o;11978:188::-;12057:13;;-1:-1:-1;;;;;12099:42:258;;12089:53;;12079:81;;12156:1;12153;12146:12;12079:81;11978:188;;;:::o;12171:710::-;12271:6;12324:2;12312:9;12303:7;12299:23;12295:32;12292:52;;;12340:1;12337;12330:12;12292:52;12373:2;12367:9;12415:2;12407:6;12403:15;12484:6;12472:10;12469:22;12448:18;12436:10;12433:34;12430:62;12427:88;;;12495:18;;:::i;:::-;12531:2;12524:22;12568:16;;12624:10;12613:22;;12603:33;;12593:61;;12650:1;12647;12640:12;12593:61;12663:21;;12717:49;12762:2;12747:18;;12717:49;:::i;:::-;12712:2;12704:6;12700:15;12693:74;12800:49;12845:2;12834:9;12830:18;12800:49;:::i;:::-;12795:2;12783:15;;12776:74;12787:6;12171:710;-1:-1:-1;;;12171:710:258:o;12886:222::-;12951:9;;;12972:10;;;12969:133;;;13024:10;13019:3;13015:20;13012:1;13005:31;13059:4;13056:1;13049:15;13087:4;13084:1;13077:15;13113:277;13180:6;13233:2;13221:9;13212:7;13208:23;13204:32;13201:52;;;13249:1;13246;13239:12;13201:52;13281:9;13275:16;13334:5;13327:13;13320:21;13313:5;13310:32;13300:60;;13356:1;13353;13346:12", + "linkReferences": {}, + "immutableReferences": { + "64681": [ + { + "start": 731, + "length": 32 + }, + { + "start": 973, + "length": 32 + }, + { + "start": 1252, + "length": 32 + }, + { + "start": 1327, + "length": 32 + }, + { + "start": 1425, + "length": 32 + }, + { + "start": 1607, + "length": 32 + }, + { + "start": 1682, + "length": 32 + }, + { + "start": 1780, + "length": 32 + }, + { + "start": 2015, + "length": 32 + }, + { + "start": 2531, + "length": 32 + }, + { + "start": 3295, + "length": 32 + }, + { + "start": 3451, + "length": 32 + }, + { + "start": 3624, + "length": 32 + } + ], + "64685": [ + { + "start": 429, + "length": 32 + }, + { + "start": 2130, + "length": 32 + } + ], + "64688": [ + { + "start": 299, + "length": 32 + }, + { + "start": 2250, + "length": 32 + } + ], + "66662": [ + { + "start": 511, + "length": 32 + }, + { + "start": 826, + "length": 32 + } + ] + } + }, + "methodIdentifiers": { + "BORROWING_MASK()": "b505e7a2", + "assetOf(bytes)": "e170a9bf", + "assetsUsed(bytes)": "aeffddde", + "balanceOf(bytes)": "78415365", + "claim(uint256,bytes32[])": "2f52ebb7", + "deposit(uint256,bytes,bytes)": "69445c31", + "depositToAaveV2Morpho(address,uint256)": "5528481b", + "identifier()": "7998a1c4", + "isBorrowingAny(address)": "2f93417c", + "isDebt()": "89353a09", + "minimumHealthFactor()": "1caff8b1", + "morpho()": "d8fbc833", + "morphoLens()": "425734d3", + "morphoRewardsDistributor()": "5b5d4d78", + "revokeApproval(address,address)": "d3bfe76a", + "slippage()": "3e032a3b", + "withdraw(uint256,address,bytes,bytes)": "c9111bd7", + "withdrawFromAaveV2Morpho(address,uint256)": "872de812", + "withdrawableFrom(bytes,bytes)": "fa50e5d2" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_morpho\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_morphoLens\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minHealthFactor\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"rewardDistributor\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BaseAdaptor__ConstructorHealthFactorTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__ExternalReceiverBlocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"BaseAdaptor__PricingNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__Slippage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__UserDepositsNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__UserWithdrawsNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MorphoAaveV2ATokenAdaptor__HealthFactorTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BORROWING_MASK\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"}],\"name\":\"assetOf\",\"outputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"}],\"name\":\"assetsUsed\",\"outputs\":[{\"internalType\":\"contract ERC20[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"claimable\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IAaveToken\",\"name\":\"aToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountToDeposit\",\"type\":\"uint256\"}],\"name\":\"depositToAaveV2Morpho\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"identifier\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"isBorrowingAny\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDebt\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumHealthFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"morpho\",\"outputs\":[{\"internalType\":\"contract IMorphoV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"morphoLens\",\"outputs\":[{\"internalType\":\"contract IMorphoLensV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"morphoRewardsDistributor\",\"outputs\":[{\"internalType\":\"contract RewardsDistributor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"revokeApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slippage\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IAaveToken\",\"name\":\"aToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountToWithdraw\",\"type\":\"uint256\"}],\"name\":\"withdrawFromAaveV2Morpho\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"withdrawableFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"crispymangoes\",\"kind\":\"dev\",\"methods\":{\"deposit(uint256,bytes,bytes)\":{\"details\":\"configurationData is not used for deposits bc it only influences user withdraws\",\"params\":{\"adaptorData\":\"adaptor data containing the abi encoded aToken\",\"assets\":\"the amount of assets to lend on Morpho\"}},\"depositToAaveV2Morpho(address,uint256)\":{\"details\":\"Uses `_maxAvailable` helper function, see BaseAdaptor.sol\",\"params\":{\"aToken\":\"the aToken to lend on Morpho\",\"amountToDeposit\":\"the amount of `tokenToDeposit` to lend on Morpho.\"}},\"identifier()\":{\"details\":\"Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this Identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult.\"},\"isBorrowingAny(address)\":{\"details\":\"Returns if a user has been borrowing from any market.\",\"params\":{\"user\":\"The address to check if it is borrowing or not.\"},\"returns\":{\"_0\":\"True if the user has been borrowing on any market, false otherwise.\"}},\"revokeApproval(address,address)\":{\"params\":{\"asset\":\"the ERC20 asset to revoke `spender`s approval for\",\"spender\":\"the address to revoke approval for\"}},\"withdraw(uint256,address,bytes,bytes)\":{\"details\":\"Important to verify that external receivers are allowed if receiver is not Cellar address.\",\"params\":{\"adaptorData\":\"adaptor data containing the abi encoded aToken\",\"assets\":\"the amount of assets to withdraw from Morpho\",\"receiver\":\"the address to send withdrawn assets to\"}},\"withdrawFromAaveV2Morpho(address,uint256)\":{\"params\":{\"aToken\":\"the atoken to withdraw from Morpho.\",\"amountToWithdraw\":\"the amount of `tokenToWithdraw` to withdraw from Morpho\"}},\"withdrawableFrom(bytes,bytes)\":{\"params\":{\"adaptorData\":\"the abi encoded aToken address\"}}},\"title\":\"Morpho Aave V2 aToken Adaptor\",\"version\":1},\"userdoc\":{\"errors\":{\"BaseAdaptor__ConstructorHealthFactorTooLow()\":[{\"notice\":\"Attempted to set a constructor minimum health factor to a value below `MINIMUM_CONSTRUCTOR_HEALTH_FACTOR()`.\"}],\"BaseAdaptor__ExternalReceiverBlocked()\":[{\"notice\":\"Attempted to specify an external receiver during a Cellar `callOnAdaptor` call.\"}],\"BaseAdaptor__PricingNotSupported(address)\":[{\"notice\":\"Attempted swap used unsupported output asset.\"}],\"BaseAdaptor__Slippage()\":[{\"notice\":\"Attempted swap has bad slippage.\"}],\"BaseAdaptor__UserDepositsNotAllowed()\":[{\"notice\":\"Attempted to deposit to a position where user deposits were not allowed.\"}],\"BaseAdaptor__UserWithdrawsNotAllowed()\":[{\"notice\":\"Attempted to withdraw from a position where user withdraws were not allowed.\"}],\"MorphoAaveV2ATokenAdaptor__HealthFactorTooLow()\":[{\"notice\":\"Attempted withdraw would lower Cellar health factor too low.\"}]},\"kind\":\"user\",\"methods\":{\"BORROWING_MASK()\":{\"notice\":\"Bit mask used to determine if a cellar has any open borrow positions by getting the cellar's userMarkets, and performing an AND operation with the borrow mask.\"},\"assetOf(bytes)\":{\"notice\":\"Returns the positions aToken underlying asset.\"},\"assetsUsed(bytes)\":{\"notice\":\"When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup.\"},\"balanceOf(bytes)\":{\"notice\":\"Returns the cellars balance of the positions aToken.\"},\"claim(uint256,bytes32[])\":{\"notice\":\"Allows cellars to claim Morpho Rewards.\"},\"deposit(uint256,bytes,bytes)\":{\"notice\":\"Cellar must approve Morpho to spend its assets, then call supply to lend its assets.\"},\"depositToAaveV2Morpho(address,uint256)\":{\"notice\":\"Allows strategists to lend assets on Morpho.\"},\"isDebt()\":{\"notice\":\"This adaptor returns collateral, and not debt.\"},\"minimumHealthFactor()\":{\"notice\":\"Minimum Health Factor enforced after every aToken withdraw.Overwrites strategist set minimums if they are lower.\"},\"morpho()\":{\"notice\":\"The Morpho Aave V2 contract on current network.For mainnet use 0x777777c9898D384F785Ee44Acfe945efDFf5f3E0.\"},\"morphoLens()\":{\"notice\":\"The Morpho Aave V2 Lens contract on current network.For mainnet use 0x507fA343d0A90786d86C7cd885f5C49263A91FF4.\"},\"morphoRewardsDistributor()\":{\"notice\":\"The Morpho Aave V3 rewards handler contract on current network.For mainnet use 0x3B14E5C73e0A56D607A8688098326fD4b4292135.\"},\"revokeApproval(address,address)\":{\"notice\":\"Allows strategists to zero out an approval for a given `asset`.\"},\"slippage()\":{\"notice\":\"Max possible slippage when making a swap router swap.\"},\"withdraw(uint256,address,bytes,bytes)\":{\"notice\":\"Cellars must withdraw from Morpho\"},\"withdrawFromAaveV2Morpho(address,uint256)\":{\"notice\":\"Allows strategists to withdraw assets from Morpho.\"},\"withdrawableFrom(bytes,bytes)\":{\"notice\":\"Checks if Cellar has open borrows, and if so returns zero. Otherwise returns balanceOf in underlying.\"}},\"notice\":\"Allows Cellars to interact with Morpho Aave V2 positions.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/adaptors/Morpho/MorphoAaveV2ATokenAdaptor.sol\":\"MorphoAaveV2ATokenAdaptor\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/\",\":@balancer/=lib/balancer-v2-monorepo/pkg/\",\":@chainlink/=lib/chainlink/\",\":@ds-test/=lib/forge-std/lib/ds-test/src/\",\":@ensdomains/=node_modules/@ensdomains/\",\":@forge-std/=lib/forge-std/src/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@solmate/=lib/solmate/src/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":@uniswapV3C/=lib/v3-core/contracts/\",\":@uniswapV3P/=lib/v3-periphery/contracts/\",\":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/\",\":balancer-v2-monorepo/=lib/balancer-v2-monorepo/\",\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\":compound-protocol/=lib/compound-protocol/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/src/\",\":v3-core.git/=lib/v3-core.git/contracts/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery.git/=lib/v3-periphery.git/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\":{\"keccak256\":\"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\",\"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\"]},\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\":{\"keccak256\":\"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\",\"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\"]},\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\",\"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol\":{\"keccak256\":\"0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf\",\"dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de\",\"dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929\",\"dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg\"]},\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\",\"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\":{\"keccak256\":\"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\",\"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\",\"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\"]},\"lib/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\",\"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\"]},\"lib/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\",\"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\"]},\"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\":{\"keccak256\":\"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\",\"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\"]},\"src/Registry.sol\":{\"keccak256\":\"0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189\",\"dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK\"]},\"src/base/Cellar.sol\":{\"keccak256\":\"0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058\",\"dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs\"]},\"src/base/ERC20.sol\":{\"keccak256\":\"0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4\",\"dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf\"]},\"src/base/ERC4626.sol\":{\"keccak256\":\"0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469\",\"dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE\"]},\"src/base/Multicall.sol\":{\"keccak256\":\"0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c\",\"dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K\"]},\"src/base/SafeTransferLib.sol\":{\"keccak256\":\"0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a\",\"dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3\"]},\"src/interfaces/IMulticall.sol\":{\"keccak256\":\"0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0\",\"dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5\"]},\"src/interfaces/external/IAaveToken.sol\":{\"keccak256\":\"0x77cd64637e4c0fd379b2d4d826bcd9f64fc706a291ce77d023f693d1eb8e45d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e87630603401ff3374cb610b765e46a3a235ef294fab212cf3116a35db7c4d58\",\"dweb:/ipfs/Qma8awSuYptmpBsWUMz9NZBogVRtVQwXF5cvfsVWpNKhc3\"]},\"src/interfaces/external/IChainlinkAggregator.sol\":{\"keccak256\":\"0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2\",\"dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs\"]},\"src/interfaces/external/IGravity.sol\":{\"keccak256\":\"0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51\",\"dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c\"]},\"src/interfaces/external/IUniswapV2Router02.sol\":{\"keccak256\":\"0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a\",\"dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo\"]},\"src/interfaces/external/IUniswapV3Router.sol\":{\"keccak256\":\"0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd\",\"dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK\"]},\"src/interfaces/external/Morpho/IMorphoLensV2.sol\":{\"keccak256\":\"0xc9232e163c278ff37fe6a81cadc4af59ac41e31017f39366b21a1b4ed03eadf7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cc3be8463c92906e52d6fcffba065fd9777568003adfeef344e03d0654064e9b\",\"dweb:/ipfs/Qme8DZoU8xHEQMxCFnVCgZw4ZrybPyFd4Ji47Attb8xQqN\"]},\"src/interfaces/external/Morpho/IMorphoV2.sol\":{\"keccak256\":\"0x7ff7eb9e520c6ed3290af890a22c77c6ba6cd5f2394f258a2b34eb7f6af5ad66\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://709aa0c2a2d7ed82e09c2765462a851bfc17aab125f735e12bd5ee1ad9e7e21f\",\"dweb:/ipfs/QmWHZuwxwSu6J9crczNc8araaSLwZpbKDJKFUN2uj7AJq9\"]},\"src/interfaces/external/UniswapV3Pool.sol\":{\"keccak256\":\"0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb\",\"urls\":[\"bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9\",\"dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh\"]},\"src/modules/adaptors/BaseAdaptor.sol\":{\"keccak256\":\"0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee\",\"dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd\"]},\"src/modules/adaptors/Morpho/MorphoAaveV2ATokenAdaptor.sol\":{\"keccak256\":\"0x87be01824e5d787ac65c6f7929447fa9b1d62118ad0bb6a7253a918b2bdba8a0\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://4640f6aaa9709bbb4727f6e436e01b709c2db3fc623374604daaf8210ea5aaaf\",\"dweb:/ipfs/QmZyhTLXZo264ajSRK5o8G2mUMoRxwaXZE1gGgxwNe6Caz\"]},\"src/modules/adaptors/Morpho/MorphoRewardHandler.sol\":{\"keccak256\":\"0xc1461e49dacbb75fe03a4aa08a58bec9639416d57fed6c6595ade2f343520480\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b2cc897411f203e04233ee37d60e70bed92f310df63beb5adede89009c8cfc54\",\"dweb:/ipfs/QmSgJ6xXXqRLTcmyDf5uPtd5FqLvEmuK4QQ5LBXuk5dbhp\"]},\"src/modules/price-router/Extensions/Extension.sol\":{\"keccak256\":\"0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1\",\"dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo\"]},\"src/modules/price-router/PriceRouter.sol\":{\"keccak256\":\"0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66\",\"dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K\"]},\"src/modules/swap-router/SwapRouter.sol\":{\"keccak256\":\"0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818\",\"dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr\"]},\"src/utils/Math.sol\":{\"keccak256\":\"0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312\",\"dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r\"]},\"src/utils/Uint32Array.sol\":{\"keccak256\":\"0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944\",\"dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.16+commit.07a7930e" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_morpho", + "type": "address" + }, + { + "internalType": "address", + "name": "_morphoLens", + "type": "address" + }, + { + "internalType": "uint256", + "name": "minHealthFactor", + "type": "uint256" + }, + { + "internalType": "address", + "name": "rewardDistributor", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__ConstructorHealthFactorTooLow" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__ExternalReceiverBlocked" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "type": "error", + "name": "BaseAdaptor__PricingNotSupported" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__Slippage" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__UserDepositsNotAllowed" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__UserWithdrawsNotAllowed" + }, + { + "inputs": [], + "type": "error", + "name": "MorphoAaveV2ATokenAdaptor__HealthFactorTooLow" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "BORROWING_MASK", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "assetOf", + "outputs": [ + { + "internalType": "contract ERC20", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "assetsUsed", + "outputs": [ + { + "internalType": "contract ERC20[]", + "name": "assets", + "type": "address[]" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "claimable", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "proof", + "type": "bytes32[]" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "claim" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "deposit" + }, + { + "inputs": [ + { + "internalType": "contract IAaveToken", + "name": "aToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountToDeposit", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "depositToAaveV2Morpho" + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "identifier", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function", + "name": "isBorrowingAny", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "isDebt", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "minimumHealthFactor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "morpho", + "outputs": [ + { + "internalType": "contract IMorphoV2", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "morphoLens", + "outputs": [ + { + "internalType": "contract IMorphoLensV2", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "morphoRewardsDistributor", + "outputs": [ + { + "internalType": "contract RewardsDistributor", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "revokeApproval" + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "slippage", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "withdraw" + }, + { + "inputs": [ + { + "internalType": "contract IAaveToken", + "name": "aToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountToWithdraw", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "withdrawFromAaveV2Morpho" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "withdrawableFrom", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "deposit(uint256,bytes,bytes)": { + "details": "configurationData is not used for deposits bc it only influences user withdraws", + "params": { + "adaptorData": "adaptor data containing the abi encoded aToken", + "assets": "the amount of assets to lend on Morpho" + } + }, + "depositToAaveV2Morpho(address,uint256)": { + "details": "Uses `_maxAvailable` helper function, see BaseAdaptor.sol", + "params": { + "aToken": "the aToken to lend on Morpho", + "amountToDeposit": "the amount of `tokenToDeposit` to lend on Morpho." + } + }, + "identifier()": { + "details": "Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this Identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult." + }, + "isBorrowingAny(address)": { + "details": "Returns if a user has been borrowing from any market.", + "params": { + "user": "The address to check if it is borrowing or not." + }, + "returns": { + "_0": "True if the user has been borrowing on any market, false otherwise." + } + }, + "revokeApproval(address,address)": { + "params": { + "asset": "the ERC20 asset to revoke `spender`s approval for", + "spender": "the address to revoke approval for" + } + }, + "withdraw(uint256,address,bytes,bytes)": { + "details": "Important to verify that external receivers are allowed if receiver is not Cellar address.", + "params": { + "adaptorData": "adaptor data containing the abi encoded aToken", + "assets": "the amount of assets to withdraw from Morpho", + "receiver": "the address to send withdrawn assets to" + } + }, + "withdrawFromAaveV2Morpho(address,uint256)": { + "params": { + "aToken": "the atoken to withdraw from Morpho.", + "amountToWithdraw": "the amount of `tokenToWithdraw` to withdraw from Morpho" + } + }, + "withdrawableFrom(bytes,bytes)": { + "params": { + "adaptorData": "the abi encoded aToken address" + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "BORROWING_MASK()": { + "notice": "Bit mask used to determine if a cellar has any open borrow positions by getting the cellar's userMarkets, and performing an AND operation with the borrow mask." + }, + "assetOf(bytes)": { + "notice": "Returns the positions aToken underlying asset." + }, + "assetsUsed(bytes)": { + "notice": "When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup." + }, + "balanceOf(bytes)": { + "notice": "Returns the cellars balance of the positions aToken." + }, + "claim(uint256,bytes32[])": { + "notice": "Allows cellars to claim Morpho Rewards." + }, + "deposit(uint256,bytes,bytes)": { + "notice": "Cellar must approve Morpho to spend its assets, then call supply to lend its assets." + }, + "depositToAaveV2Morpho(address,uint256)": { + "notice": "Allows strategists to lend assets on Morpho." + }, + "isDebt()": { + "notice": "This adaptor returns collateral, and not debt." + }, + "minimumHealthFactor()": { + "notice": "Minimum Health Factor enforced after every aToken withdraw.Overwrites strategist set minimums if they are lower." + }, + "morpho()": { + "notice": "The Morpho Aave V2 contract on current network.For mainnet use 0x777777c9898D384F785Ee44Acfe945efDFf5f3E0." + }, + "morphoLens()": { + "notice": "The Morpho Aave V2 Lens contract on current network.For mainnet use 0x507fA343d0A90786d86C7cd885f5C49263A91FF4." + }, + "morphoRewardsDistributor()": { + "notice": "The Morpho Aave V3 rewards handler contract on current network.For mainnet use 0x3B14E5C73e0A56D607A8688098326fD4b4292135." + }, + "revokeApproval(address,address)": { + "notice": "Allows strategists to zero out an approval for a given `asset`." + }, + "slippage()": { + "notice": "Max possible slippage when making a swap router swap." + }, + "withdraw(uint256,address,bytes,bytes)": { + "notice": "Cellars must withdraw from Morpho" + }, + "withdrawFromAaveV2Morpho(address,uint256)": { + "notice": "Allows strategists to withdraw assets from Morpho." + }, + "withdrawableFrom(bytes,bytes)": { + "notice": "Checks if Cellar has open borrows, and if so returns zero. Otherwise returns balanceOf in underlying." + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + ":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/", + ":@balancer/=lib/balancer-v2-monorepo/pkg/", + ":@chainlink/=lib/chainlink/", + ":@ds-test/=lib/forge-std/lib/ds-test/src/", + ":@ensdomains/=node_modules/@ensdomains/", + ":@forge-std/=lib/forge-std/src/", + ":@openzeppelin/=lib/openzeppelin-contracts/", + ":@solmate/=lib/solmate/src/", + ":@uniswap/v3-core/=lib/v3-core/", + ":@uniswap/v3-periphery/=lib/v3-periphery/", + ":@uniswapV3C/=lib/v3-core/contracts/", + ":@uniswapV3P/=lib/v3-periphery/contracts/", + ":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/", + ":balancer-v2-monorepo/=lib/balancer-v2-monorepo/", + ":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/", + ":compound-protocol/=lib/compound-protocol/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":eth-gas-reporter/=node_modules/eth-gas-reporter/", + ":forge-std/=lib/forge-std/src/", + ":hardhat/=node_modules/hardhat/", + ":openzeppelin-contracts/=lib/openzeppelin-contracts/", + ":solmate/=lib/solmate/src/", + ":v3-core.git/=lib/v3-core.git/contracts/", + ":v3-core/=lib/v3-core/contracts/", + ":v3-periphery.git/=lib/v3-periphery.git/contracts/", + ":v3-periphery/=lib/v3-periphery/contracts/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/modules/adaptors/Morpho/MorphoAaveV2ATokenAdaptor.sol": "MorphoAaveV2ATokenAdaptor" + }, + "libraries": {} + }, + "sources": { + "lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol": { + "keccak256": "0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7", + "urls": [ + "bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465", + "dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a" + ], + "license": "MIT" + }, + "lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol": { + "keccak256": "0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2", + "urls": [ + "bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b", + "dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG" + ], + "license": "MIT" + }, + "lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol": { + "keccak256": "0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846", + "urls": [ + "bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7", + "dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { + "keccak256": "0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673", + "urls": [ + "bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2", + "dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { + "keccak256": "0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b", + "urls": [ + "bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34", + "dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol": { + "keccak256": "0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da", + "urls": [ + "bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708", + "dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol": { + "keccak256": "0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028", + "urls": [ + "bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf", + "dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Address.sol": { + "keccak256": "0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700", + "urls": [ + "bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de", + "dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Context.sol": { + "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", + "urls": [ + "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", + "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol": { + "keccak256": "0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb", + "urls": [ + "bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929", + "dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg" + ], + "license": "MIT" + }, + "lib/solmate/src/auth/Owned.sol": { + "keccak256": "0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea", + "urls": [ + "bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4", + "dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx" + ], + "license": "AGPL-3.0-only" + }, + "lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol": { + "keccak256": "0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968", + "urls": [ + "bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e", + "dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol": { + "keccak256": "0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634", + "urls": [ + "bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5", + "dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol": { + "keccak256": "0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5", + "urls": [ + "bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7", + "dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol": { + "keccak256": "0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b", + "urls": [ + "bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa", + "dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol": { + "keccak256": "0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd", + "urls": [ + "bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03", + "dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol": { + "keccak256": "0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7", + "urls": [ + "bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047", + "dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol": { + "keccak256": "0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235", + "urls": [ + "bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735", + "dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol": { + "keccak256": "0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43", + "urls": [ + "bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea", + "dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/libraries/FullMath.sol": { + "keccak256": "0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645", + "urls": [ + "bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125", + "dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd" + ], + "license": "MIT" + }, + "lib/v3-core/contracts/libraries/TickMath.sol": { + "keccak256": "0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129", + "urls": [ + "bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c", + "dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-periphery/contracts/libraries/OracleLibrary.sol": { + "keccak256": "0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b", + "urls": [ + "bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53", + "dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM" + ], + "license": "GPL-2.0-or-later" + }, + "src/Registry.sol": { + "keccak256": "0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47", + "urls": [ + "bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189", + "dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK" + ], + "license": "Apache-2.0" + }, + "src/base/Cellar.sol": { + "keccak256": "0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47", + "urls": [ + "bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058", + "dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs" + ], + "license": "Apache-2.0" + }, + "src/base/ERC20.sol": { + "keccak256": "0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02", + "urls": [ + "bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4", + "dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf" + ], + "license": "AGPL-3.0-only" + }, + "src/base/ERC4626.sol": { + "keccak256": "0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7", + "urls": [ + "bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469", + "dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE" + ], + "license": "AGPL-3.0-only" + }, + "src/base/Multicall.sol": { + "keccak256": "0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9", + "urls": [ + "bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c", + "dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K" + ], + "license": "GPL-2.0-or-later" + }, + "src/base/SafeTransferLib.sol": { + "keccak256": "0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324", + "urls": [ + "bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a", + "dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3" + ], + "license": "AGPL-3.0-only" + }, + "src/interfaces/IMulticall.sol": { + "keccak256": "0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e", + "urls": [ + "bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0", + "dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5" + ], + "license": "GPL-2.0-or-later" + }, + "src/interfaces/external/IAaveToken.sol": { + "keccak256": "0x77cd64637e4c0fd379b2d4d826bcd9f64fc706a291ce77d023f693d1eb8e45d8", + "urls": [ + "bzz-raw://e87630603401ff3374cb610b765e46a3a235ef294fab212cf3116a35db7c4d58", + "dweb:/ipfs/Qma8awSuYptmpBsWUMz9NZBogVRtVQwXF5cvfsVWpNKhc3" + ], + "license": "MIT" + }, + "src/interfaces/external/IChainlinkAggregator.sol": { + "keccak256": "0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d", + "urls": [ + "bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2", + "dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/IGravity.sol": { + "keccak256": "0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11", + "urls": [ + "bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51", + "dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/IUniswapV2Router02.sol": { + "keccak256": "0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f", + "urls": [ + "bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a", + "dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/IUniswapV3Router.sol": { + "keccak256": "0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355", + "urls": [ + "bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd", + "dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK" + ], + "license": "GPL-2.0-or-later" + }, + "src/interfaces/external/Morpho/IMorphoLensV2.sol": { + "keccak256": "0xc9232e163c278ff37fe6a81cadc4af59ac41e31017f39366b21a1b4ed03eadf7", + "urls": [ + "bzz-raw://cc3be8463c92906e52d6fcffba065fd9777568003adfeef344e03d0654064e9b", + "dweb:/ipfs/Qme8DZoU8xHEQMxCFnVCgZw4ZrybPyFd4Ji47Attb8xQqN" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/Morpho/IMorphoV2.sol": { + "keccak256": "0x7ff7eb9e520c6ed3290af890a22c77c6ba6cd5f2394f258a2b34eb7f6af5ad66", + "urls": [ + "bzz-raw://709aa0c2a2d7ed82e09c2765462a851bfc17aab125f735e12bd5ee1ad9e7e21f", + "dweb:/ipfs/QmWHZuwxwSu6J9crczNc8araaSLwZpbKDJKFUN2uj7AJq9" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/UniswapV3Pool.sol": { + "keccak256": "0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb", + "urls": [ + "bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9", + "dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh" + ], + "license": null + }, + "src/modules/adaptors/BaseAdaptor.sol": { + "keccak256": "0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c", + "urls": [ + "bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee", + "dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd" + ], + "license": "Apache-2.0" + }, + "src/modules/adaptors/Morpho/MorphoAaveV2ATokenAdaptor.sol": { + "keccak256": "0x87be01824e5d787ac65c6f7929447fa9b1d62118ad0bb6a7253a918b2bdba8a0", + "urls": [ + "bzz-raw://4640f6aaa9709bbb4727f6e436e01b709c2db3fc623374604daaf8210ea5aaaf", + "dweb:/ipfs/QmZyhTLXZo264ajSRK5o8G2mUMoRxwaXZE1gGgxwNe6Caz" + ], + "license": "Apache-2.0" + }, + "src/modules/adaptors/Morpho/MorphoRewardHandler.sol": { + "keccak256": "0xc1461e49dacbb75fe03a4aa08a58bec9639416d57fed6c6595ade2f343520480", + "urls": [ + "bzz-raw://b2cc897411f203e04233ee37d60e70bed92f310df63beb5adede89009c8cfc54", + "dweb:/ipfs/QmSgJ6xXXqRLTcmyDf5uPtd5FqLvEmuK4QQ5LBXuk5dbhp" + ], + "license": "Apache-2.0" + }, + "src/modules/price-router/Extensions/Extension.sol": { + "keccak256": "0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d", + "urls": [ + "bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1", + "dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo" + ], + "license": "Apache-2.0" + }, + "src/modules/price-router/PriceRouter.sol": { + "keccak256": "0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9", + "urls": [ + "bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66", + "dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K" + ], + "license": "Apache-2.0" + }, + "src/modules/swap-router/SwapRouter.sol": { + "keccak256": "0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80", + "urls": [ + "bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818", + "dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr" + ], + "license": "Apache-2.0" + }, + "src/utils/Math.sol": { + "keccak256": "0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f", + "urls": [ + "bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312", + "dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r" + ], + "license": "Apache-2.0" + }, + "src/utils/Uint32Array.sol": { + "keccak256": "0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9", + "urls": [ + "bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944", + "dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3" + ], + "license": "Apache-2.0" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/modules/adaptors/Morpho/MorphoAaveV2ATokenAdaptor.sol", + "id": 65118, + "exportedSymbols": { + "BaseAdaptor": [ + 61644 + ], + "ERC20": [ + 45747 + ], + "IAaveToken": [ + 49523 + ], + "IMorphoLensV2": [ + 53305 + ], + "IMorphoV2": [ + 53396 + ], + "Math": [ + 74811 + ], + "MorphoAaveV2ATokenAdaptor": [ + 65117 + ], + "MorphoRewardHandler": [ + 66696 + ], + "SafeTransferLib": [ + 46498 + ] + }, + "nodeType": "SourceUnit", + "src": "39:9072:197", + "nodes": [ + { + "id": 64645, + "nodeType": "PragmaDirective", + "src": "39:23:197", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".16" + ] + }, + { + "id": 64650, + "nodeType": "ImportDirective", + "src": "64:97:197", + "nodes": [], + "absolutePath": "src/modules/adaptors/BaseAdaptor.sol", + "file": "src/modules/adaptors/BaseAdaptor.sol", + "nameLocation": "-1:-1:-1", + "scope": 65118, + "sourceUnit": 61645, + "symbolAliases": [ + { + "foreign": { + "id": 64646, + "name": "BaseAdaptor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61644, + "src": "73:11:197", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 64647, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45747, + "src": "86:5:197", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 64648, + "name": "SafeTransferLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46498, + "src": "93:15:197", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 64649, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74811, + "src": "110:4:197", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 64652, + "nodeType": "ImportDirective", + "src": "162:73:197", + "nodes": [], + "absolutePath": "src/interfaces/external/Morpho/IMorphoV2.sol", + "file": "src/interfaces/external/Morpho/IMorphoV2.sol", + "nameLocation": "-1:-1:-1", + "scope": 65118, + "sourceUnit": 53397, + "symbolAliases": [ + { + "foreign": { + "id": 64651, + "name": "IMorphoV2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 53396, + "src": "171:9:197", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 64654, + "nodeType": "ImportDirective", + "src": "236:81:197", + "nodes": [], + "absolutePath": "src/interfaces/external/Morpho/IMorphoLensV2.sol", + "file": "src/interfaces/external/Morpho/IMorphoLensV2.sol", + "nameLocation": "-1:-1:-1", + "scope": 65118, + "sourceUnit": 53306, + "symbolAliases": [ + { + "foreign": { + "id": 64653, + "name": "IMorphoLensV2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 53305, + "src": "245:13:197", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 64656, + "nodeType": "ImportDirective", + "src": "318:90:197", + "nodes": [], + "absolutePath": "src/modules/adaptors/Morpho/MorphoRewardHandler.sol", + "file": "src/modules/adaptors/Morpho/MorphoRewardHandler.sol", + "nameLocation": "-1:-1:-1", + "scope": 65118, + "sourceUnit": 66697, + "symbolAliases": [ + { + "foreign": { + "id": 64655, + "name": "MorphoRewardHandler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66696, + "src": "327:19:197", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 64658, + "nodeType": "ImportDirective", + "src": "409:68:197", + "nodes": [], + "absolutePath": "src/interfaces/external/IAaveToken.sol", + "file": "src/interfaces/external/IAaveToken.sol", + "nameLocation": "-1:-1:-1", + "scope": 65118, + "sourceUnit": 49524, + "symbolAliases": [ + { + "foreign": { + "id": 64657, + "name": "IAaveToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49523, + "src": "418:10:197", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 65117, + "nodeType": "ContractDefinition", + "src": "621:8489:197", + "nodes": [ + { + "id": 64667, + "nodeType": "UsingForDirective", + "src": "698:32:197", + "nodes": [], + "global": false, + "libraryName": { + "id": 64664, + "name": "SafeTransferLib", + "nameLocations": [ + "704:15:197" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46498, + "src": "704:15:197" + }, + "typeName": { + "id": 64666, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 64665, + "name": "ERC20", + "nameLocations": [ + "724:5:197" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "724:5:197" + }, + "referencedDeclaration": 45747, + "src": "724:5:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + } + }, + { + "id": 64670, + "nodeType": "UsingForDirective", + "src": "735:23:197", + "nodes": [], + "global": false, + "libraryName": { + "id": 64668, + "name": "Math", + "nameLocations": [ + "741:4:197" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 74811, + "src": "741:4:197" + }, + "typeName": { + "id": 64669, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "750:7:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 64674, + "nodeType": "VariableDeclaration", + "src": "1359:107:197", + "nodes": [], + "constant": true, + "documentation": { + "id": 64671, + "nodeType": "StructuredDocumentation", + "src": "1138:216:197", + "text": " @notice Bit mask used to determine if a cellar has any open borrow positions\n by getting the cellar's userMarkets, and performing an AND operation\n with the borrow mask." + }, + "functionSelector": "b505e7a2", + "mutability": "constant", + "name": "BORROWING_MASK", + "nameLocation": "1383:14:197", + "scope": 65117, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 64672, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1359:7:197", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307835353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535", + "id": 64673, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1400:66:197", + "typeDescriptions": { + "typeIdentifier": "t_rational_38597363079105398474523661669562635951089994888546854679819194669304376546645_by_1", + "typeString": "int_const 3859...(69 digits omitted)...6645" + }, + "value": "0x5555555555555555555555555555555555555555555555555555555555555555" + }, + "visibility": "public" + }, + { + "id": 64677, + "nodeType": "ErrorDefinition", + "src": "1563:54:197", + "nodes": [], + "documentation": { + "id": 64675, + "nodeType": "StructuredDocumentation", + "src": "1473:85:197", + "text": "@notice Attempted withdraw would lower Cellar health factor too low." + }, + "errorSelector": "34c91144", + "name": "MorphoAaveV2ATokenAdaptor__HealthFactorTooLow", + "nameLocation": "1569:45:197", + "parameters": { + "id": 64676, + "nodeType": "ParameterList", + "parameters": [], + "src": "1614:2:197" + } + }, + { + "id": 64681, + "nodeType": "VariableDeclaration", + "src": "1777:33:197", + "nodes": [], + "constant": false, + "documentation": { + "id": 64678, + "nodeType": "StructuredDocumentation", + "src": "1623:149:197", + "text": " @notice The Morpho Aave V2 contract on current network.\n @notice For mainnet use 0x777777c9898D384F785Ee44Acfe945efDFf5f3E0." + }, + "functionSelector": "d8fbc833", + "mutability": "immutable", + "name": "morpho", + "nameLocation": "1804:6:197", + "scope": 65117, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + }, + "typeName": { + "id": 64680, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 64679, + "name": "IMorphoV2", + "nameLocations": [ + "1777:9:197" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 53396, + "src": "1777:9:197" + }, + "referencedDeclaration": 53396, + "src": "1777:9:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + }, + "visibility": "public" + }, + { + "id": 64685, + "nodeType": "VariableDeclaration", + "src": "1976:41:197", + "nodes": [], + "constant": false, + "documentation": { + "id": 64682, + "nodeType": "StructuredDocumentation", + "src": "1817:154:197", + "text": " @notice The Morpho Aave V2 Lens contract on current network.\n @notice For mainnet use 0x507fA343d0A90786d86C7cd885f5C49263A91FF4." + }, + "functionSelector": "425734d3", + "mutability": "immutable", + "name": "morphoLens", + "nameLocation": "2007:10:197", + "scope": 65117, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoLensV2_$53305", + "typeString": "contract IMorphoLensV2" + }, + "typeName": { + "id": 64684, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 64683, + "name": "IMorphoLensV2", + "nameLocations": [ + "1976:13:197" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 53305, + "src": "1976:13:197" + }, + "referencedDeclaration": 53305, + "src": "1976:13:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoLensV2_$53305", + "typeString": "contract IMorphoLensV2" + } + }, + "visibility": "public" + }, + { + "id": 64688, + "nodeType": "VariableDeclaration", + "src": "2184:44:197", + "nodes": [], + "constant": false, + "documentation": { + "id": 64686, + "nodeType": "StructuredDocumentation", + "src": "2024:155:197", + "text": " @notice Minimum Health Factor enforced after every aToken withdraw.\n @notice Overwrites strategist set minimums if they are lower." + }, + "functionSelector": "1caff8b1", + "mutability": "immutable", + "name": "minimumHealthFactor", + "nameLocation": "2209:19:197", + "scope": 65117, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 64687, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2184:7:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "id": 64723, + "nodeType": "FunctionDefinition", + "src": "2235:383:197", + "nodes": [], + "body": { + "id": 64722, + "nodeType": "Block", + "src": "2414:204:197", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 64703, + "name": "minHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64694, + "src": "2462:15:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 64702, + "name": "_verifyConstructorMinimumHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61626, + "src": "2424:37:197", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 64704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2424:54:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 64705, + "nodeType": "ExpressionStatement", + "src": "2424:54:197" + }, + { + "expression": { + "id": 64710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 64706, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64681, + "src": "2488:6:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 64708, + "name": "_morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64690, + "src": "2507:7:197", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 64707, + "name": "IMorphoV2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 53396, + "src": "2497:9:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IMorphoV2_$53396_$", + "typeString": "type(contract IMorphoV2)" + } + }, + "id": 64709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2497:18:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + }, + "src": "2488:27:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + }, + "id": 64711, + "nodeType": "ExpressionStatement", + "src": "2488:27:197" + }, + { + "expression": { + "id": 64716, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 64712, + "name": "morphoLens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64685, + "src": "2525:10:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoLensV2_$53305", + "typeString": "contract IMorphoLensV2" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 64714, + "name": "_morphoLens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64692, + "src": "2552:11:197", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 64713, + "name": "IMorphoLensV2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 53305, + "src": "2538:13:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IMorphoLensV2_$53305_$", + "typeString": "type(contract IMorphoLensV2)" + } + }, + "id": 64715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2538:26:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoLensV2_$53305", + "typeString": "contract IMorphoLensV2" + } + }, + "src": "2525:39:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoLensV2_$53305", + "typeString": "contract IMorphoLensV2" + } + }, + "id": 64717, + "nodeType": "ExpressionStatement", + "src": "2525:39:197" + }, + { + "expression": { + "id": 64720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 64718, + "name": "minimumHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64688, + "src": "2574:19:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 64719, + "name": "minHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64694, + "src": "2596:15:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2574:37:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 64721, + "nodeType": "ExpressionStatement", + "src": "2574:37:197" + } + ] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 64699, + "name": "rewardDistributor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64696, + "src": "2395:17:197", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 64700, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 64698, + "name": "MorphoRewardHandler", + "nameLocations": [ + "2375:19:197" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 66696, + "src": "2375:19:197" + }, + "nodeType": "ModifierInvocation", + "src": "2375:38:197" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 64697, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 64690, + "mutability": "mutable", + "name": "_morpho", + "nameLocation": "2264:7:197", + "nodeType": "VariableDeclaration", + "scope": 64723, + "src": "2256:15:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 64689, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2256:7:197", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 64692, + "mutability": "mutable", + "name": "_morphoLens", + "nameLocation": "2289:11:197", + "nodeType": "VariableDeclaration", + "scope": 64723, + "src": "2281:19:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 64691, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2281:7:197", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 64694, + "mutability": "mutable", + "name": "minHealthFactor", + "nameLocation": "2318:15:197", + "nodeType": "VariableDeclaration", + "scope": 64723, + "src": "2310:23:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 64693, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2310:7:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 64696, + "mutability": "mutable", + "name": "rewardDistributor", + "nameLocation": "2351:17:197", + "nodeType": "VariableDeclaration", + "scope": 64723, + "src": "2343:25:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 64695, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2343:7:197", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2246:128:197" + }, + "returnParameters": { + "id": 64701, + "nodeType": "ParameterList", + "parameters": [], + "src": "2414:0:197" + }, + "scope": 65117, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 64738, + "nodeType": "FunctionDefinition", + "src": "3037:145:197", + "nodes": [], + "body": { + "id": 64737, + "nodeType": "Block", + "src": "3098:84:197", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "4d6f7270686f20416176652056322061546f6b656e2041646170746f72205620312e32", + "id": 64733, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3136:37:197", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4a2dae23e3b1312ed6fe4ce495c0cac8d7bd6b8de028aee507b4286973db6b81", + "typeString": "literal_string \"Morpho Aave V2 aToken Adaptor V 1.2\"" + }, + "value": "Morpho Aave V2 aToken Adaptor V 1.2" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_4a2dae23e3b1312ed6fe4ce495c0cac8d7bd6b8de028aee507b4286973db6b81", + "typeString": "literal_string \"Morpho Aave V2 aToken Adaptor V 1.2\"" + } + ], + "expression": { + "id": 64731, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3125:3:197", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 64732, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3129:6:197", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "3125:10:197", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 64734, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3125:49:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 64730, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3115:9:197", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 64735, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3115:60:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 64729, + "id": 64736, + "nodeType": "Return", + "src": "3108:67:197" + } + ] + }, + "baseFunctions": [ + 61410 + ], + "documentation": { + "id": 64724, + "nodeType": "StructuredDocumentation", + "src": "2736:296:197", + "text": " @dev Identifier unique to this adaptor for a shared registry.\n Normally the identifier would just be the address of this contract, but this\n Identifier is needed during Cellar Delegate Call Operations, so getting the address\n of the adaptor is more difficult." + }, + "functionSelector": "7998a1c4", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "identifier", + "nameLocation": "3046:10:197", + "overrides": { + "id": 64726, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3071:8:197" + }, + "parameters": { + "id": 64725, + "nodeType": "ParameterList", + "parameters": [], + "src": "3056:2:197" + }, + "returnParameters": { + "id": 64729, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 64728, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 64738, + "src": "3089:7:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 64727, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3089:7:197", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3088:9:197" + }, + "scope": 65117, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 64797, + "nodeType": "FunctionDefinition", + "src": "3649:482:197", + "nodes": [], + "body": { + "id": 64796, + "nodeType": "Block", + "src": "3738:393:197", + "nodes": [], + "statements": [ + { + "assignments": [ + 64751 + ], + "declarations": [ + { + "constant": false, + "id": 64751, + "mutability": "mutable", + "name": "aToken", + "nameLocation": "3796:6:197", + "nodeType": "VariableDeclaration", + "scope": 64796, + "src": "3785:17:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + }, + "typeName": { + "id": 64750, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 64749, + "name": "IAaveToken", + "nameLocations": [ + "3785:10:197" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49523, + "src": "3785:10:197" + }, + "referencedDeclaration": 49523, + "src": "3785:10:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + }, + "visibility": "internal" + } + ], + "id": 64758, + "initialValue": { + "arguments": [ + { + "id": 64754, + "name": "adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64743, + "src": "3816:11:197", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 64755, + "name": "IAaveToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49523, + "src": "3830:10:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAaveToken_$49523_$", + "typeString": "type(contract IAaveToken)" + } + } + ], + "id": 64756, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3829:12:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAaveToken_$49523_$", + "typeString": "type(contract IAaveToken)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_contract$_IAaveToken_$49523_$", + "typeString": "type(contract IAaveToken)" + } + ], + "expression": { + "id": 64752, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3805:3:197", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 64753, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3809:6:197", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "3805:10:197", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 64757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3805:37:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3785:57:197" + }, + { + "assignments": [ + 64761 + ], + "declarations": [ + { + "constant": false, + "id": 64761, + "mutability": "mutable", + "name": "underlying", + "nameLocation": "3858:10:197", + "nodeType": "VariableDeclaration", + "scope": 64796, + "src": "3852:16:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 64760, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 64759, + "name": "ERC20", + "nameLocations": [ + "3852:5:197" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "3852:5:197" + }, + "referencedDeclaration": 45747, + "src": "3852:5:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + } + ], + "id": 64767, + "initialValue": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 64763, + "name": "aToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64751, + "src": "3877:6:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + }, + "id": 64764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3884:24:197", + "memberName": "UNDERLYING_ASSET_ADDRESS", + "nodeType": "MemberAccess", + "referencedDeclaration": 49522, + "src": "3877:31:197", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 64765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3877:33:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 64762, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45747, + "src": "3871:5:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$45747_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 64766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3871:40:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3852:59:197" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 64773, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64681, + "src": "3952:6:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + ], + "id": 64772, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3944:7:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 64771, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3944:7:197", + "typeDescriptions": {} + } + }, + "id": 64774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3944:15:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 64775, + "name": "assets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64741, + "src": "3961:6:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 64768, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64761, + "src": "3921:10:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "id": 64770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3932:11:197", + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 46497, + "src": "3921:22:197", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$45747_$", + "typeString": "function (contract ERC20,address,uint256)" + } + }, + "id": 64776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3921:47:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 64777, + "nodeType": "ExpressionStatement", + "src": "3921:47:197" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 64783, + "name": "aToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64751, + "src": "4001:6:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + ], + "id": 64782, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3993:7:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 64781, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3993:7:197", + "typeDescriptions": {} + } + }, + "id": 64784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3993:15:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 64785, + "name": "assets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64741, + "src": "4010:6:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 64778, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64681, + "src": "3979:6:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + }, + "id": 64780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3986:6:197", + "memberName": "supply", + "nodeType": "MemberAccess", + "referencedDeclaration": 53372, + "src": "3979:13:197", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 64786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3979:38:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 64787, + "nodeType": "ExpressionStatement", + "src": "3979:38:197" + }, + { + "expression": { + "arguments": [ + { + "id": 64789, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64761, + "src": "4096:10:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + { + "arguments": [ + { + "id": 64792, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64681, + "src": "4116:6:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + ], + "id": 64791, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4108:7:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 64790, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4108:7:197", + "typeDescriptions": {} + } + }, + "id": 64793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4108:15:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 64788, + "name": "_revokeExternalApproval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61585, + "src": "4072:23:197", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$returns$__$", + "typeString": "function (contract ERC20,address)" + } + }, + "id": 64794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4072:52:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 64795, + "nodeType": "ExpressionStatement", + "src": "4072:52:197" + } + ] + }, + "baseFunctions": [ + 61454 + ], + "documentation": { + "id": 64739, + "nodeType": "StructuredDocumentation", + "src": "3308:336:197", + "text": " @notice Cellar must approve Morpho to spend its assets, then call supply to lend its assets.\n @param assets the amount of assets to lend on Morpho\n @param adaptorData adaptor data containing the abi encoded aToken\n @dev configurationData is not used for deposits bc it only influences user withdraws" + }, + "functionSelector": "69445c31", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deposit", + "nameLocation": "3658:7:197", + "overrides": { + "id": 64747, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3729:8:197" + }, + "parameters": { + "id": 64746, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 64741, + "mutability": "mutable", + "name": "assets", + "nameLocation": "3674:6:197", + "nodeType": "VariableDeclaration", + "scope": 64797, + "src": "3666:14:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 64740, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3666:7:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 64743, + "mutability": "mutable", + "name": "adaptorData", + "nameLocation": "3695:11:197", + "nodeType": "VariableDeclaration", + "scope": 64797, + "src": "3682:24:197", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 64742, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3682:5:197", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 64745, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 64797, + "src": "3708:12:197", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 64744, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3708:5:197", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3665:56:197" + }, + "returnParameters": { + "id": 64748, + "nodeType": "ParameterList", + "parameters": [], + "src": "3738:0:197" + }, + "scope": 65117, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 64843, + "nodeType": "FunctionDefinition", + "src": "4507:497:197", + "nodes": [], + "body": { + "id": 64842, + "nodeType": "Block", + "src": "4615:389:197", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 64811, + "name": "receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64802, + "src": "4688:8:197", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 64810, + "name": "_externalReceiverCheck", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61611, + "src": "4665:22:197", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$", + "typeString": "function (address) view" + } + }, + "id": 64812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4665:32:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 64813, + "nodeType": "ExpressionStatement", + "src": "4665:32:197" + }, + { + "condition": { + "arguments": [ + { + "arguments": [ + { + "id": 64817, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4790:4:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV2ATokenAdaptor_$65117", + "typeString": "contract MorphoAaveV2ATokenAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV2ATokenAdaptor_$65117", + "typeString": "contract MorphoAaveV2ATokenAdaptor" + } + ], + "id": 64816, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4782:7:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 64815, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4782:7:197", + "typeDescriptions": {} + } + }, + "id": 64818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4782:13:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 64814, + "name": "isBorrowingAny", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65116, + "src": "4767:14:197", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 64819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4767:29:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 64823, + "nodeType": "IfStatement", + "src": "4763:80:197", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 64820, + "name": "BaseAdaptor__UserWithdrawsNotAllowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61385, + "src": "4805:36:197", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 64821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4805:38:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 64822, + "nodeType": "RevertStatement", + "src": "4798:45:197" + } + }, + { + "assignments": [ + 64825 + ], + "declarations": [ + { + "constant": false, + "id": 64825, + "mutability": "mutable", + "name": "aToken", + "nameLocation": "4862:6:197", + "nodeType": "VariableDeclaration", + "scope": 64842, + "src": "4854:14:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 64824, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4854:7:197", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 64833, + "initialValue": { + "arguments": [ + { + "id": 64828, + "name": "adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64804, + "src": "4882:11:197", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 64830, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4896:7:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 64829, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4896:7:197", + "typeDescriptions": {} + } + } + ], + "id": 64831, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4895:9:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + ], + "expression": { + "id": 64826, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4871:3:197", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 64827, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4875:6:197", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "4871:10:197", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 64832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4871:34:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4854:51:197" + }, + { + "expression": { + "arguments": [ + { + "id": 64837, + "name": "aToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64825, + "src": "4972:6:197", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 64838, + "name": "assets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64800, + "src": "4980:6:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 64839, + "name": "receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64802, + "src": "4988:8:197", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 64834, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64681, + "src": "4956:6:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + }, + "id": 64836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4963:8:197", + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 53395, + "src": "4956:15:197", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (address,uint256,address) external" + } + }, + "id": 64840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4956:41:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 64841, + "nodeType": "ExpressionStatement", + "src": "4956:41:197" + } + ] + }, + "baseFunctions": [ + 61466 + ], + "documentation": { + "id": 64798, + "nodeType": "StructuredDocumentation", + "src": "4137:365:197", + "text": " @notice Cellars must withdraw from Morpho\n @dev Important to verify that external receivers are allowed if receiver is not Cellar address.\n @param assets the amount of assets to withdraw from Morpho\n @param receiver the address to send withdrawn assets to\n @param adaptorData adaptor data containing the abi encoded aToken" + }, + "functionSelector": "c9111bd7", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nameLocation": "4516:8:197", + "overrides": { + "id": 64808, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4606:8:197" + }, + "parameters": { + "id": 64807, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 64800, + "mutability": "mutable", + "name": "assets", + "nameLocation": "4533:6:197", + "nodeType": "VariableDeclaration", + "scope": 64843, + "src": "4525:14:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 64799, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4525:7:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 64802, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "4549:8:197", + "nodeType": "VariableDeclaration", + "scope": 64843, + "src": "4541:16:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 64801, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4541:7:197", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 64804, + "mutability": "mutable", + "name": "adaptorData", + "nameLocation": "4572:11:197", + "nodeType": "VariableDeclaration", + "scope": 64843, + "src": "4559:24:197", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 64803, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4559:5:197", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 64806, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 64843, + "src": "4585:12:197", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 64805, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4585:5:197", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4524:74:197" + }, + "returnParameters": { + "id": 64809, + "nodeType": "ParameterList", + "parameters": [], + "src": "4615:0:197" + }, + "scope": 65117, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 64879, + "nodeType": "FunctionDefinition", + "src": "5215:427:197", + "nodes": [], + "body": { + "id": 64878, + "nodeType": "Block", + "src": "5320:322:197", + "nodes": [], + "statements": [ + { + "condition": { + "arguments": [ + { + "expression": { + "id": 64855, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "5461:3:197", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 64856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5465:6:197", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5461:10:197", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 64854, + "name": "isBorrowingAny", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65116, + "src": "5446:14:197", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 64857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5446:26:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 64876, + "nodeType": "Block", + "src": "5497:139:197", + "statements": [ + { + "assignments": [ + 64861 + ], + "declarations": [ + { + "constant": false, + "id": 64861, + "mutability": "mutable", + "name": "aToken", + "nameLocation": "5519:6:197", + "nodeType": "VariableDeclaration", + "scope": 64876, + "src": "5511:14:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 64860, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5511:7:197", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 64869, + "initialValue": { + "arguments": [ + { + "id": 64864, + "name": "adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64846, + "src": "5539:11:197", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 64866, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5553:7:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 64865, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5553:7:197", + "typeDescriptions": {} + } + } + ], + "id": 64867, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5552:9:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + ], + "expression": { + "id": 64862, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5528:3:197", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 64863, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5532:6:197", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "5528:10:197", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 64868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5528:34:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5511:51:197" + }, + { + "expression": { + "arguments": [ + { + "id": 64871, + "name": "aToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64861, + "src": "5606:6:197", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 64872, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "5614:3:197", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 64873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5618:6:197", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5614:10:197", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 64870, + "name": "_balanceOfInUnderlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65094, + "src": "5583:22:197", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view returns (uint256)" + } + }, + "id": 64874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5583:42:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 64853, + "id": 64875, + "nodeType": "Return", + "src": "5576:49:197" + } + ] + }, + "id": 64877, + "nodeType": "IfStatement", + "src": "5442:194:197", + "trueBody": { + "expression": { + "hexValue": "30", + "id": 64858, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5481:1:197", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 64853, + "id": 64859, + "nodeType": "Return", + "src": "5474:8:197" + } + } + ] + }, + "baseFunctions": [ + 61484 + ], + "documentation": { + "id": 64844, + "nodeType": "StructuredDocumentation", + "src": "5010:200:197", + "text": " @notice Checks if Cellar has open borrows, and if so returns zero.\n Otherwise returns balanceOf in underlying.\n @param adaptorData the abi encoded aToken address" + }, + "functionSelector": "fa50e5d2", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawableFrom", + "nameLocation": "5224:16:197", + "overrides": { + "id": 64850, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5293:8:197" + }, + "parameters": { + "id": 64849, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 64846, + "mutability": "mutable", + "name": "adaptorData", + "nameLocation": "5254:11:197", + "nodeType": "VariableDeclaration", + "scope": 64879, + "src": "5241:24:197", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 64845, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5241:5:197", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 64848, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 64879, + "src": "5267:12:197", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 64847, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5267:5:197", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5240:40:197" + }, + "returnParameters": { + "id": 64853, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 64852, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 64879, + "src": "5311:7:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 64851, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5311:7:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5310:9:197" + }, + "scope": 65117, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "id": 64905, + "nodeType": "FunctionDefinition", + "src": "5732:211:197", + "nodes": [], + "body": { + "id": 64904, + "nodeType": "Block", + "src": "5816:127:197", + "nodes": [], + "statements": [ + { + "assignments": [ + 64889 + ], + "declarations": [ + { + "constant": false, + "id": 64889, + "mutability": "mutable", + "name": "aToken", + "nameLocation": "5834:6:197", + "nodeType": "VariableDeclaration", + "scope": 64904, + "src": "5826:14:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 64888, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5826:7:197", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 64897, + "initialValue": { + "arguments": [ + { + "id": 64892, + "name": "adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64882, + "src": "5854:11:197", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 64894, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5868:7:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 64893, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5868:7:197", + "typeDescriptions": {} + } + } + ], + "id": 64895, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5867:9:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + ], + "expression": { + "id": 64890, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5843:3:197", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 64891, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5847:6:197", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "5843:10:197", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 64896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5843:34:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5826:51:197" + }, + { + "expression": { + "arguments": [ + { + "id": 64899, + "name": "aToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64889, + "src": "5917:6:197", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 64900, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "5925:3:197", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 64901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5929:6:197", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5925:10:197", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 64898, + "name": "_balanceOfInUnderlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65094, + "src": "5894:22:197", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view returns (uint256)" + } + }, + "id": 64902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5894:42:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 64887, + "id": 64903, + "nodeType": "Return", + "src": "5887:49:197" + } + ] + }, + "baseFunctions": [ + 61474 + ], + "documentation": { + "id": 64880, + "nodeType": "StructuredDocumentation", + "src": "5648:79:197", + "text": " @notice Returns the cellars balance of the positions aToken." + }, + "functionSelector": "78415365", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "5741:9:197", + "overrides": { + "id": 64884, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5789:8:197" + }, + "parameters": { + "id": 64883, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 64882, + "mutability": "mutable", + "name": "adaptorData", + "nameLocation": "5764:11:197", + "nodeType": "VariableDeclaration", + "scope": 64905, + "src": "5751:24:197", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 64881, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5751:5:197", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5750:26:197" + }, + "returnParameters": { + "id": 64887, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 64886, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 64905, + "src": "5807:7:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 64885, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5807:7:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5806:9:197" + }, + "scope": 65117, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "id": 64932, + "nodeType": "FunctionDefinition", + "src": "6027:209:197", + "nodes": [], + "body": { + "id": 64931, + "nodeType": "Block", + "src": "6107:129:197", + "nodes": [], + "statements": [ + { + "assignments": [ + 64917 + ], + "declarations": [ + { + "constant": false, + "id": 64917, + "mutability": "mutable", + "name": "token", + "nameLocation": "6128:5:197", + "nodeType": "VariableDeclaration", + "scope": 64931, + "src": "6117:16:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + }, + "typeName": { + "id": 64916, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 64915, + "name": "IAaveToken", + "nameLocations": [ + "6117:10:197" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49523, + "src": "6117:10:197" + }, + "referencedDeclaration": 49523, + "src": "6117:10:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + }, + "visibility": "internal" + } + ], + "id": 64924, + "initialValue": { + "arguments": [ + { + "id": 64920, + "name": "adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64908, + "src": "6147:11:197", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 64921, + "name": "IAaveToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49523, + "src": "6161:10:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAaveToken_$49523_$", + "typeString": "type(contract IAaveToken)" + } + } + ], + "id": 64922, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6160:12:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAaveToken_$49523_$", + "typeString": "type(contract IAaveToken)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_contract$_IAaveToken_$49523_$", + "typeString": "type(contract IAaveToken)" + } + ], + "expression": { + "id": 64918, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "6136:3:197", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 64919, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6140:6:197", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "6136:10:197", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 64923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6136:37:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6117:56:197" + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 64926, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64917, + "src": "6196:5:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + }, + "id": 64927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6202:24:197", + "memberName": "UNDERLYING_ASSET_ADDRESS", + "nodeType": "MemberAccess", + "referencedDeclaration": 49522, + "src": "6196:30:197", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 64928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6196:32:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 64925, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45747, + "src": "6190:5:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$45747_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 64929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6190:39:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "functionReturnParameters": 64914, + "id": 64930, + "nodeType": "Return", + "src": "6183:46:197" + } + ] + }, + "baseFunctions": [ + 61493 + ], + "documentation": { + "id": 64906, + "nodeType": "StructuredDocumentation", + "src": "5949:73:197", + "text": " @notice Returns the positions aToken underlying asset." + }, + "functionSelector": "e170a9bf", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "assetOf", + "nameLocation": "6036:7:197", + "overrides": { + "id": 64910, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6082:8:197" + }, + "parameters": { + "id": 64909, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 64908, + "mutability": "mutable", + "name": "adaptorData", + "nameLocation": "6057:11:197", + "nodeType": "VariableDeclaration", + "scope": 64932, + "src": "6044:24:197", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 64907, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6044:5:197", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6043:26:197" + }, + "returnParameters": { + "id": 64914, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 64913, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 64932, + "src": "6100:5:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 64912, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 64911, + "name": "ERC20", + "nameLocations": [ + "6100:5:197" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "6100:5:197" + }, + "referencedDeclaration": 45747, + "src": "6100:5:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + } + ], + "src": "6099:7:197" + }, + "scope": 65117, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "id": 64942, + "nodeType": "FunctionDefinition", + "src": "6320:83:197", + "nodes": [], + "body": { + "id": 64941, + "nodeType": "Block", + "src": "6374:29:197", + "nodes": [], + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 64939, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6391:5:197", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 64938, + "id": 64940, + "nodeType": "Return", + "src": "6384:12:197" + } + ] + }, + "baseFunctions": [ + 61527 + ], + "documentation": { + "id": 64933, + "nodeType": "StructuredDocumentation", + "src": "6242:73:197", + "text": " @notice This adaptor returns collateral, and not debt." + }, + "functionSelector": "89353a09", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isDebt", + "nameLocation": "6329:6:197", + "overrides": { + "id": 64935, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6350:8:197" + }, + "parameters": { + "id": 64934, + "nodeType": "ParameterList", + "parameters": [], + "src": "6335:2:197" + }, + "returnParameters": { + "id": 64938, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 64937, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 64942, + "src": "6368:4:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 64936, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6368:4:197", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6367:6:197" + }, + "scope": 65117, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 64996, + "nodeType": "FunctionDefinition", + "src": "6801:458:197", + "nodes": [], + "body": { + "id": 64995, + "nodeType": "Block", + "src": "6883:376:197", + "nodes": [], + "statements": [ + { + "assignments": [ + 64953 + ], + "declarations": [ + { + "constant": false, + "id": 64953, + "mutability": "mutable", + "name": "underlying", + "nameLocation": "6899:10:197", + "nodeType": "VariableDeclaration", + "scope": 64995, + "src": "6893:16:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 64952, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 64951, + "name": "ERC20", + "nameLocations": [ + "6893:5:197" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "6893:5:197" + }, + "referencedDeclaration": 45747, + "src": "6893:5:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + } + ], + "id": 64959, + "initialValue": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 64955, + "name": "aToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64946, + "src": "6918:6:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + }, + "id": 64956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6925:24:197", + "memberName": "UNDERLYING_ASSET_ADDRESS", + "nodeType": "MemberAccess", + "referencedDeclaration": 49522, + "src": "6918:31:197", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 64957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6918:33:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 64954, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45747, + "src": "6912:5:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$45747_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 64958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6912:40:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6893:59:197" + }, + { + "expression": { + "id": 64965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 64960, + "name": "amountToDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64948, + "src": "6962:15:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 64962, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64953, + "src": "6994:10:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + { + "id": 64963, + "name": "amountToDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64948, + "src": "7006:15:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 64961, + "name": "_maxAvailable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61557, + "src": "6980:13:197", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_ERC20_$45747_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (contract ERC20,uint256) view returns (uint256)" + } + }, + "id": 64964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6980:42:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6962:60:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 64966, + "nodeType": "ExpressionStatement", + "src": "6962:60:197" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 64972, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64681, + "src": "7063:6:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + ], + "id": 64971, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7055:7:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 64970, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7055:7:197", + "typeDescriptions": {} + } + }, + "id": 64973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7055:15:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 64974, + "name": "amountToDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64948, + "src": "7072:15:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 64967, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64953, + "src": "7032:10:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "id": 64969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7043:11:197", + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 46497, + "src": "7032:22:197", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$45747_$", + "typeString": "function (contract ERC20,address,uint256)" + } + }, + "id": 64975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7032:56:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 64976, + "nodeType": "ExpressionStatement", + "src": "7032:56:197" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 64982, + "name": "aToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64946, + "src": "7120:6:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + ], + "id": 64981, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7112:7:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 64980, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7112:7:197", + "typeDescriptions": {} + } + }, + "id": 64983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7112:15:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 64984, + "name": "amountToDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64948, + "src": "7129:15:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 64977, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64681, + "src": "7098:6:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + }, + "id": 64979, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7105:6:197", + "memberName": "supply", + "nodeType": "MemberAccess", + "referencedDeclaration": 53372, + "src": "7098:13:197", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 64985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7098:47:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 64986, + "nodeType": "ExpressionStatement", + "src": "7098:47:197" + }, + { + "expression": { + "arguments": [ + { + "id": 64988, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64953, + "src": "7224:10:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + { + "arguments": [ + { + "id": 64991, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64681, + "src": "7244:6:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + ], + "id": 64990, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7236:7:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 64989, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7236:7:197", + "typeDescriptions": {} + } + }, + "id": 64992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7236:15:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 64987, + "name": "_revokeExternalApproval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61585, + "src": "7200:23:197", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$returns$__$", + "typeString": "function (contract ERC20,address)" + } + }, + "id": 64993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7200:52:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 64994, + "nodeType": "ExpressionStatement", + "src": "7200:52:197" + } + ] + }, + "documentation": { + "id": 64943, + "nodeType": "StructuredDocumentation", + "src": "6525:271:197", + "text": " @notice Allows strategists to lend assets on Morpho.\n @dev Uses `_maxAvailable` helper function, see BaseAdaptor.sol\n @param aToken the aToken to lend on Morpho\n @param amountToDeposit the amount of `tokenToDeposit` to lend on Morpho." + }, + "functionSelector": "5528481b", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "depositToAaveV2Morpho", + "nameLocation": "6810:21:197", + "parameters": { + "id": 64949, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 64946, + "mutability": "mutable", + "name": "aToken", + "nameLocation": "6843:6:197", + "nodeType": "VariableDeclaration", + "scope": 64996, + "src": "6832:17:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + }, + "typeName": { + "id": 64945, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 64944, + "name": "IAaveToken", + "nameLocations": [ + "6832:10:197" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49523, + "src": "6832:10:197" + }, + "referencedDeclaration": 49523, + "src": "6832:10:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 64948, + "mutability": "mutable", + "name": "amountToDeposit", + "nameLocation": "6859:15:197", + "nodeType": "VariableDeclaration", + "scope": 64996, + "src": "6851:23:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 64947, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6851:7:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6831:44:197" + }, + "returnParameters": { + "id": 64950, + "nodeType": "ParameterList", + "parameters": [], + "src": "6883:0:197" + }, + "scope": 65117, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 65037, + "nodeType": "FunctionDefinition", + "src": "7491:413:197", + "nodes": [], + "body": { + "id": 65036, + "nodeType": "Block", + "src": "7577:327:197", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 65010, + "name": "aToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65000, + "src": "7611:6:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + ], + "id": 65009, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7603:7:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65008, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7603:7:197", + "typeDescriptions": {} + } + }, + "id": 65011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7603:15:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 65012, + "name": "amountToWithdraw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65002, + "src": "7620:16:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 65015, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "7646:4:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV2ATokenAdaptor_$65117", + "typeString": "contract MorphoAaveV2ATokenAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV2ATokenAdaptor_$65117", + "typeString": "contract MorphoAaveV2ATokenAdaptor" + } + ], + "id": 65014, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7638:7:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65013, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7638:7:197", + "typeDescriptions": {} + } + }, + "id": 65016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7638:13:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 65005, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64681, + "src": "7587:6:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + }, + "id": 65007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7594:8:197", + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 53395, + "src": "7587:15:197", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (address,uint256,address) external" + } + }, + "id": 65017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7587:65:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 65018, + "nodeType": "ExpressionStatement", + "src": "7587:65:197" + }, + { + "assignments": [ + 65020 + ], + "declarations": [ + { + "constant": false, + "id": 65020, + "mutability": "mutable", + "name": "healthFactor", + "nameLocation": "7733:12:197", + "nodeType": "VariableDeclaration", + "scope": 65036, + "src": "7725:20:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65019, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7725:7:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 65028, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 65025, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "7787:4:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV2ATokenAdaptor_$65117", + "typeString": "contract MorphoAaveV2ATokenAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV2ATokenAdaptor_$65117", + "typeString": "contract MorphoAaveV2ATokenAdaptor" + } + ], + "id": 65024, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7779:7:197", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65023, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7779:7:197", + "typeDescriptions": {} + } + }, + "id": 65026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7779:13:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 65021, + "name": "morphoLens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64685, + "src": "7748:10:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoLensV2_$53305", + "typeString": "contract IMorphoLensV2" + } + }, + "id": 65022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7759:19:197", + "memberName": "getUserHealthFactor", + "nodeType": "MemberAccess", + "referencedDeclaration": 53304, + "src": "7748:30:197", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 65027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7748:45:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7725:68:197" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 65031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 65029, + "name": "healthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65020, + "src": "7807:12:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 65030, + "name": "minimumHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64688, + "src": "7822:19:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7807:34:197", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 65035, + "nodeType": "IfStatement", + "src": "7803:94:197", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 65032, + "name": "MorphoAaveV2ATokenAdaptor__HealthFactorTooLow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64677, + "src": "7850:45:197", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 65033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7850:47:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 65034, + "nodeType": "RevertStatement", + "src": "7843:54:197" + } + } + ] + }, + "documentation": { + "id": 64997, + "nodeType": "StructuredDocumentation", + "src": "7265:221:197", + "text": " @notice Allows strategists to withdraw assets from Morpho.\n @param aToken the atoken to withdraw from Morpho.\n @param amountToWithdraw the amount of `tokenToWithdraw` to withdraw from Morpho" + }, + "functionSelector": "872de812", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawFromAaveV2Morpho", + "nameLocation": "7500:24:197", + "parameters": { + "id": 65003, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65000, + "mutability": "mutable", + "name": "aToken", + "nameLocation": "7536:6:197", + "nodeType": "VariableDeclaration", + "scope": 65037, + "src": "7525:17:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + }, + "typeName": { + "id": 64999, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 64998, + "name": "IAaveToken", + "nameLocations": [ + "7525:10:197" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49523, + "src": "7525:10:197" + }, + "referencedDeclaration": 49523, + "src": "7525:10:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65002, + "mutability": "mutable", + "name": "amountToWithdraw", + "nameLocation": "7552:16:197", + "nodeType": "VariableDeclaration", + "scope": 65037, + "src": "7544:24:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65001, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7544:7:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7524:45:197" + }, + "returnParameters": { + "id": 65004, + "nodeType": "ParameterList", + "parameters": [], + "src": "7577:0:197" + }, + "scope": 65117, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 65094, + "nodeType": "FunctionDefinition", + "src": "8135:557:197", + "nodes": [], + "body": { + "id": 65093, + "nodeType": "Block", + "src": "8232:460:197", + "nodes": [], + "statements": [ + { + "assignments": [ + 65048, + 65050 + ], + "declarations": [ + { + "constant": false, + "id": 65048, + "mutability": "mutable", + "name": "inP2P", + "nameLocation": "8251:5:197", + "nodeType": "VariableDeclaration", + "scope": 65093, + "src": "8243:13:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65047, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8243:7:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65050, + "mutability": "mutable", + "name": "onPool", + "nameLocation": "8266:6:197", + "nodeType": "VariableDeclaration", + "scope": 65093, + "src": "8258:14:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65049, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8258:7:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 65056, + "initialValue": { + "arguments": [ + { + "id": 65053, + "name": "poolToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65040, + "src": "8301:9:197", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 65054, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65042, + "src": "8312:4:197", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 65051, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64681, + "src": "8276:6:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + }, + "id": 65052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8283:17:197", + "memberName": "supplyBalanceInOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 53343, + "src": "8276:24:197", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256,uint256)" + } + }, + "id": 65055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8276:41:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8242:75:197" + }, + { + "assignments": [ + 65058 + ], + "declarations": [ + { + "constant": false, + "id": 65058, + "mutability": "mutable", + "name": "balanceInUnderlying", + "nameLocation": "8336:19:197", + "nodeType": "VariableDeclaration", + "scope": 65093, + "src": "8328:27:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65057, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8328:7:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 65059, + "nodeType": "VariableDeclarationStatement", + "src": "8328:27:197" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 65062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 65060, + "name": "inP2P", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65048, + "src": "8441:5:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 65061, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8449:1:197", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8441:9:197", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 65074, + "nodeType": "IfStatement", + "src": "8437:93:197", + "trueBody": { + "expression": { + "id": 65072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 65063, + "name": "balanceInUnderlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65058, + "src": "8452:19:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 65068, + "name": "poolToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65040, + "src": "8513:9:197", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 65066, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64681, + "src": "8491:6:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + }, + "id": 65067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8498:14:197", + "memberName": "p2pSupplyIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 53358, + "src": "8491:21:197", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 65069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8491:32:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "31653237", + "id": 65070, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8525:4:197", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000000000000000000000000_by_1", + "typeString": "int_const 1000000000000000000000000000" + }, + "value": "1e27" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_1000000000000000000000000000_by_1", + "typeString": "int_const 1000000000000000000000000000" + } + ], + "expression": { + "id": 65064, + "name": "inP2P", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65048, + "src": "8474:5:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 65065, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8480:10:197", + "memberName": "mulDivDown", + "nodeType": "MemberAccess", + "referencedDeclaration": 74797, + "src": "8474:16:197", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 65071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8474:56:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8452:78:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 65073, + "nodeType": "ExpressionStatement", + "src": "8452:78:197" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 65077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 65075, + "name": "onPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65050, + "src": "8544:6:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 65076, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8553:1:197", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8544:10:197", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 65090, + "nodeType": "IfStatement", + "src": "8540:109:197", + "trueBody": { + "expression": { + "id": 65088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 65078, + "name": "balanceInUnderlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65058, + "src": "8556:19:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "arguments": [ + { + "id": 65083, + "name": "poolToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65040, + "src": "8616:9:197", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 65081, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64681, + "src": "8597:6:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + }, + "id": 65082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8604:11:197", + "memberName": "poolIndexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 53351, + "src": "8597:18:197", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_PoolIndexes_$53314_memory_ptr_$", + "typeString": "function (address) view external returns (struct IMorphoV2.PoolIndexes memory)" + } + }, + "id": 65084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8597:29:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PoolIndexes_$53314_memory_ptr", + "typeString": "struct IMorphoV2.PoolIndexes memory" + } + }, + "id": 65085, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8627:15:197", + "memberName": "poolSupplyIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 53311, + "src": "8597:45:197", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + { + "hexValue": "31653237", + "id": 65086, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8644:4:197", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000000000000000000000000_by_1", + "typeString": "int_const 1000000000000000000000000000" + }, + "value": "1e27" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + { + "typeIdentifier": "t_rational_1000000000000000000000000000_by_1", + "typeString": "int_const 1000000000000000000000000000" + } + ], + "expression": { + "id": 65079, + "name": "onPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65050, + "src": "8579:6:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 65080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8586:10:197", + "memberName": "mulDivDown", + "nodeType": "MemberAccess", + "referencedDeclaration": 74797, + "src": "8579:17:197", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 65087, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8579:70:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8556:93:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 65089, + "nodeType": "ExpressionStatement", + "src": "8556:93:197" + } + }, + { + "expression": { + "id": 65091, + "name": "balanceInUnderlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65058, + "src": "8666:19:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 65046, + "id": 65092, + "nodeType": "Return", + "src": "8659:26:197" + } + ] + }, + "documentation": { + "id": 65038, + "nodeType": "StructuredDocumentation", + "src": "7910:220:197", + "text": " @notice Returns the balance in underlying of collateral.\n @param poolToken the Aave V2 a Token user has supplied as collateral\n @param user the address of the user to query their balance of" + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_balanceOfInUnderlying", + "nameLocation": "8144:22:197", + "parameters": { + "id": 65043, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65040, + "mutability": "mutable", + "name": "poolToken", + "nameLocation": "8175:9:197", + "nodeType": "VariableDeclaration", + "scope": 65094, + "src": "8167:17:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 65039, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8167:7:197", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65042, + "mutability": "mutable", + "name": "user", + "nameLocation": "8194:4:197", + "nodeType": "VariableDeclaration", + "scope": 65094, + "src": "8186:12:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 65041, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8186:7:197", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8166:33:197" + }, + "returnParameters": { + "id": 65046, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65045, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65094, + "src": "8223:7:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65044, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8223:7:197", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8222:9:197" + }, + "scope": 65117, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "id": 65116, + "nodeType": "FunctionDefinition", + "src": "8930:178:197", + "nodes": [], + "body": { + "id": 65115, + "nodeType": "Block", + "src": "8995:113:197", + "nodes": [], + "statements": [ + { + "assignments": [ + 65103 + ], + "declarations": [ + { + "constant": false, + "id": 65103, + "mutability": "mutable", + "name": "userMarkets", + "nameLocation": "9013:11:197", + "nodeType": "VariableDeclaration", + "scope": 65115, + "src": "9005:19:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 65102, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9005:7:197", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 65108, + "initialValue": { + "arguments": [ + { + "id": 65106, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65097, + "src": "9046:4:197", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 65104, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64681, + "src": "9027:6:197", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + }, + "id": 65105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9034:11:197", + "memberName": "userMarkets", + "nodeType": "MemberAccess", + "referencedDeclaration": 53321, + "src": "9027:18:197", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bytes32_$", + "typeString": "function (address) view external returns (bytes32)" + } + }, + "id": 65107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9027:24:197", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9005:46:197" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 65113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 65111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 65109, + "name": "userMarkets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65103, + "src": "9068:11:197", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 65110, + "name": "BORROWING_MASK", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 64674, + "src": "9082:14:197", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "9068:28:197", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 65112, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9100:1:197", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9068:33:197", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 65101, + "id": 65114, + "nodeType": "Return", + "src": "9061:40:197" + } + ] + }, + "documentation": { + "id": 65095, + "nodeType": "StructuredDocumentation", + "src": "8698:227:197", + "text": " @dev Returns if a user has been borrowing from any market.\n @param user The address to check if it is borrowing or not.\n @return True if the user has been borrowing on any market, false otherwise." + }, + "functionSelector": "2f93417c", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isBorrowingAny", + "nameLocation": "8939:14:197", + "parameters": { + "id": 65098, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65097, + "mutability": "mutable", + "name": "user", + "nameLocation": "8962:4:197", + "nodeType": "VariableDeclaration", + "scope": 65116, + "src": "8954:12:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 65096, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8954:7:197", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8953:14:197" + }, + "returnParameters": { + "id": 65101, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65100, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65116, + "src": "8989:4:197", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 65099, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8989:4:197", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8988:6:197" + }, + "scope": 65117, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 64660, + "name": "BaseAdaptor", + "nameLocations": [ + "659:11:197" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 61644, + "src": "659:11:197" + }, + "id": 64661, + "nodeType": "InheritanceSpecifier", + "src": "659:11:197" + }, + { + "baseName": { + "id": 64662, + "name": "MorphoRewardHandler", + "nameLocations": [ + "672:19:197" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 66696, + "src": "672:19:197" + }, + "id": 64663, + "nodeType": "InheritanceSpecifier", + "src": "672:19:197" + } + ], + "canonicalName": "MorphoAaveV2ATokenAdaptor", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 64659, + "nodeType": "StructuredDocumentation", + "src": "479:141:197", + "text": " @title Morpho Aave V2 aToken Adaptor\n @notice Allows Cellars to interact with Morpho Aave V2 positions.\n @author crispymangoes" + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 65117, + 66696, + 61644 + ], + "name": "MorphoAaveV2ATokenAdaptor", + "nameLocation": "630:25:197", + "scope": 65118, + "usedErrors": [ + 61379, + 61382, + 61385, + 61388, + 61393, + 61396, + 64677 + ] + } + ], + "license": "Apache-2.0" + }, + "id": 197 +} \ No newline at end of file diff --git a/steward_abi/abi/MorphoAaveV2DebtTokenAdaptorV1.json b/steward_abi/abi/MorphoAaveV2DebtTokenAdaptorV1.json new file mode 100644 index 00000000..14fe9e02 --- /dev/null +++ b/steward_abi/abi/MorphoAaveV2DebtTokenAdaptorV1.json @@ -0,0 +1,6140 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_morpho", + "type": "address" + }, + { + "internalType": "address", + "name": "_morphoLens", + "type": "address" + }, + { + "internalType": "uint256", + "name": "minHealthFactor", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "BaseAdaptor__ConstructorHealthFactorTooLow", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__ExternalReceiverBlocked", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "BaseAdaptor__PricingNotSupported", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__Slippage", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__UserDepositsNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__UserWithdrawsNotAllowed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "untrackedDebtPosition", + "type": "address" + } + ], + "name": "MorphoAaveV2DebtTokenAdaptor__DebtPositionsMustBeTracked", + "type": "error" + }, + { + "inputs": [], + "name": "MorphoAaveV2DebtTokenAdaptor__HealthFactorTooLow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "name": "assetOf", + "outputs": [ + { + "internalType": "contract ERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "name": "assetsUsed", + "outputs": [ + { + "internalType": "contract ERC20[]", + "name": "assets", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "aToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountToBorrow", + "type": "uint256" + } + ], + "name": "borrowFromAaveV2Morpho", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "identifier", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "isDebt", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "minimumHealthFactor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "morpho", + "outputs": [ + { + "internalType": "contract IMorphoV2", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "morphoLens", + "outputs": [ + { + "internalType": "contract IMorphoLensV2", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IAaveToken", + "name": "aToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountToRepay", + "type": "uint256" + } + ], + "name": "repayAaveV2MorphoDebt", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "revokeApproval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "slippage", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "withdrawableFrom", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": { + "object": "0x60e060405234801561001057600080fd5b5060405161122a38038061122a83398101604081905261002f9161009b565b61003881610053565b6001600160a01b03928316608052911660a05260c0526100d7565b670e92596fd629000081101561007c576040516397ed5f4160e01b815260040160405180910390fd5b50565b80516001600160a01b038116811461009657600080fd5b919050565b6000806000606084860312156100b057600080fd5b6100b98461007f565b92506100c76020850161007f565b9150604084015190509250925092565b60805160a05160c0516110e561014560003960008181610114015261069601526000818161015e015261061e015260008181610233015281816102f00152818161033b0152818161039d015281816105ab015281816109df01528181610a7b0152610b2801526110e56000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80637998a1c411610097578063d3bfe76a11610066578063d3bfe76a1461021b578063d8fbc8331461022e578063e170a9bf14610255578063fa50e5d21461026857600080fd5b80637998a1c4146101d157806389353a09146101d9578063aeffddde146101e8578063c9111bd71461020857600080fd5b8063425734d3116100d3578063425734d3146101595780634c97ba1b1461019857806369445c31146101ab57806378415365146101be57600080fd5b8063106a4f2f146100fa5780631caff8b11461010f5780633e032a3b14610149575b600080fd5b61010d610108366004610c03565b61027b565b005b6101367f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6040516123288152602001610140565b6101807f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610140565b61010d6101a6366004610c03565b6103c6565b61010d6101b9366004610cd2565b6106dc565b6101366101cc366004610d3f565b6106f5565b61013661071f565b60405160018152602001610140565b6101fb6101f6366004610d3f565b61078c565b6040516101409190610d7c565b61010d610216366004610dc9565b6107ef565b61010d610229366004610e49565b610808565b6101807f000000000000000000000000000000000000000000000000000000000000000081565b610180610263366004610d3f565b610821565b610136610276366004610e82565b61089c565b6000826001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102df9190610ee6565b90506103156001600160a01b0382167f0000000000000000000000000000000000000000000000000000000000000000846108a5565b604051630450cfaf60e31b81526001600160a01b038481166004830152602482018490527f000000000000000000000000000000000000000000000000000000000000000016906322867d7890604401600060405180830381600087803b15801561037f57600080fd5b505af1158015610393573d6000803e3d6000fd5b505050506103c1817f0000000000000000000000000000000000000000000000000000000000000000610922565b505050565b60006103d061071f565b604080516001600160a01b03861660208201526001910160408051601f1981840301815290829052610406939291602001610f03565b6040516020818303038152906040528051906020012090506000306001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561045e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104829190610ee6565b6001600160a01b03166309f7abd2836040518263ffffffff1660e01b81526004016104af91815260200190565b602060405180830381865afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f09190610f7b565b60405163024eefab60e61b815263ffffffff8216600482015290915030906393bbeac090602401602060405180830381865afa158015610534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105589190610f96565b610585576040516317b06aa560e01b81526001600160a01b03851660048201526024015b60405180910390fd5b604051634b8a352960e01b81526001600160a01b038581166004830152602482018590527f00000000000000000000000000000000000000000000000000000000000000001690634b8a352990604401600060405180830381600087803b1580156105ef57600080fd5b505af1158015610603573d6000803e3d6000fd5b5050604051630e397f9360e31b8152306004820152600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691506371cbfc9890602401602060405180830381865afa15801561066e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106929190610fb8565b90507f00000000000000000000000000000000000000000000000000000000000000008110156106d557604051633681b6a760e21b815260040160405180910390fd5b5050505050565b604051633204ed5b60e21b815260040160405180910390fd5b6000808280602001905181019061070c9190610ee6565b905061071881336109b1565b9392505050565b60006040516020016107719060208082526026908201527f4d6f7270686f20416176652056322064656274546f6b656e2041646170746f72604082015265205620312e3160d01b606082015260800190565b60405160208183030381529060405280519060200120905090565b604080516001808252818301909252606091602080830190803683370190505090506107b782610821565b816000815181106107ca576107ca610fd1565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b604051635f5003c560e11b815260040160405180910390fd5b61081d6001600160a01b0383168260006108a5565b5050565b600080828060200190518101906108389190610ee6565b9050806001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610878573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190610ee6565b60005b92915050565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d116001600051141617169150508061091c5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b604482015260640161057c565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa158015610972573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109969190610fb8565b111561081d5761081d6001600160a01b0383168260006108a5565b60405163251d5d2b60e21b81526001600160a01b0383811660048301528281166024830152600091829182917f00000000000000000000000000000000000000000000000000000000000000009091169063947574ac906044016040805180830381865afa158015610a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4b9190610fe7565b909250905060008215610aff57604051630175fa5f60e51b81526001600160a01b038781166004830152610afc917f000000000000000000000000000000000000000000000000000000000000000090911690632ebf4be090602401602060405180830381865afa158015610ac4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae89190610fb8565b84906b033b2e3c9fd0803ce8000000610bcc565b90505b8115610bc357604051631987357f60e21b81526001600160a01b038781166004830152610bb6917f00000000000000000000000000000000000000000000000000000000000000009091169063661cd5fc90602401606060405180830381865afa158015610b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b959190611022565b6040015183906001600160701b03166b033b2e3c9fd0803ce8000000610bcc565b610bc0908261108e565b90505b95945050505050565b828202811515841585830485141716610be457600080fd5b0492915050565b6001600160a01b0381168114610c0057600080fd5b50565b60008060408385031215610c1657600080fd5b8235610c2181610beb565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610c5657600080fd5b813567ffffffffffffffff80821115610c7157610c71610c2f565b604051601f8301601f19908116603f01168101908282118183101715610c9957610c99610c2f565b81604052838152866020858801011115610cb257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215610ce757600080fd5b83359250602084013567ffffffffffffffff80821115610d0657600080fd5b610d1287838801610c45565b93506040860135915080821115610d2857600080fd5b50610d3586828701610c45565b9150509250925092565b600060208284031215610d5157600080fd5b813567ffffffffffffffff811115610d6857600080fd5b610d7484828501610c45565b949350505050565b6020808252825182820181905260009190848201906040850190845b81811015610dbd5783516001600160a01b031683529284019291840191600101610d98565b50909695505050505050565b60008060008060808587031215610ddf57600080fd5b843593506020850135610df181610beb565b9250604085013567ffffffffffffffff80821115610e0e57600080fd5b610e1a88838901610c45565b93506060870135915080821115610e3057600080fd5b50610e3d87828801610c45565b91505092959194509250565b60008060408385031215610e5c57600080fd5b8235610e6781610beb565b91506020830135610e7781610beb565b809150509250929050565b60008060408385031215610e9557600080fd5b823567ffffffffffffffff80821115610ead57600080fd5b610eb986838701610c45565b93506020850135915080821115610ecf57600080fd5b50610edc85828601610c45565b9150509250929050565b600060208284031215610ef857600080fd5b815161071881610beb565b838152600060208415158184015260606040840152835180606085015260005b81811015610f3f57858101830151858201608001528201610f23565b506000608082860101526080601f19601f83011685010192505050949350505050565b805163ffffffff81168114610f7657600080fd5b919050565b600060208284031215610f8d57600080fd5b61071882610f62565b600060208284031215610fa857600080fd5b8151801515811461071857600080fd5b600060208284031215610fca57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60008060408385031215610ffa57600080fd5b505080516020909101519092909150565b80516001600160701b0381168114610f7657600080fd5b60006060828403121561103457600080fd5b6040516060810181811067ffffffffffffffff8211171561105757611057610c2f565b60405261106383610f62565b81526110716020840161100b565b60208201526110826040840161100b565b60408201529392505050565b8082018082111561089f57634e487b7160e01b600052601160045260246000fdfea264697066735822122067bd328157b4d2231e88015c7f46a1a0fa3fcf7e61acf535ee80642f51d5499064736f6c63430008100033", + "sourceMap": "561:6530:198:-:0;;;2077:279;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2162:54;2200:15;2162:37;:54::i;:::-;-1:-1:-1;;;;;2226:27:198;;;;;2263:39;;;;2312:37;;561:6530;;8743:233:188;2760:7;8847:19;:57;8843:126;;;8925:44;;-1:-1:-1;;;8925:44:188;;;;;;;;;;;8843:126;8743:233;:::o;14:177:258:-;93:13;;-1:-1:-1;;;;;135:31:258;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:354::-;284:6;292;300;353:2;341:9;332:7;328:23;324:32;321:52;;;369:1;366;359:12;321:52;392:40;422:9;392:40;:::i;:::-;382:50;;451:49;496:2;485:9;481:18;451:49;:::i;:::-;441:59;;540:2;529:9;525:18;519:25;509:35;;196:354;;;;;:::o;:::-;561:6530:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80637998a1c411610097578063d3bfe76a11610066578063d3bfe76a1461021b578063d8fbc8331461022e578063e170a9bf14610255578063fa50e5d21461026857600080fd5b80637998a1c4146101d157806389353a09146101d9578063aeffddde146101e8578063c9111bd71461020857600080fd5b8063425734d3116100d3578063425734d3146101595780634c97ba1b1461019857806369445c31146101ab57806378415365146101be57600080fd5b8063106a4f2f146100fa5780631caff8b11461010f5780633e032a3b14610149575b600080fd5b61010d610108366004610c03565b61027b565b005b6101367f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6040516123288152602001610140565b6101807f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610140565b61010d6101a6366004610c03565b6103c6565b61010d6101b9366004610cd2565b6106dc565b6101366101cc366004610d3f565b6106f5565b61013661071f565b60405160018152602001610140565b6101fb6101f6366004610d3f565b61078c565b6040516101409190610d7c565b61010d610216366004610dc9565b6107ef565b61010d610229366004610e49565b610808565b6101807f000000000000000000000000000000000000000000000000000000000000000081565b610180610263366004610d3f565b610821565b610136610276366004610e82565b61089c565b6000826001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102df9190610ee6565b90506103156001600160a01b0382167f0000000000000000000000000000000000000000000000000000000000000000846108a5565b604051630450cfaf60e31b81526001600160a01b038481166004830152602482018490527f000000000000000000000000000000000000000000000000000000000000000016906322867d7890604401600060405180830381600087803b15801561037f57600080fd5b505af1158015610393573d6000803e3d6000fd5b505050506103c1817f0000000000000000000000000000000000000000000000000000000000000000610922565b505050565b60006103d061071f565b604080516001600160a01b03861660208201526001910160408051601f1981840301815290829052610406939291602001610f03565b6040516020818303038152906040528051906020012090506000306001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561045e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104829190610ee6565b6001600160a01b03166309f7abd2836040518263ffffffff1660e01b81526004016104af91815260200190565b602060405180830381865afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f09190610f7b565b60405163024eefab60e61b815263ffffffff8216600482015290915030906393bbeac090602401602060405180830381865afa158015610534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105589190610f96565b610585576040516317b06aa560e01b81526001600160a01b03851660048201526024015b60405180910390fd5b604051634b8a352960e01b81526001600160a01b038581166004830152602482018590527f00000000000000000000000000000000000000000000000000000000000000001690634b8a352990604401600060405180830381600087803b1580156105ef57600080fd5b505af1158015610603573d6000803e3d6000fd5b5050604051630e397f9360e31b8152306004820152600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691506371cbfc9890602401602060405180830381865afa15801561066e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106929190610fb8565b90507f00000000000000000000000000000000000000000000000000000000000000008110156106d557604051633681b6a760e21b815260040160405180910390fd5b5050505050565b604051633204ed5b60e21b815260040160405180910390fd5b6000808280602001905181019061070c9190610ee6565b905061071881336109b1565b9392505050565b60006040516020016107719060208082526026908201527f4d6f7270686f20416176652056322064656274546f6b656e2041646170746f72604082015265205620312e3160d01b606082015260800190565b60405160208183030381529060405280519060200120905090565b604080516001808252818301909252606091602080830190803683370190505090506107b782610821565b816000815181106107ca576107ca610fd1565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b604051635f5003c560e11b815260040160405180910390fd5b61081d6001600160a01b0383168260006108a5565b5050565b600080828060200190518101906108389190610ee6565b9050806001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610878573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190610ee6565b60005b92915050565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d116001600051141617169150508061091c5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b604482015260640161057c565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa158015610972573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109969190610fb8565b111561081d5761081d6001600160a01b0383168260006108a5565b60405163251d5d2b60e21b81526001600160a01b0383811660048301528281166024830152600091829182917f00000000000000000000000000000000000000000000000000000000000000009091169063947574ac906044016040805180830381865afa158015610a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4b9190610fe7565b909250905060008215610aff57604051630175fa5f60e51b81526001600160a01b038781166004830152610afc917f000000000000000000000000000000000000000000000000000000000000000090911690632ebf4be090602401602060405180830381865afa158015610ac4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae89190610fb8565b84906b033b2e3c9fd0803ce8000000610bcc565b90505b8115610bc357604051631987357f60e21b81526001600160a01b038781166004830152610bb6917f00000000000000000000000000000000000000000000000000000000000000009091169063661cd5fc90602401606060405180830381865afa158015610b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b959190611022565b6040015183906001600160701b03166b033b2e3c9fd0803ce8000000610bcc565b610bc0908261108e565b90505b95945050505050565b828202811515841585830485141716610be457600080fd5b0492915050565b6001600160a01b0381168114610c0057600080fd5b50565b60008060408385031215610c1657600080fd5b8235610c2181610beb565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610c5657600080fd5b813567ffffffffffffffff80821115610c7157610c71610c2f565b604051601f8301601f19908116603f01168101908282118183101715610c9957610c99610c2f565b81604052838152866020858801011115610cb257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215610ce757600080fd5b83359250602084013567ffffffffffffffff80821115610d0657600080fd5b610d1287838801610c45565b93506040860135915080821115610d2857600080fd5b50610d3586828701610c45565b9150509250925092565b600060208284031215610d5157600080fd5b813567ffffffffffffffff811115610d6857600080fd5b610d7484828501610c45565b949350505050565b6020808252825182820181905260009190848201906040850190845b81811015610dbd5783516001600160a01b031683529284019291840191600101610d98565b50909695505050505050565b60008060008060808587031215610ddf57600080fd5b843593506020850135610df181610beb565b9250604085013567ffffffffffffffff80821115610e0e57600080fd5b610e1a88838901610c45565b93506060870135915080821115610e3057600080fd5b50610e3d87828801610c45565b91505092959194509250565b60008060408385031215610e5c57600080fd5b8235610e6781610beb565b91506020830135610e7781610beb565b809150509250929050565b60008060408385031215610e9557600080fd5b823567ffffffffffffffff80821115610ead57600080fd5b610eb986838701610c45565b93506020850135915080821115610ecf57600080fd5b50610edc85828601610c45565b9150509250929050565b600060208284031215610ef857600080fd5b815161071881610beb565b838152600060208415158184015260606040840152835180606085015260005b81811015610f3f57858101830151858201608001528201610f23565b506000608082860101526080601f19601f83011685010192505050949350505050565b805163ffffffff81168114610f7657600080fd5b919050565b600060208284031215610f8d57600080fd5b61071882610f62565b600060208284031215610fa857600080fd5b8151801515811461071857600080fd5b600060208284031215610fca57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60008060408385031215610ffa57600080fd5b505080516020909101519092909150565b80516001600160701b0381168114610f7657600080fd5b60006060828403121561103457600080fd5b6040516060810181811067ffffffffffffffff8211171561105757611057610c2f565b60405261106383610f62565b81526110716020840161100b565b60208201526110826040840161100b565b60408201529392505050565b8082018082111561089f57634e487b7160e01b600052601160045260246000fdfea264697066735822122067bd328157b4d2231e88015c7f46a1a0fa3fcf7e61acf535ee80642f51d5499064736f6c63430008100033", + "sourceMap": "561:6530:198:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6002:381;;;;;;:::i;:::-;;:::i;:::-;;2026:44;;;;;;;;660:25:258;;;648:2;633:18;2026:44:198;;;;;;;;2415:78:188;;;2481:5;840:42:258;;828:2;813:18;2415:78:188;696:192:258;1827:41:198;;;;;;;;-1:-1:-1;;;;;1080:32:258;;;1062:51;;1050:2;1035:18;1827:41:198;893:226:258;4952:843:198;;;;;;:::i;:::-;;:::i;3131:136::-;;;;;;:::i;:::-;;:::i;3887:211::-;;;;;;:::i;:::-;;:::i;2775:148::-;;;:::i;4476:82::-;;;4547:4;3570:41:258;;3558:2;3543:18;4476:82:198;3430:187:258;5934:180:188;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3355:147:198:-;;;;;;:::i;:::-;;:::i;9204:107:188:-;;;;;;:::i;:::-;;:::i;1628:33:198:-;;;;;4182:211;;;;;;:::i;:::-;;:::i;3676:118::-;;;;;;:::i;:::-;;:::i;6002:381::-;6092:16;6117:6;-1:-1:-1;;;;;6117:31:198;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6092:59;-1:-1:-1;6161:54:198;-1:-1:-1;;;;;6161:22:198;;6192:6;6201:13;6161:22;:54::i;:::-;6225:44;;-1:-1:-1;;;6225:44:198;;-1:-1:-1;;;;;6946:32:258;;;6225:44:198;;;6928:51:258;6995:18;;;6988:34;;;6225:6:198;:12;;;;6901:18:258;;6225:44:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6324:52;6348:10;6368:6;6324:23;:52::i;:::-;6082:301;6002:381;;:::o;4952:843::-;5125:20;5169:12;:10;:12::i;:::-;5189:18;;;-1:-1:-1;;;;;1080:32:258;;5189:18:198;;;1062:51:258;5183:4:198;;1035:18:258;5189::198;;;-1:-1:-1;;5189:18:198;;;;;;;;;;5158:50;;;;5189:18;5158:50;;:::i;:::-;;;;;;;;;;;;;5148:61;;;;;;5125:84;;5219:17;5254:4;-1:-1:-1;;;;;5239:30:198;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5239:60:198;;5300:12;5239:74;;;;;;;;;;;;;660:25:258;;648:2;633:18;;514:177;5239:74:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5328:48;;-1:-1:-1;;;5328:48:198;;870:10:258;858:23;;5328:48:198;;;840:42:258;5219:94:198;;-1:-1:-1;5343:4:198;;5328:36;;813:18:258;;5328:48:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5323:138;;5397:64;;-1:-1:-1;;;5397:64:198;;-1:-1:-1;;;;;1080:32:258;;5397:64:198;;;1062:51:258;1035:18;;5397:64:198;;;;;;;;5323:138;5503:37;;-1:-1:-1;;;5503:37:198;;-1:-1:-1;;;;;6946:32:258;;;5503:37:198;;;6928:51:258;6995:18;;;6988:34;;;5503:6:198;:13;;;;6901:18:258;;5503:37:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5636:45:198;;-1:-1:-1;;;5636:45:198;;5675:4;5636:45;;;1062:51:258;5613:20:198;;-1:-1:-1;5636:10:198;-1:-1:-1;;;;;5636:30:198;;-1:-1:-1;5636:30:198;;1035:18:258;;5636:45:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5613:68;;5710:19;5695:12;:34;5691:97;;;5738:50;;-1:-1:-1;;;5738:50:198;;;;;;;;;;;5691:97;5031:764;;;4952:843;;:::o;3131:136::-;3223:37;;-1:-1:-1;;;3223:37:198;;;;;;;;;;;3887:211;3962:7;3981:14;4009:11;3998:34;;;;;;;;;;;;:::i;:::-;3981:51;;4049:42;4072:6;4080:10;4049:22;:42::i;:::-;4042:49;3887:211;-1:-1:-1;;;3887:211:198:o;2775:148::-;2827:7;2863:52;;;;;;9763:2:258;9745:21;;;9802:2;9782:18;;;9775:30;9841:34;9836:2;9821:18;;9814:62;-1:-1:-1;;;9907:2:258;9892:18;;9885:36;9953:3;9938:19;;9561:402;2863:52:198;;;;;;;;;;;;;2853:63;;;;;;2846:70;;2775:148;:::o;5934:180:188:-;6051:14;;;6063:1;6051:14;;;;;;;;;6009:21;;6051:14;;;;;;;;;;;-1:-1:-1;6051:14:188;6042:23;;6087:20;6095:11;6087:7;:20::i;:::-;6075:6;6082:1;6075:9;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;6075:32:188;;;-1:-1:-1;;;;;6075:32:188;;;;;5934:180;;;:::o;3355:147:198:-;3457:38;;-1:-1:-1;;;3457:38:198;;;;;;;;;;;9204:107:188;9275:29;-1:-1:-1;;;;;9275:17:188;;9293:7;9302:1;9275:17;:29::i;:::-;9204:107;;:::o;4182:211:198:-;4255:5;4272:17;4303:11;4292:37;;;;;;;;;;;;:::i;:::-;4272:57;;4352:6;-1:-1:-1;;;;;4352:31:198;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3676:118::-;3760:7;3676:118;;;;;:::o;4327:1454:104:-;4438:12;4565:4;4559:11;-1:-1:-1;;;4688:17:104;4681:93;4821:2;4817:1;4798:17;4794:25;4787:37;4901:6;4896:2;4877:17;4873:26;4866:42;5703:2;5700:1;5696:2;5677:17;5674:1;5667:5;5660;5655:51;5224:16;5217:24;5211:2;5193:16;5190:24;5186:1;5182;5176:8;5173:15;5169:46;5166:76;4966:754;4955:765;;;5748:7;5740:34;;;;-1:-1:-1;;;5740:34:104;;10590:2:258;5740:34:104;;;10572:21:258;10629:2;10609:18;;;10602:30;-1:-1:-1;;;10648:18:258;;;10641:44;10702:18;;5740:34:104;10388:338:258;5740:34:104;4428:1353;4327:1454;;;:::o;8158:167:188:-;8244:39;;-1:-1:-1;;;8244:39:188;;8268:4;8244:39;;;10943:34:258;-1:-1:-1;;;;;11013:15:258;;;10993:18;;;10986:43;8286:1:188;;8244:15;;;;;;10878:18:258;;8244:39:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;8240:78;;;8289:29;-1:-1:-1;;;;;8289:17:188;;8307:7;8316:1;8289:17;:29::i;6604:485:198:-;6745:41;;-1:-1:-1;;;6745:41:198;;-1:-1:-1;;;;;10961:15:258;;;6745:41:198;;;10943:34:258;11013:15;;;10993:18;;;10986:43;-1:-1:-1;;;;;;6745:6:198;:24;;;;;;10878:18:258;;6745:41:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6711:75;;-1:-1:-1;6711:75:198;-1:-1:-1;6797:27:198;6838:9;;6834:93;;6888:32;;-1:-1:-1;;;6888:32:198;;-1:-1:-1;;;;;1080:32:258;;;6888::198;;;1062:51:258;6871:56:198;;6888:6;:21;;;;;;1035:18:258;;6888:32:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6871:5;;6922:4;6871:16;:56::i;:::-;6849:78;;6834:93;6941:10;;6937:109;;6994:29;;-1:-1:-1;;;6994:29:198;;-1:-1:-1;;;;;1080:32:258;;;6994:29:198;;;1062:51:258;6976:70:198;;6994:6;:18;;;;;;1035::258;;6994:29:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;;6976:6;;-1:-1:-1;;;;;6976:70:198;7041:4;6976:17;:70::i;:::-;6953:93;;;;:::i;:::-;;;6937:109;7063:19;6604:485;-1:-1:-1;;;;;6604:485:198:o;1357:535:221:-;1563:9;;;1694:19;;1687:27;1719:9;;1733;;;1730:16;;1716:31;1683:65;1673:121;;1778:1;1775;1768:12;1673:121;1857:19;;1357:535;-1:-1:-1;;1357:535:221:o;14:143:258:-;-1:-1:-1;;;;;101:31:258;;91:42;;81:70;;147:1;144;137:12;81:70;14:143;:::o;162:347::-;250:6;258;311:2;299:9;290:7;286:23;282:32;279:52;;;327:1;324;317:12;279:52;366:9;353:23;385:43;422:5;385:43;:::i;:::-;447:5;499:2;484:18;;;;471:32;;-1:-1:-1;;;162:347:258:o;1456:127::-;1517:10;1512:3;1508:20;1505:1;1498:31;1548:4;1545:1;1538:15;1572:4;1569:1;1562:15;1588:718;1630:5;1683:3;1676:4;1668:6;1664:17;1660:27;1650:55;;1701:1;1698;1691:12;1650:55;1737:6;1724:20;1763:18;1800:2;1796;1793:10;1790:36;;;1806:18;;:::i;:::-;1881:2;1875:9;1849:2;1935:13;;-1:-1:-1;;1931:22:258;;;1955:2;1927:31;1923:40;1911:53;;;1979:18;;;1999:22;;;1976:46;1973:72;;;2025:18;;:::i;:::-;2065:10;2061:2;2054:22;2100:2;2092:6;2085:18;2146:3;2139:4;2134:2;2126:6;2122:15;2118:26;2115:35;2112:55;;;2163:1;2160;2153:12;2112:55;2227:2;2220:4;2212:6;2208:17;2201:4;2193:6;2189:17;2176:54;2274:1;2267:4;2262:2;2254:6;2250:15;2246:26;2239:37;2294:6;2285:15;;;;;;1588:718;;;;:::o;2311:607::-;2406:6;2414;2422;2475:2;2463:9;2454:7;2450:23;2446:32;2443:52;;;2491:1;2488;2481:12;2443:52;2527:9;2514:23;2504:33;;2588:2;2577:9;2573:18;2560:32;2611:18;2652:2;2644:6;2641:14;2638:34;;;2668:1;2665;2658:12;2638:34;2691:49;2732:7;2723:6;2712:9;2708:22;2691:49;:::i;:::-;2681:59;;2793:2;2782:9;2778:18;2765:32;2749:48;;2822:2;2812:8;2809:16;2806:36;;;2838:1;2835;2828:12;2806:36;;2861:51;2904:7;2893:8;2882:9;2878:24;2861:51;:::i;:::-;2851:61;;;2311:607;;;;;:::o;2923:320::-;2991:6;3044:2;3032:9;3023:7;3019:23;3015:32;3012:52;;;3060:1;3057;3050:12;3012:52;3100:9;3087:23;3133:18;3125:6;3122:30;3119:50;;;3165:1;3162;3155:12;3119:50;3188:49;3229:7;3220:6;3209:9;3205:22;3188:49;:::i;:::-;3178:59;2923:320;-1:-1:-1;;;;2923:320:258:o;3622:673::-;3808:2;3860:21;;;3930:13;;3833:18;;;3952:22;;;3779:4;;3808:2;4031:15;;;;4005:2;3990:18;;;3779:4;4074:195;4088:6;4085:1;4082:13;4074:195;;;4153:13;;-1:-1:-1;;;;;4149:39:258;4137:52;;4244:15;;;;4209:12;;;;4185:1;4103:9;4074:195;;;-1:-1:-1;4286:3:258;;3622:673;-1:-1:-1;;;;;;3622:673:258:o;4300:755::-;4404:6;4412;4420;4428;4481:3;4469:9;4460:7;4456:23;4452:33;4449:53;;;4498:1;4495;4488:12;4449:53;4534:9;4521:23;4511:33;;4594:2;4583:9;4579:18;4566:32;4607:43;4644:5;4607:43;:::i;:::-;4669:5;-1:-1:-1;4725:2:258;4710:18;;4697:32;4748:18;4778:14;;;4775:34;;;4805:1;4802;4795:12;4775:34;4828:49;4869:7;4860:6;4849:9;4845:22;4828:49;:::i;:::-;4818:59;;4930:2;4919:9;4915:18;4902:32;4886:48;;4959:2;4949:8;4946:16;4943:36;;;4975:1;4972;4965:12;4943:36;;4998:51;5041:7;5030:8;5019:9;5015:24;4998:51;:::i;:::-;4988:61;;;4300:755;;;;;;;:::o;5060:427::-;5143:6;5151;5204:2;5192:9;5183:7;5179:23;5175:32;5172:52;;;5220:1;5217;5210:12;5172:52;5259:9;5246:23;5278:43;5315:5;5278:43;:::i;:::-;5340:5;-1:-1:-1;5397:2:258;5382:18;;5369:32;5410:45;5369:32;5410:45;:::i;:::-;5474:7;5464:17;;;5060:427;;;;;:::o;5942:539::-;6028:6;6036;6089:2;6077:9;6068:7;6064:23;6060:32;6057:52;;;6105:1;6102;6095:12;6057:52;6145:9;6132:23;6174:18;6215:2;6207:6;6204:14;6201:34;;;6231:1;6228;6221:12;6201:34;6254:49;6295:7;6286:6;6275:9;6271:22;6254:49;:::i;:::-;6244:59;;6356:2;6345:9;6341:18;6328:32;6312:48;;6385:2;6375:8;6372:16;6369:36;;;6401:1;6398;6391:12;6369:36;;6424:51;6467:7;6456:8;6445:9;6441:24;6424:51;:::i;:::-;6414:61;;;5942:539;;;;;:::o;6486:263::-;6556:6;6609:2;6597:9;6588:7;6584:23;6580:32;6577:52;;;6625:1;6622;6615:12;6577:52;6657:9;6651:16;6676:43;6713:5;6676:43;:::i;7241:701::-;7438:6;7427:9;7420:25;7401:4;7464:2;7516:6;7509:14;7502:22;7497:2;7486:9;7482:18;7475:50;7561:2;7556;7545:9;7541:18;7534:30;7593:6;7587:13;7636:6;7631:2;7620:9;7616:18;7609:34;7661:1;7671:141;7685:6;7682:1;7679:13;7671:141;;;7781:14;;;7777:23;;7771:30;7746:17;;;7765:3;7742:27;7735:67;7700:10;;7671:141;;;7675:3;7862:1;7856:3;7847:6;7836:9;7832:22;7828:32;7821:43;7932:3;7925:2;7921:7;7916:2;7908:6;7904:15;7900:29;7889:9;7885:45;7881:55;7873:63;;;;7241:701;;;;;;:::o;8233:167::-;8311:13;;8364:10;8353:22;;8343:33;;8333:61;;8390:1;8387;8380:12;8333:61;8233:167;;;:::o;8405:206::-;8474:6;8527:2;8515:9;8506:7;8502:23;8498:32;8495:52;;;8543:1;8540;8533:12;8495:52;8566:39;8595:9;8566:39;:::i;8814:277::-;8881:6;8934:2;8922:9;8913:7;8909:23;8905:32;8902:52;;;8950:1;8947;8940:12;8902:52;8982:9;8976:16;9035:5;9028:13;9021:21;9014:5;9011:32;9001:60;;9057:1;9054;9047:12;9096:184;9166:6;9219:2;9207:9;9198:7;9194:23;9190:32;9187:52;;;9235:1;9232;9225:12;9187:52;-1:-1:-1;9258:16:258;;9096:184;-1:-1:-1;9096:184:258:o;9968:127::-;10029:10;10024:3;10020:20;10017:1;10010:31;10060:4;10057:1;10050:15;10084:4;10081:1;10074:15;11040:245;11119:6;11127;11180:2;11168:9;11159:7;11155:23;11151:32;11148:52;;;11196:1;11193;11186:12;11148:52;-1:-1:-1;;11219:16:258;;11275:2;11260:18;;;11254:25;11219:16;;11254:25;;-1:-1:-1;11040:245:258:o;11290:188::-;11369:13;;-1:-1:-1;;;;;11411:42:258;;11401:53;;11391:81;;11468:1;11465;11458:12;11483:636;11583:6;11636:2;11624:9;11615:7;11611:23;11607:32;11604:52;;;11652:1;11649;11642:12;11604:52;11685:2;11679:9;11727:2;11719:6;11715:15;11796:6;11784:10;11781:22;11760:18;11748:10;11745:34;11742:62;11739:88;;;11807:18;;:::i;:::-;11843:2;11836:22;11882:39;11911:9;11882:39;:::i;:::-;11874:6;11867:55;11955:49;12000:2;11989:9;11985:18;11955:49;:::i;:::-;11950:2;11942:6;11938:15;11931:74;12038:49;12083:2;12072:9;12068:18;12038:49;:::i;:::-;12033:2;12021:15;;12014:74;12025:6;11483:636;-1:-1:-1;;;11483:636:258:o;12124:222::-;12189:9;;;12210:10;;;12207:133;;;12262:10;12257:3;12253:20;12250:1;12243:31;12297:4;12294:1;12287:15;12325:4;12322:1;12315:15", + "linkReferences": {}, + "immutableReferences": { + "65154": [ + { + "start": 563, + "length": 32 + }, + { + "start": 752, + "length": 32 + }, + { + "start": 827, + "length": 32 + }, + { + "start": 925, + "length": 32 + }, + { + "start": 1451, + "length": 32 + }, + { + "start": 2527, + "length": 32 + }, + { + "start": 2683, + "length": 32 + }, + { + "start": 2856, + "length": 32 + } + ], + "65158": [ + { + "start": 350, + "length": 32 + }, + { + "start": 1566, + "length": 32 + } + ], + "65161": [ + { + "start": 276, + "length": 32 + }, + { + "start": 1686, + "length": 32 + } + ] + } + }, + "methodIdentifiers": { + "assetOf(bytes)": "e170a9bf", + "assetsUsed(bytes)": "aeffddde", + "balanceOf(bytes)": "78415365", + "borrowFromAaveV2Morpho(address,uint256)": "4c97ba1b", + "deposit(uint256,bytes,bytes)": "69445c31", + "identifier()": "7998a1c4", + "isDebt()": "89353a09", + "minimumHealthFactor()": "1caff8b1", + "morpho()": "d8fbc833", + "morphoLens()": "425734d3", + "repayAaveV2MorphoDebt(address,uint256)": "106a4f2f", + "revokeApproval(address,address)": "d3bfe76a", + "slippage()": "3e032a3b", + "withdraw(uint256,address,bytes,bytes)": "c9111bd7", + "withdrawableFrom(bytes,bytes)": "fa50e5d2" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_morpho\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_morphoLens\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minHealthFactor\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BaseAdaptor__ConstructorHealthFactorTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__ExternalReceiverBlocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"BaseAdaptor__PricingNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__Slippage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__UserDepositsNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__UserWithdrawsNotAllowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"untrackedDebtPosition\",\"type\":\"address\"}],\"name\":\"MorphoAaveV2DebtTokenAdaptor__DebtPositionsMustBeTracked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MorphoAaveV2DebtTokenAdaptor__HealthFactorTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"}],\"name\":\"assetOf\",\"outputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"}],\"name\":\"assetsUsed\",\"outputs\":[{\"internalType\":\"contract ERC20[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"aToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountToBorrow\",\"type\":\"uint256\"}],\"name\":\"borrowFromAaveV2Morpho\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"identifier\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDebt\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumHealthFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"morpho\",\"outputs\":[{\"internalType\":\"contract IMorphoV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"morphoLens\",\"outputs\":[{\"internalType\":\"contract IMorphoLensV2\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IAaveToken\",\"name\":\"aToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountToRepay\",\"type\":\"uint256\"}],\"name\":\"repayAaveV2MorphoDebt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"revokeApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slippage\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"withdrawableFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"crispymangoes\",\"errors\":{\"MorphoAaveV2DebtTokenAdaptor__DebtPositionsMustBeTracked(address)\":[{\"params\":{\"untrackedDebtPosition\":\"the address of the untracked loan\"}}]},\"kind\":\"dev\",\"methods\":{\"borrowFromAaveV2Morpho(address,uint256)\":{\"params\":{\"aToken\":\"the aToken to borrow on Aave\",\"amountToBorrow\":\"the amount of `aTokenToBorrow` to borrow on Morpho.\"}},\"identifier()\":{\"details\":\"Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this Identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult.\"},\"repayAaveV2MorphoDebt(address,uint256)\":{\"params\":{\"aToken\":\"the aToken you want to repay.\",\"amountToRepay\":\"the amount of `tokenToRepay` to repay with.\"}},\"revokeApproval(address,address)\":{\"params\":{\"asset\":\"the ERC20 asset to revoke `spender`s approval for\",\"spender\":\"the address to revoke approval for\"}}},\"title\":\"Morpho Aave V2 debtToken Adaptor\",\"version\":1},\"userdoc\":{\"errors\":{\"BaseAdaptor__ConstructorHealthFactorTooLow()\":[{\"notice\":\"Attempted to set a constructor minimum health factor to a value below `MINIMUM_CONSTRUCTOR_HEALTH_FACTOR()`.\"}],\"BaseAdaptor__ExternalReceiverBlocked()\":[{\"notice\":\"Attempted to specify an external receiver during a Cellar `callOnAdaptor` call.\"}],\"BaseAdaptor__PricingNotSupported(address)\":[{\"notice\":\"Attempted swap used unsupported output asset.\"}],\"BaseAdaptor__Slippage()\":[{\"notice\":\"Attempted swap has bad slippage.\"}],\"BaseAdaptor__UserDepositsNotAllowed()\":[{\"notice\":\"Attempted to deposit to a position where user deposits were not allowed.\"}],\"BaseAdaptor__UserWithdrawsNotAllowed()\":[{\"notice\":\"Attempted to withdraw from a position where user withdraws were not allowed.\"}],\"MorphoAaveV2DebtTokenAdaptor__DebtPositionsMustBeTracked(address)\":[{\"notice\":\"Strategist attempted to open an untracked Morpho loan.\"}],\"MorphoAaveV2DebtTokenAdaptor__HealthFactorTooLow()\":[{\"notice\":\"Attempted borrow would lower Cellar health factor too low.\"}]},\"kind\":\"user\",\"methods\":{\"assetOf(bytes)\":{\"notice\":\"Returns the positions aToken underlying asset.\"},\"assetsUsed(bytes)\":{\"notice\":\"When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup.\"},\"balanceOf(bytes)\":{\"notice\":\"Returns the cellars balance of the positions debtToken.\"},\"borrowFromAaveV2Morpho(address,uint256)\":{\"notice\":\"Allows strategists to borrow assets from Aave.`aToken` must be the aToken not the debtToken.\"},\"deposit(uint256,bytes,bytes)\":{\"notice\":\"User deposits are NOT allowed into this position.\"},\"isDebt()\":{\"notice\":\"This adaptor reports values in terms of debt.\"},\"minimumHealthFactor()\":{\"notice\":\"Minimum Health Factor enforced after every borrow.Overwrites strategist set minimums if they are lower.\"},\"morpho()\":{\"notice\":\"The Morpho Aave V2 contract on current network.For mainnet use 0x777777c9898D384F785Ee44Acfe945efDFf5f3E0.\"},\"morphoLens()\":{\"notice\":\"The Morpho Aave V2 Lens contract on current network.For mainnet use 0x507fA343d0A90786d86C7cd885f5C49263A91FF4.\"},\"repayAaveV2MorphoDebt(address,uint256)\":{\"notice\":\"Allows strategists to repay loan debt on Aave.\"},\"revokeApproval(address,address)\":{\"notice\":\"Allows strategists to zero out an approval for a given `asset`.\"},\"slippage()\":{\"notice\":\"Max possible slippage when making a swap router swap.\"},\"withdraw(uint256,address,bytes,bytes)\":{\"notice\":\"User withdraws are NOT allowed from this position.\"},\"withdrawableFrom(bytes,bytes)\":{\"notice\":\"This position is a debt position, and user withdraws are not allowed so this position must return 0 for withdrawableFrom.\"}},\"notice\":\"Allows Cellars to interact with Morpho Aave V2 debtToken positions.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/adaptors/Morpho/MorphoAaveV2DebtTokenAdaptor.sol\":\"MorphoAaveV2DebtTokenAdaptor\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/\",\":@balancer/=lib/balancer-v2-monorepo/pkg/\",\":@chainlink/=lib/chainlink/\",\":@ds-test/=lib/forge-std/lib/ds-test/src/\",\":@ensdomains/=node_modules/@ensdomains/\",\":@forge-std/=lib/forge-std/src/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@solmate/=lib/solmate/src/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":@uniswapV3C/=lib/v3-core/contracts/\",\":@uniswapV3P/=lib/v3-periphery/contracts/\",\":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/\",\":balancer-v2-monorepo/=lib/balancer-v2-monorepo/\",\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\":compound-protocol/=lib/compound-protocol/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/src/\",\":v3-core.git/=lib/v3-core.git/contracts/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery.git/=lib/v3-periphery.git/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\":{\"keccak256\":\"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\",\"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\"]},\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\":{\"keccak256\":\"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\",\"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\"]},\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\",\"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol\":{\"keccak256\":\"0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf\",\"dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de\",\"dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929\",\"dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg\"]},\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\",\"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\":{\"keccak256\":\"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\",\"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\",\"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\"]},\"lib/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\",\"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\"]},\"lib/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\",\"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\"]},\"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\":{\"keccak256\":\"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\",\"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\"]},\"src/Registry.sol\":{\"keccak256\":\"0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189\",\"dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK\"]},\"src/base/Cellar.sol\":{\"keccak256\":\"0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058\",\"dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs\"]},\"src/base/ERC20.sol\":{\"keccak256\":\"0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4\",\"dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf\"]},\"src/base/ERC4626.sol\":{\"keccak256\":\"0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469\",\"dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE\"]},\"src/base/Multicall.sol\":{\"keccak256\":\"0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c\",\"dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K\"]},\"src/base/SafeTransferLib.sol\":{\"keccak256\":\"0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a\",\"dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3\"]},\"src/interfaces/IMulticall.sol\":{\"keccak256\":\"0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0\",\"dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5\"]},\"src/interfaces/external/IAaveToken.sol\":{\"keccak256\":\"0x77cd64637e4c0fd379b2d4d826bcd9f64fc706a291ce77d023f693d1eb8e45d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e87630603401ff3374cb610b765e46a3a235ef294fab212cf3116a35db7c4d58\",\"dweb:/ipfs/Qma8awSuYptmpBsWUMz9NZBogVRtVQwXF5cvfsVWpNKhc3\"]},\"src/interfaces/external/IChainlinkAggregator.sol\":{\"keccak256\":\"0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2\",\"dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs\"]},\"src/interfaces/external/IGravity.sol\":{\"keccak256\":\"0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51\",\"dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c\"]},\"src/interfaces/external/IUniswapV2Router02.sol\":{\"keccak256\":\"0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a\",\"dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo\"]},\"src/interfaces/external/IUniswapV3Router.sol\":{\"keccak256\":\"0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd\",\"dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK\"]},\"src/interfaces/external/Morpho/IMorphoLensV2.sol\":{\"keccak256\":\"0xc9232e163c278ff37fe6a81cadc4af59ac41e31017f39366b21a1b4ed03eadf7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cc3be8463c92906e52d6fcffba065fd9777568003adfeef344e03d0654064e9b\",\"dweb:/ipfs/Qme8DZoU8xHEQMxCFnVCgZw4ZrybPyFd4Ji47Attb8xQqN\"]},\"src/interfaces/external/Morpho/IMorphoV2.sol\":{\"keccak256\":\"0x7ff7eb9e520c6ed3290af890a22c77c6ba6cd5f2394f258a2b34eb7f6af5ad66\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://709aa0c2a2d7ed82e09c2765462a851bfc17aab125f735e12bd5ee1ad9e7e21f\",\"dweb:/ipfs/QmWHZuwxwSu6J9crczNc8araaSLwZpbKDJKFUN2uj7AJq9\"]},\"src/interfaces/external/UniswapV3Pool.sol\":{\"keccak256\":\"0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb\",\"urls\":[\"bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9\",\"dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh\"]},\"src/modules/adaptors/BaseAdaptor.sol\":{\"keccak256\":\"0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee\",\"dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd\"]},\"src/modules/adaptors/Morpho/MorphoAaveV2DebtTokenAdaptor.sol\":{\"keccak256\":\"0x83f4793172f28c78d1ae9bc945ec6205c36a1e6e6389b1759b90074cc7ae5107\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9792bc6513b3236c2f464b079f866826a2f75f76c52f6e9033ac5116f5ed5138\",\"dweb:/ipfs/QmVnET672V3wyBv5DjG8hpDQYqWoYGvc8TchWPWfiTBKnZ\"]},\"src/modules/price-router/Extensions/Extension.sol\":{\"keccak256\":\"0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1\",\"dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo\"]},\"src/modules/price-router/PriceRouter.sol\":{\"keccak256\":\"0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66\",\"dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K\"]},\"src/modules/swap-router/SwapRouter.sol\":{\"keccak256\":\"0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818\",\"dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr\"]},\"src/utils/Math.sol\":{\"keccak256\":\"0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312\",\"dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r\"]},\"src/utils/Uint32Array.sol\":{\"keccak256\":\"0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944\",\"dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.16+commit.07a7930e" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_morpho", + "type": "address" + }, + { + "internalType": "address", + "name": "_morphoLens", + "type": "address" + }, + { + "internalType": "uint256", + "name": "minHealthFactor", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__ConstructorHealthFactorTooLow" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__ExternalReceiverBlocked" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "type": "error", + "name": "BaseAdaptor__PricingNotSupported" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__Slippage" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__UserDepositsNotAllowed" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__UserWithdrawsNotAllowed" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "untrackedDebtPosition", + "type": "address" + } + ], + "type": "error", + "name": "MorphoAaveV2DebtTokenAdaptor__DebtPositionsMustBeTracked" + }, + { + "inputs": [], + "type": "error", + "name": "MorphoAaveV2DebtTokenAdaptor__HealthFactorTooLow" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "assetOf", + "outputs": [ + { + "internalType": "contract ERC20", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "assetsUsed", + "outputs": [ + { + "internalType": "contract ERC20[]", + "name": "assets", + "type": "address[]" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "aToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountToBorrow", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "borrowFromAaveV2Morpho" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "pure", + "type": "function", + "name": "deposit" + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "identifier", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "isDebt", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "minimumHealthFactor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "morpho", + "outputs": [ + { + "internalType": "contract IMorphoV2", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "morphoLens", + "outputs": [ + { + "internalType": "contract IMorphoLensV2", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "contract IAaveToken", + "name": "aToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountToRepay", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "repayAaveV2MorphoDebt" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "revokeApproval" + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "slippage", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "pure", + "type": "function", + "name": "withdraw" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "pure", + "type": "function", + "name": "withdrawableFrom", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "borrowFromAaveV2Morpho(address,uint256)": { + "params": { + "aToken": "the aToken to borrow on Aave", + "amountToBorrow": "the amount of `aTokenToBorrow` to borrow on Morpho." + } + }, + "identifier()": { + "details": "Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this Identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult." + }, + "repayAaveV2MorphoDebt(address,uint256)": { + "params": { + "aToken": "the aToken you want to repay.", + "amountToRepay": "the amount of `tokenToRepay` to repay with." + } + }, + "revokeApproval(address,address)": { + "params": { + "asset": "the ERC20 asset to revoke `spender`s approval for", + "spender": "the address to revoke approval for" + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "assetOf(bytes)": { + "notice": "Returns the positions aToken underlying asset." + }, + "assetsUsed(bytes)": { + "notice": "When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup." + }, + "balanceOf(bytes)": { + "notice": "Returns the cellars balance of the positions debtToken." + }, + "borrowFromAaveV2Morpho(address,uint256)": { + "notice": "Allows strategists to borrow assets from Aave.`aToken` must be the aToken not the debtToken." + }, + "deposit(uint256,bytes,bytes)": { + "notice": "User deposits are NOT allowed into this position." + }, + "isDebt()": { + "notice": "This adaptor reports values in terms of debt." + }, + "minimumHealthFactor()": { + "notice": "Minimum Health Factor enforced after every borrow.Overwrites strategist set minimums if they are lower." + }, + "morpho()": { + "notice": "The Morpho Aave V2 contract on current network.For mainnet use 0x777777c9898D384F785Ee44Acfe945efDFf5f3E0." + }, + "morphoLens()": { + "notice": "The Morpho Aave V2 Lens contract on current network.For mainnet use 0x507fA343d0A90786d86C7cd885f5C49263A91FF4." + }, + "repayAaveV2MorphoDebt(address,uint256)": { + "notice": "Allows strategists to repay loan debt on Aave." + }, + "revokeApproval(address,address)": { + "notice": "Allows strategists to zero out an approval for a given `asset`." + }, + "slippage()": { + "notice": "Max possible slippage when making a swap router swap." + }, + "withdraw(uint256,address,bytes,bytes)": { + "notice": "User withdraws are NOT allowed from this position." + }, + "withdrawableFrom(bytes,bytes)": { + "notice": "This position is a debt position, and user withdraws are not allowed so this position must return 0 for withdrawableFrom." + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + ":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/", + ":@balancer/=lib/balancer-v2-monorepo/pkg/", + ":@chainlink/=lib/chainlink/", + ":@ds-test/=lib/forge-std/lib/ds-test/src/", + ":@ensdomains/=node_modules/@ensdomains/", + ":@forge-std/=lib/forge-std/src/", + ":@openzeppelin/=lib/openzeppelin-contracts/", + ":@solmate/=lib/solmate/src/", + ":@uniswap/v3-core/=lib/v3-core/", + ":@uniswap/v3-periphery/=lib/v3-periphery/", + ":@uniswapV3C/=lib/v3-core/contracts/", + ":@uniswapV3P/=lib/v3-periphery/contracts/", + ":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/", + ":balancer-v2-monorepo/=lib/balancer-v2-monorepo/", + ":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/", + ":compound-protocol/=lib/compound-protocol/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":eth-gas-reporter/=node_modules/eth-gas-reporter/", + ":forge-std/=lib/forge-std/src/", + ":hardhat/=node_modules/hardhat/", + ":openzeppelin-contracts/=lib/openzeppelin-contracts/", + ":solmate/=lib/solmate/src/", + ":v3-core.git/=lib/v3-core.git/contracts/", + ":v3-core/=lib/v3-core/contracts/", + ":v3-periphery.git/=lib/v3-periphery.git/contracts/", + ":v3-periphery/=lib/v3-periphery/contracts/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/modules/adaptors/Morpho/MorphoAaveV2DebtTokenAdaptor.sol": "MorphoAaveV2DebtTokenAdaptor" + }, + "libraries": {} + }, + "sources": { + "lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol": { + "keccak256": "0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7", + "urls": [ + "bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465", + "dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a" + ], + "license": "MIT" + }, + "lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol": { + "keccak256": "0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2", + "urls": [ + "bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b", + "dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG" + ], + "license": "MIT" + }, + "lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol": { + "keccak256": "0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846", + "urls": [ + "bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7", + "dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { + "keccak256": "0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673", + "urls": [ + "bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2", + "dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { + "keccak256": "0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b", + "urls": [ + "bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34", + "dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol": { + "keccak256": "0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da", + "urls": [ + "bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708", + "dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol": { + "keccak256": "0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028", + "urls": [ + "bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf", + "dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Address.sol": { + "keccak256": "0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700", + "urls": [ + "bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de", + "dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Context.sol": { + "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", + "urls": [ + "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", + "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol": { + "keccak256": "0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb", + "urls": [ + "bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929", + "dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg" + ], + "license": "MIT" + }, + "lib/solmate/src/auth/Owned.sol": { + "keccak256": "0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea", + "urls": [ + "bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4", + "dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx" + ], + "license": "AGPL-3.0-only" + }, + "lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol": { + "keccak256": "0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968", + "urls": [ + "bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e", + "dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol": { + "keccak256": "0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634", + "urls": [ + "bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5", + "dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol": { + "keccak256": "0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5", + "urls": [ + "bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7", + "dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol": { + "keccak256": "0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b", + "urls": [ + "bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa", + "dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol": { + "keccak256": "0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd", + "urls": [ + "bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03", + "dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol": { + "keccak256": "0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7", + "urls": [ + "bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047", + "dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol": { + "keccak256": "0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235", + "urls": [ + "bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735", + "dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol": { + "keccak256": "0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43", + "urls": [ + "bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea", + "dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/libraries/FullMath.sol": { + "keccak256": "0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645", + "urls": [ + "bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125", + "dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd" + ], + "license": "MIT" + }, + "lib/v3-core/contracts/libraries/TickMath.sol": { + "keccak256": "0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129", + "urls": [ + "bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c", + "dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-periphery/contracts/libraries/OracleLibrary.sol": { + "keccak256": "0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b", + "urls": [ + "bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53", + "dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM" + ], + "license": "GPL-2.0-or-later" + }, + "src/Registry.sol": { + "keccak256": "0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47", + "urls": [ + "bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189", + "dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK" + ], + "license": "Apache-2.0" + }, + "src/base/Cellar.sol": { + "keccak256": "0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47", + "urls": [ + "bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058", + "dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs" + ], + "license": "Apache-2.0" + }, + "src/base/ERC20.sol": { + "keccak256": "0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02", + "urls": [ + "bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4", + "dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf" + ], + "license": "AGPL-3.0-only" + }, + "src/base/ERC4626.sol": { + "keccak256": "0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7", + "urls": [ + "bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469", + "dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE" + ], + "license": "AGPL-3.0-only" + }, + "src/base/Multicall.sol": { + "keccak256": "0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9", + "urls": [ + "bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c", + "dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K" + ], + "license": "GPL-2.0-or-later" + }, + "src/base/SafeTransferLib.sol": { + "keccak256": "0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324", + "urls": [ + "bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a", + "dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3" + ], + "license": "AGPL-3.0-only" + }, + "src/interfaces/IMulticall.sol": { + "keccak256": "0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e", + "urls": [ + "bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0", + "dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5" + ], + "license": "GPL-2.0-or-later" + }, + "src/interfaces/external/IAaveToken.sol": { + "keccak256": "0x77cd64637e4c0fd379b2d4d826bcd9f64fc706a291ce77d023f693d1eb8e45d8", + "urls": [ + "bzz-raw://e87630603401ff3374cb610b765e46a3a235ef294fab212cf3116a35db7c4d58", + "dweb:/ipfs/Qma8awSuYptmpBsWUMz9NZBogVRtVQwXF5cvfsVWpNKhc3" + ], + "license": "MIT" + }, + "src/interfaces/external/IChainlinkAggregator.sol": { + "keccak256": "0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d", + "urls": [ + "bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2", + "dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/IGravity.sol": { + "keccak256": "0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11", + "urls": [ + "bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51", + "dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/IUniswapV2Router02.sol": { + "keccak256": "0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f", + "urls": [ + "bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a", + "dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/IUniswapV3Router.sol": { + "keccak256": "0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355", + "urls": [ + "bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd", + "dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK" + ], + "license": "GPL-2.0-or-later" + }, + "src/interfaces/external/Morpho/IMorphoLensV2.sol": { + "keccak256": "0xc9232e163c278ff37fe6a81cadc4af59ac41e31017f39366b21a1b4ed03eadf7", + "urls": [ + "bzz-raw://cc3be8463c92906e52d6fcffba065fd9777568003adfeef344e03d0654064e9b", + "dweb:/ipfs/Qme8DZoU8xHEQMxCFnVCgZw4ZrybPyFd4Ji47Attb8xQqN" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/Morpho/IMorphoV2.sol": { + "keccak256": "0x7ff7eb9e520c6ed3290af890a22c77c6ba6cd5f2394f258a2b34eb7f6af5ad66", + "urls": [ + "bzz-raw://709aa0c2a2d7ed82e09c2765462a851bfc17aab125f735e12bd5ee1ad9e7e21f", + "dweb:/ipfs/QmWHZuwxwSu6J9crczNc8araaSLwZpbKDJKFUN2uj7AJq9" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/UniswapV3Pool.sol": { + "keccak256": "0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb", + "urls": [ + "bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9", + "dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh" + ], + "license": null + }, + "src/modules/adaptors/BaseAdaptor.sol": { + "keccak256": "0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c", + "urls": [ + "bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee", + "dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd" + ], + "license": "Apache-2.0" + }, + "src/modules/adaptors/Morpho/MorphoAaveV2DebtTokenAdaptor.sol": { + "keccak256": "0x83f4793172f28c78d1ae9bc945ec6205c36a1e6e6389b1759b90074cc7ae5107", + "urls": [ + "bzz-raw://9792bc6513b3236c2f464b079f866826a2f75f76c52f6e9033ac5116f5ed5138", + "dweb:/ipfs/QmVnET672V3wyBv5DjG8hpDQYqWoYGvc8TchWPWfiTBKnZ" + ], + "license": "Apache-2.0" + }, + "src/modules/price-router/Extensions/Extension.sol": { + "keccak256": "0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d", + "urls": [ + "bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1", + "dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo" + ], + "license": "Apache-2.0" + }, + "src/modules/price-router/PriceRouter.sol": { + "keccak256": "0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9", + "urls": [ + "bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66", + "dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K" + ], + "license": "Apache-2.0" + }, + "src/modules/swap-router/SwapRouter.sol": { + "keccak256": "0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80", + "urls": [ + "bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818", + "dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr" + ], + "license": "Apache-2.0" + }, + "src/utils/Math.sol": { + "keccak256": "0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f", + "urls": [ + "bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312", + "dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r" + ], + "license": "Apache-2.0" + }, + "src/utils/Uint32Array.sol": { + "keccak256": "0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9", + "urls": [ + "bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944", + "dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3" + ], + "license": "Apache-2.0" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/modules/adaptors/Morpho/MorphoAaveV2DebtTokenAdaptor.sol", + "id": 65498, + "exportedSymbols": { + "BaseAdaptor": [ + 61644 + ], + "Cellar": [ + 44434 + ], + "ERC20": [ + 45747 + ], + "IAaveToken": [ + 49523 + ], + "IMorphoLensV2": [ + 53305 + ], + "IMorphoV2": [ + 53396 + ], + "Math": [ + 74811 + ], + "MorphoAaveV2DebtTokenAdaptor": [ + 65497 + ], + "Registry": [ + 41024 + ], + "SafeTransferLib": [ + 46498 + ] + }, + "nodeType": "SourceUnit", + "src": "39:7053:198", + "nodes": [ + { + "id": 65119, + "nodeType": "PragmaDirective", + "src": "39:23:198", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".16" + ] + }, + { + "id": 65126, + "nodeType": "ImportDirective", + "src": "64:115:198", + "nodes": [], + "absolutePath": "src/modules/adaptors/BaseAdaptor.sol", + "file": "src/modules/adaptors/BaseAdaptor.sol", + "nameLocation": "-1:-1:-1", + "scope": 65498, + "sourceUnit": 61645, + "symbolAliases": [ + { + "foreign": { + "id": 65120, + "name": "BaseAdaptor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61644, + "src": "73:11:198", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 65121, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45747, + "src": "86:5:198", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 65122, + "name": "SafeTransferLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46498, + "src": "93:15:198", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 65123, + "name": "Cellar", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44434, + "src": "110:6:198", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 65124, + "name": "Registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41024, + "src": "118:8:198", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 65125, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74811, + "src": "128:4:198", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 65128, + "nodeType": "ImportDirective", + "src": "180:73:198", + "nodes": [], + "absolutePath": "src/interfaces/external/Morpho/IMorphoV2.sol", + "file": "src/interfaces/external/Morpho/IMorphoV2.sol", + "nameLocation": "-1:-1:-1", + "scope": 65498, + "sourceUnit": 53397, + "symbolAliases": [ + { + "foreign": { + "id": 65127, + "name": "IMorphoV2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 53396, + "src": "189:9:198", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 65130, + "nodeType": "ImportDirective", + "src": "254:81:198", + "nodes": [], + "absolutePath": "src/interfaces/external/Morpho/IMorphoLensV2.sol", + "file": "src/interfaces/external/Morpho/IMorphoLensV2.sol", + "nameLocation": "-1:-1:-1", + "scope": 65498, + "sourceUnit": 53306, + "symbolAliases": [ + { + "foreign": { + "id": 65129, + "name": "IMorphoLensV2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 53305, + "src": "263:13:198", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 65132, + "nodeType": "ImportDirective", + "src": "336:68:198", + "nodes": [], + "absolutePath": "src/interfaces/external/IAaveToken.sol", + "file": "src/interfaces/external/IAaveToken.sol", + "nameLocation": "-1:-1:-1", + "scope": 65498, + "sourceUnit": 49524, + "symbolAliases": [ + { + "foreign": { + "id": 65131, + "name": "IAaveToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49523, + "src": "345:10:198", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 65497, + "nodeType": "ContractDefinition", + "src": "561:6530:198", + "nodes": [ + { + "id": 65139, + "nodeType": "UsingForDirective", + "src": "620:32:198", + "nodes": [], + "global": false, + "libraryName": { + "id": 65136, + "name": "SafeTransferLib", + "nameLocations": [ + "626:15:198" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46498, + "src": "626:15:198" + }, + "typeName": { + "id": 65138, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 65137, + "name": "ERC20", + "nameLocations": [ + "646:5:198" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "646:5:198" + }, + "referencedDeclaration": 45747, + "src": "646:5:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + } + }, + { + "id": 65142, + "nodeType": "UsingForDirective", + "src": "657:23:198", + "nodes": [], + "global": false, + "libraryName": { + "id": 65140, + "name": "Math", + "nameLocations": [ + "663:4:198" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 74811, + "src": "663:4:198" + }, + "typeName": { + "id": 65141, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "672:7:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 65147, + "nodeType": "ErrorDefinition", + "src": "1223:94:198", + "nodes": [], + "documentation": { + "id": 65143, + "nodeType": "StructuredDocumentation", + "src": "1067:151:198", + "text": " @notice Strategist attempted to open an untracked Morpho loan.\n @param untrackedDebtPosition the address of the untracked loan" + }, + "errorSelector": "17b06aa5", + "name": "MorphoAaveV2DebtTokenAdaptor__DebtPositionsMustBeTracked", + "nameLocation": "1229:56:198", + "parameters": { + "id": 65146, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65145, + "mutability": "mutable", + "name": "untrackedDebtPosition", + "nameLocation": "1294:21:198", + "nodeType": "VariableDeclaration", + "scope": 65147, + "src": "1286:29:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 65144, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1286:7:198", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1285:31:198" + } + }, + { + "id": 65150, + "nodeType": "ErrorDefinition", + "src": "1411:57:198", + "nodes": [], + "documentation": { + "id": 65148, + "nodeType": "StructuredDocumentation", + "src": "1323:83:198", + "text": "@notice Attempted borrow would lower Cellar health factor too low." + }, + "errorSelector": "da06da9c", + "name": "MorphoAaveV2DebtTokenAdaptor__HealthFactorTooLow", + "nameLocation": "1417:48:198", + "parameters": { + "id": 65149, + "nodeType": "ParameterList", + "parameters": [], + "src": "1465:2:198" + } + }, + { + "id": 65154, + "nodeType": "VariableDeclaration", + "src": "1628:33:198", + "nodes": [], + "constant": false, + "documentation": { + "id": 65151, + "nodeType": "StructuredDocumentation", + "src": "1474:149:198", + "text": " @notice The Morpho Aave V2 contract on current network.\n @notice For mainnet use 0x777777c9898D384F785Ee44Acfe945efDFf5f3E0." + }, + "functionSelector": "d8fbc833", + "mutability": "immutable", + "name": "morpho", + "nameLocation": "1655:6:198", + "scope": 65497, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + }, + "typeName": { + "id": 65153, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 65152, + "name": "IMorphoV2", + "nameLocations": [ + "1628:9:198" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 53396, + "src": "1628:9:198" + }, + "referencedDeclaration": 53396, + "src": "1628:9:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + }, + "visibility": "public" + }, + { + "id": 65158, + "nodeType": "VariableDeclaration", + "src": "1827:41:198", + "nodes": [], + "constant": false, + "documentation": { + "id": 65155, + "nodeType": "StructuredDocumentation", + "src": "1668:154:198", + "text": " @notice The Morpho Aave V2 Lens contract on current network.\n @notice For mainnet use 0x507fA343d0A90786d86C7cd885f5C49263A91FF4." + }, + "functionSelector": "425734d3", + "mutability": "immutable", + "name": "morphoLens", + "nameLocation": "1858:10:198", + "scope": 65497, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoLensV2_$53305", + "typeString": "contract IMorphoLensV2" + }, + "typeName": { + "id": 65157, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 65156, + "name": "IMorphoLensV2", + "nameLocations": [ + "1827:13:198" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 53305, + "src": "1827:13:198" + }, + "referencedDeclaration": 53305, + "src": "1827:13:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoLensV2_$53305", + "typeString": "contract IMorphoLensV2" + } + }, + "visibility": "public" + }, + { + "id": 65161, + "nodeType": "VariableDeclaration", + "src": "2026:44:198", + "nodes": [], + "constant": false, + "documentation": { + "id": 65159, + "nodeType": "StructuredDocumentation", + "src": "1875:146:198", + "text": " @notice Minimum Health Factor enforced after every borrow.\n @notice Overwrites strategist set minimums if they are lower." + }, + "functionSelector": "1caff8b1", + "mutability": "immutable", + "name": "minimumHealthFactor", + "nameLocation": "2051:19:198", + "scope": 65497, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65160, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2026:7:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "id": 65191, + "nodeType": "FunctionDefinition", + "src": "2077:279:198", + "nodes": [], + "body": { + "id": 65190, + "nodeType": "Block", + "src": "2152:204:198", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 65171, + "name": "minHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65167, + "src": "2200:15:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 65170, + "name": "_verifyConstructorMinimumHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61626, + "src": "2162:37:198", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 65172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2162:54:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 65173, + "nodeType": "ExpressionStatement", + "src": "2162:54:198" + }, + { + "expression": { + "id": 65178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 65174, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65154, + "src": "2226:6:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 65176, + "name": "_morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65163, + "src": "2245:7:198", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 65175, + "name": "IMorphoV2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 53396, + "src": "2235:9:198", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IMorphoV2_$53396_$", + "typeString": "type(contract IMorphoV2)" + } + }, + "id": 65177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2235:18:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + }, + "src": "2226:27:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + }, + "id": 65179, + "nodeType": "ExpressionStatement", + "src": "2226:27:198" + }, + { + "expression": { + "id": 65184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 65180, + "name": "morphoLens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65158, + "src": "2263:10:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoLensV2_$53305", + "typeString": "contract IMorphoLensV2" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 65182, + "name": "_morphoLens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65165, + "src": "2290:11:198", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 65181, + "name": "IMorphoLensV2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 53305, + "src": "2276:13:198", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IMorphoLensV2_$53305_$", + "typeString": "type(contract IMorphoLensV2)" + } + }, + "id": 65183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2276:26:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoLensV2_$53305", + "typeString": "contract IMorphoLensV2" + } + }, + "src": "2263:39:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoLensV2_$53305", + "typeString": "contract IMorphoLensV2" + } + }, + "id": 65185, + "nodeType": "ExpressionStatement", + "src": "2263:39:198" + }, + { + "expression": { + "id": 65188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 65186, + "name": "minimumHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65161, + "src": "2312:19:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 65187, + "name": "minHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65167, + "src": "2334:15:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2312:37:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 65189, + "nodeType": "ExpressionStatement", + "src": "2312:37:198" + } + ] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 65168, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65163, + "mutability": "mutable", + "name": "_morpho", + "nameLocation": "2097:7:198", + "nodeType": "VariableDeclaration", + "scope": 65191, + "src": "2089:15:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 65162, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2089:7:198", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65165, + "mutability": "mutable", + "name": "_morphoLens", + "nameLocation": "2114:11:198", + "nodeType": "VariableDeclaration", + "scope": 65191, + "src": "2106:19:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 65164, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2106:7:198", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65167, + "mutability": "mutable", + "name": "minHealthFactor", + "nameLocation": "2135:15:198", + "nodeType": "VariableDeclaration", + "scope": 65191, + "src": "2127:23:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65166, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2127:7:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2088:63:198" + }, + "returnParameters": { + "id": 65169, + "nodeType": "ParameterList", + "parameters": [], + "src": "2152:0:198" + }, + "scope": 65497, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 65206, + "nodeType": "FunctionDefinition", + "src": "2775:148:198", + "nodes": [], + "body": { + "id": 65205, + "nodeType": "Block", + "src": "2836:87:198", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "4d6f7270686f20416176652056322064656274546f6b656e2041646170746f72205620312e31", + "id": 65201, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2874:40:198", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_938a5f7ba08ad2b54d69d6b1a56cd911cb792f077d93cab74dcd22e2a3ed3f7c", + "typeString": "literal_string \"Morpho Aave V2 debtToken Adaptor V 1.1\"" + }, + "value": "Morpho Aave V2 debtToken Adaptor V 1.1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_938a5f7ba08ad2b54d69d6b1a56cd911cb792f077d93cab74dcd22e2a3ed3f7c", + "typeString": "literal_string \"Morpho Aave V2 debtToken Adaptor V 1.1\"" + } + ], + "expression": { + "id": 65199, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2863:3:198", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 65200, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2867:6:198", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "2863:10:198", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 65202, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2863:52:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 65198, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2853:9:198", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 65203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2853:63:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 65197, + "id": 65204, + "nodeType": "Return", + "src": "2846:70:198" + } + ] + }, + "baseFunctions": [ + 61410 + ], + "documentation": { + "id": 65192, + "nodeType": "StructuredDocumentation", + "src": "2474:296:198", + "text": " @dev Identifier unique to this adaptor for a shared registry.\n Normally the identifier would just be the address of this contract, but this\n Identifier is needed during Cellar Delegate Call Operations, so getting the address\n of the adaptor is more difficult." + }, + "functionSelector": "7998a1c4", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "identifier", + "nameLocation": "2784:10:198", + "overrides": { + "id": 65194, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2809:8:198" + }, + "parameters": { + "id": 65193, + "nodeType": "ParameterList", + "parameters": [], + "src": "2794:2:198" + }, + "returnParameters": { + "id": 65197, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65196, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65206, + "src": "2827:7:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 65195, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2827:7:198", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2826:9:198" + }, + "scope": 65497, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 65221, + "nodeType": "FunctionDefinition", + "src": "3131:136:198", + "nodes": [], + "body": { + "id": 65220, + "nodeType": "Block", + "src": "3206:61:198", + "nodes": [], + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 65217, + "name": "BaseAdaptor__UserDepositsNotAllowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61382, + "src": "3223:35:198", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 65218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3223:37:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 65219, + "nodeType": "RevertStatement", + "src": "3216:44:198" + } + ] + }, + "baseFunctions": [ + 61454 + ], + "documentation": { + "id": 65207, + "nodeType": "StructuredDocumentation", + "src": "3050:76:198", + "text": " @notice User deposits are NOT allowed into this position." + }, + "functionSelector": "69445c31", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deposit", + "nameLocation": "3140:7:198", + "overrides": { + "id": 65215, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3197:8:198" + }, + "parameters": { + "id": 65214, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65209, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65221, + "src": "3148:7:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65208, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3148:7:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65211, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65221, + "src": "3157:12:198", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 65210, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3157:5:198", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65213, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65221, + "src": "3171:12:198", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 65212, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3171:5:198", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3147:37:198" + }, + "returnParameters": { + "id": 65216, + "nodeType": "ParameterList", + "parameters": [], + "src": "3206:0:198" + }, + "scope": 65497, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 65238, + "nodeType": "FunctionDefinition", + "src": "3355:147:198", + "nodes": [], + "body": { + "id": 65237, + "nodeType": "Block", + "src": "3440:62:198", + "nodes": [], + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 65234, + "name": "BaseAdaptor__UserWithdrawsNotAllowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61385, + "src": "3457:36:198", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 65235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3457:38:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 65236, + "nodeType": "RevertStatement", + "src": "3450:45:198" + } + ] + }, + "baseFunctions": [ + 61466 + ], + "documentation": { + "id": 65222, + "nodeType": "StructuredDocumentation", + "src": "3273:77:198", + "text": " @notice User withdraws are NOT allowed from this position." + }, + "functionSelector": "c9111bd7", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nameLocation": "3364:8:198", + "overrides": { + "id": 65232, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3431:8:198" + }, + "parameters": { + "id": 65231, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65224, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65238, + "src": "3373:7:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65223, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3373:7:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65226, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65238, + "src": "3382:7:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 65225, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3382:7:198", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65228, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65238, + "src": "3391:12:198", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 65227, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3391:5:198", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65230, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65238, + "src": "3405:12:198", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 65229, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3405:5:198", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3372:46:198" + }, + "returnParameters": { + "id": 65233, + "nodeType": "ParameterList", + "parameters": [], + "src": "3440:0:198" + }, + "scope": 65497, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 65252, + "nodeType": "FunctionDefinition", + "src": "3676:118:198", + "nodes": [], + "body": { + "id": 65251, + "nodeType": "Block", + "src": "3769:25:198", + "nodes": [], + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 65249, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3786:1:198", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 65248, + "id": 65250, + "nodeType": "Return", + "src": "3779:8:198" + } + ] + }, + "baseFunctions": [ + 61484 + ], + "documentation": { + "id": 65239, + "nodeType": "StructuredDocumentation", + "src": "3508:163:198", + "text": " @notice This position is a debt position, and user withdraws are not allowed so\n this position must return 0 for withdrawableFrom." + }, + "functionSelector": "fa50e5d2", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawableFrom", + "nameLocation": "3685:16:198", + "overrides": { + "id": 65245, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3742:8:198" + }, + "parameters": { + "id": 65244, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65241, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65252, + "src": "3702:12:198", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 65240, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3702:5:198", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65243, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65252, + "src": "3716:12:198", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 65242, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3716:5:198", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3701:28:198" + }, + "returnParameters": { + "id": 65248, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65247, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65252, + "src": "3760:7:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65246, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3760:7:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3759:9:198" + }, + "scope": 65497, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 65278, + "nodeType": "FunctionDefinition", + "src": "3887:211:198", + "nodes": [], + "body": { + "id": 65277, + "nodeType": "Block", + "src": "3971:127:198", + "nodes": [], + "statements": [ + { + "assignments": [ + 65262 + ], + "declarations": [ + { + "constant": false, + "id": 65262, + "mutability": "mutable", + "name": "aToken", + "nameLocation": "3989:6:198", + "nodeType": "VariableDeclaration", + "scope": 65277, + "src": "3981:14:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 65261, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3981:7:198", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 65270, + "initialValue": { + "arguments": [ + { + "id": 65265, + "name": "adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65255, + "src": "4009:11:198", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 65267, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4023:7:198", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65266, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4023:7:198", + "typeDescriptions": {} + } + } + ], + "id": 65268, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4022:9:198", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + ], + "expression": { + "id": 65263, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3998:3:198", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 65264, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4002:6:198", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "3998:10:198", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 65269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3998:34:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3981:51:198" + }, + { + "expression": { + "arguments": [ + { + "id": 65272, + "name": "aToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65262, + "src": "4072:6:198", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 65273, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4080:3:198", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 65274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4084:6:198", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4080:10:198", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 65271, + "name": "_balanceOfInUnderlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65496, + "src": "4049:22:198", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view returns (uint256)" + } + }, + "id": 65275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4049:42:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 65260, + "id": 65276, + "nodeType": "Return", + "src": "4042:49:198" + } + ] + }, + "baseFunctions": [ + 61474 + ], + "documentation": { + "id": 65253, + "nodeType": "StructuredDocumentation", + "src": "3800:82:198", + "text": " @notice Returns the cellars balance of the positions debtToken." + }, + "functionSelector": "78415365", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "3896:9:198", + "overrides": { + "id": 65257, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3944:8:198" + }, + "parameters": { + "id": 65256, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65255, + "mutability": "mutable", + "name": "adaptorData", + "nameLocation": "3919:11:198", + "nodeType": "VariableDeclaration", + "scope": 65278, + "src": "3906:24:198", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 65254, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3906:5:198", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3905:26:198" + }, + "returnParameters": { + "id": 65260, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65259, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65278, + "src": "3962:7:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65258, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3962:7:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3961:9:198" + }, + "scope": 65497, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "id": 65305, + "nodeType": "FunctionDefinition", + "src": "4182:211:198", + "nodes": [], + "body": { + "id": 65304, + "nodeType": "Block", + "src": "4262:131:198", + "nodes": [], + "statements": [ + { + "assignments": [ + 65290 + ], + "declarations": [ + { + "constant": false, + "id": 65290, + "mutability": "mutable", + "name": "aToken", + "nameLocation": "4283:6:198", + "nodeType": "VariableDeclaration", + "scope": 65304, + "src": "4272:17:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + }, + "typeName": { + "id": 65289, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 65288, + "name": "IAaveToken", + "nameLocations": [ + "4272:10:198" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49523, + "src": "4272:10:198" + }, + "referencedDeclaration": 49523, + "src": "4272:10:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + }, + "visibility": "internal" + } + ], + "id": 65297, + "initialValue": { + "arguments": [ + { + "id": 65293, + "name": "adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65281, + "src": "4303:11:198", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 65294, + "name": "IAaveToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49523, + "src": "4317:10:198", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAaveToken_$49523_$", + "typeString": "type(contract IAaveToken)" + } + } + ], + "id": 65295, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4316:12:198", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAaveToken_$49523_$", + "typeString": "type(contract IAaveToken)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_contract$_IAaveToken_$49523_$", + "typeString": "type(contract IAaveToken)" + } + ], + "expression": { + "id": 65291, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4292:3:198", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 65292, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4296:6:198", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "4292:10:198", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 65296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4292:37:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4272:57:198" + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 65299, + "name": "aToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65290, + "src": "4352:6:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + }, + "id": 65300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4359:24:198", + "memberName": "UNDERLYING_ASSET_ADDRESS", + "nodeType": "MemberAccess", + "referencedDeclaration": 49522, + "src": "4352:31:198", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 65301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4352:33:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 65298, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45747, + "src": "4346:5:198", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$45747_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 65302, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4346:40:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "functionReturnParameters": 65287, + "id": 65303, + "nodeType": "Return", + "src": "4339:47:198" + } + ] + }, + "baseFunctions": [ + 61493 + ], + "documentation": { + "id": 65279, + "nodeType": "StructuredDocumentation", + "src": "4104:73:198", + "text": " @notice Returns the positions aToken underlying asset." + }, + "functionSelector": "e170a9bf", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "assetOf", + "nameLocation": "4191:7:198", + "overrides": { + "id": 65283, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4237:8:198" + }, + "parameters": { + "id": 65282, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65281, + "mutability": "mutable", + "name": "adaptorData", + "nameLocation": "4212:11:198", + "nodeType": "VariableDeclaration", + "scope": 65305, + "src": "4199:24:198", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 65280, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4199:5:198", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4198:26:198" + }, + "returnParameters": { + "id": 65287, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65286, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65305, + "src": "4255:5:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 65285, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 65284, + "name": "ERC20", + "nameLocations": [ + "4255:5:198" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "4255:5:198" + }, + "referencedDeclaration": 45747, + "src": "4255:5:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + } + ], + "src": "4254:7:198" + }, + "scope": 65497, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "id": 65315, + "nodeType": "FunctionDefinition", + "src": "4476:82:198", + "nodes": [], + "body": { + "id": 65314, + "nodeType": "Block", + "src": "4530:28:198", + "nodes": [], + "statements": [ + { + "expression": { + "hexValue": "74727565", + "id": 65312, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4547:4:198", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 65311, + "id": 65313, + "nodeType": "Return", + "src": "4540:11:198" + } + ] + }, + "baseFunctions": [ + 61527 + ], + "documentation": { + "id": 65306, + "nodeType": "StructuredDocumentation", + "src": "4399:72:198", + "text": " @notice This adaptor reports values in terms of debt." + }, + "functionSelector": "89353a09", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isDebt", + "nameLocation": "4485:6:198", + "overrides": { + "id": 65308, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4506:8:198" + }, + "parameters": { + "id": 65307, + "nodeType": "ParameterList", + "parameters": [], + "src": "4491:2:198" + }, + "returnParameters": { + "id": 65311, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65310, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65315, + "src": "4524:4:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 65309, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4524:4:198", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4523:6:198" + }, + "scope": 65497, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 65392, + "nodeType": "FunctionDefinition", + "src": "4952:843:198", + "nodes": [], + "body": { + "id": 65391, + "nodeType": "Block", + "src": "5031:764:198", + "nodes": [], + "statements": [ + { + "assignments": [ + 65324 + ], + "declarations": [ + { + "constant": false, + "id": 65324, + "mutability": "mutable", + "name": "positionHash", + "nameLocation": "5133:12:198", + "nodeType": "VariableDeclaration", + "scope": 65391, + "src": "5125:20:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 65323, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5125:7:198", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 65337, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 65328, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 65206 + ], + "referencedDeclaration": 65206, + "src": "5169:10:198", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 65329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5169:12:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "hexValue": "74727565", + "id": 65330, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5183:4:198", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "arguments": [ + { + "id": 65333, + "name": "aToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65318, + "src": "5200:6:198", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 65331, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5189:3:198", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 65332, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5193:6:198", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "5189:10:198", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 65334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5189:18:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 65326, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5158:3:198", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 65327, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5162:6:198", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "5158:10:198", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 65335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5158:50:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 65325, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "5148:9:198", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 65336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5148:61:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5125:84:198" + }, + { + "assignments": [ + 65339 + ], + "declarations": [ + { + "constant": false, + "id": 65339, + "mutability": "mutable", + "name": "positionId", + "nameLocation": "5226:10:198", + "nodeType": "VariableDeclaration", + "scope": 65391, + "src": "5219:17:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 65338, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "5219:6:198", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "id": 65351, + "initialValue": { + "arguments": [ + { + "id": 65349, + "name": "positionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65324, + "src": "5300:12:198", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 65343, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "5254:4:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV2DebtTokenAdaptor_$65497", + "typeString": "contract MorphoAaveV2DebtTokenAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV2DebtTokenAdaptor_$65497", + "typeString": "contract MorphoAaveV2DebtTokenAdaptor" + } + ], + "id": 65342, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5246:7:198", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65341, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5246:7:198", + "typeDescriptions": {} + } + }, + "id": 65344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5246:13:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 65340, + "name": "Cellar", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44434, + "src": "5239:6:198", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Cellar_$44434_$", + "typeString": "type(contract Cellar)" + } + }, + "id": 65345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5239:21:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_Cellar_$44434", + "typeString": "contract Cellar" + } + }, + "id": 65346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5261:8:198", + "memberName": "registry", + "nodeType": "MemberAccess", + "referencedDeclaration": 42070, + "src": "5239:30:198", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_Registry_$41024_$", + "typeString": "function () view external returns (contract Registry)" + } + }, + "id": 65347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5239:32:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_Registry_$41024", + "typeString": "contract Registry" + } + }, + "id": 65348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5272:27:198", + "memberName": "getPositionHashToPositionId", + "nodeType": "MemberAccess", + "referencedDeclaration": 40771, + "src": "5239:60:198", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint32_$", + "typeString": "function (bytes32) view external returns (uint32)" + } + }, + "id": 65350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5239:74:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5219:94:198" + }, + { + "condition": { + "id": 65361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5327:49:198", + "subExpression": { + "arguments": [ + { + "id": 65359, + "name": "positionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65339, + "src": "5365:10:198", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 65355, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "5343:4:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV2DebtTokenAdaptor_$65497", + "typeString": "contract MorphoAaveV2DebtTokenAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV2DebtTokenAdaptor_$65497", + "typeString": "contract MorphoAaveV2DebtTokenAdaptor" + } + ], + "id": 65354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5335:7:198", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65353, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5335:7:198", + "typeDescriptions": {} + } + }, + "id": 65356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5335:13:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 65352, + "name": "Cellar", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44434, + "src": "5328:6:198", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Cellar_$44434_$", + "typeString": "type(contract Cellar)" + } + }, + "id": 65357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5328:21:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_Cellar_$44434", + "typeString": "contract Cellar" + } + }, + "id": 65358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5350:14:198", + "memberName": "isPositionUsed", + "nodeType": "MemberAccess", + "referencedDeclaration": 41300, + "src": "5328:36:198", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view external returns (bool)" + } + }, + "id": 65360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5328:48:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 65366, + "nodeType": "IfStatement", + "src": "5323:138:198", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 65363, + "name": "aToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65318, + "src": "5454:6:198", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 65362, + "name": "MorphoAaveV2DebtTokenAdaptor__DebtPositionsMustBeTracked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65147, + "src": "5397:56:198", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 65364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5397:64:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 65365, + "nodeType": "RevertStatement", + "src": "5390:71:198" + } + }, + { + "expression": { + "arguments": [ + { + "id": 65370, + "name": "aToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65318, + "src": "5517:6:198", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 65371, + "name": "amountToBorrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65320, + "src": "5525:14:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 65367, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65154, + "src": "5503:6:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + }, + "id": 65369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5510:6:198", + "memberName": "borrow", + "nodeType": "MemberAccess", + "referencedDeclaration": 53379, + "src": "5503:13:198", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 65372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5503:37:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 65373, + "nodeType": "ExpressionStatement", + "src": "5503:37:198" + }, + { + "assignments": [ + 65375 + ], + "declarations": [ + { + "constant": false, + "id": 65375, + "mutability": "mutable", + "name": "healthFactor", + "nameLocation": "5621:12:198", + "nodeType": "VariableDeclaration", + "scope": 65391, + "src": "5613:20:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65374, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5613:7:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 65383, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 65380, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "5675:4:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV2DebtTokenAdaptor_$65497", + "typeString": "contract MorphoAaveV2DebtTokenAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV2DebtTokenAdaptor_$65497", + "typeString": "contract MorphoAaveV2DebtTokenAdaptor" + } + ], + "id": 65379, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5667:7:198", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65378, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5667:7:198", + "typeDescriptions": {} + } + }, + "id": 65381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5667:13:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 65376, + "name": "morphoLens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65158, + "src": "5636:10:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoLensV2_$53305", + "typeString": "contract IMorphoLensV2" + } + }, + "id": 65377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5647:19:198", + "memberName": "getUserHealthFactor", + "nodeType": "MemberAccess", + "referencedDeclaration": 53304, + "src": "5636:30:198", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 65382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5636:45:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5613:68:198" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 65386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 65384, + "name": "healthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65375, + "src": "5695:12:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 65385, + "name": "minimumHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65161, + "src": "5710:19:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5695:34:198", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 65390, + "nodeType": "IfStatement", + "src": "5691:97:198", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 65387, + "name": "MorphoAaveV2DebtTokenAdaptor__HealthFactorTooLow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65150, + "src": "5738:48:198", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 65388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5738:50:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 65389, + "nodeType": "RevertStatement", + "src": "5731:57:198" + } + } + ] + }, + "documentation": { + "id": 65316, + "nodeType": "StructuredDocumentation", + "src": "4681:266:198", + "text": " @notice Allows strategists to borrow assets from Aave.\n @notice `aToken` must be the aToken not the debtToken.\n @param aToken the aToken to borrow on Aave\n @param amountToBorrow the amount of `aTokenToBorrow` to borrow on Morpho." + }, + "functionSelector": "4c97ba1b", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "borrowFromAaveV2Morpho", + "nameLocation": "4961:22:198", + "parameters": { + "id": 65321, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65318, + "mutability": "mutable", + "name": "aToken", + "nameLocation": "4992:6:198", + "nodeType": "VariableDeclaration", + "scope": 65392, + "src": "4984:14:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 65317, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4984:7:198", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65320, + "mutability": "mutable", + "name": "amountToBorrow", + "nameLocation": "5008:14:198", + "nodeType": "VariableDeclaration", + "scope": 65392, + "src": "5000:22:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65319, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5000:7:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4983:40:198" + }, + "returnParameters": { + "id": 65322, + "nodeType": "ParameterList", + "parameters": [], + "src": "5031:0:198" + }, + "scope": 65497, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 65439, + "nodeType": "FunctionDefinition", + "src": "6002:381:198", + "nodes": [], + "body": { + "id": 65438, + "nodeType": "Block", + "src": "6082:301:198", + "nodes": [], + "statements": [ + { + "assignments": [ + 65403 + ], + "declarations": [ + { + "constant": false, + "id": 65403, + "mutability": "mutable", + "name": "underlying", + "nameLocation": "6098:10:198", + "nodeType": "VariableDeclaration", + "scope": 65438, + "src": "6092:16:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 65402, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 65401, + "name": "ERC20", + "nameLocations": [ + "6092:5:198" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "6092:5:198" + }, + "referencedDeclaration": 45747, + "src": "6092:5:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + } + ], + "id": 65409, + "initialValue": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 65405, + "name": "aToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65396, + "src": "6117:6:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + }, + "id": 65406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6124:24:198", + "memberName": "UNDERLYING_ASSET_ADDRESS", + "nodeType": "MemberAccess", + "referencedDeclaration": 49522, + "src": "6117:31:198", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 65407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6117:33:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 65404, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45747, + "src": "6111:5:198", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$45747_$", + "typeString": "type(contract ERC20)" + } + }, + "id": 65408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6111:40:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6092:59:198" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 65415, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65154, + "src": "6192:6:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + ], + "id": 65414, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6184:7:198", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65413, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6184:7:198", + "typeDescriptions": {} + } + }, + "id": 65416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6184:15:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 65417, + "name": "amountToRepay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65398, + "src": "6201:13:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 65410, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65403, + "src": "6161:10:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "id": 65412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6172:11:198", + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 46497, + "src": "6161:22:198", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$45747_$", + "typeString": "function (contract ERC20,address,uint256)" + } + }, + "id": 65418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6161:54:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 65419, + "nodeType": "ExpressionStatement", + "src": "6161:54:198" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 65425, + "name": "aToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65396, + "src": "6246:6:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + ], + "id": 65424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6238:7:198", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65423, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6238:7:198", + "typeDescriptions": {} + } + }, + "id": 65426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6238:15:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 65427, + "name": "amountToRepay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65398, + "src": "6255:13:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 65420, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65154, + "src": "6225:6:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + }, + "id": 65422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6232:5:198", + "memberName": "repay", + "nodeType": "MemberAccess", + "referencedDeclaration": 53386, + "src": "6225:12:198", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) external" + } + }, + "id": 65428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6225:44:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 65429, + "nodeType": "ExpressionStatement", + "src": "6225:44:198" + }, + { + "expression": { + "arguments": [ + { + "id": 65431, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65403, + "src": "6348:10:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + { + "arguments": [ + { + "id": 65434, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65154, + "src": "6368:6:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + ], + "id": 65433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6360:7:198", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65432, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6360:7:198", + "typeDescriptions": {} + } + }, + "id": 65435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6360:15:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 65430, + "name": "_revokeExternalApproval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61585, + "src": "6324:23:198", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$returns$__$", + "typeString": "function (contract ERC20,address)" + } + }, + "id": 65436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6324:52:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 65437, + "nodeType": "ExpressionStatement", + "src": "6324:52:198" + } + ] + }, + "documentation": { + "id": 65393, + "nodeType": "StructuredDocumentation", + "src": "5801:196:198", + "text": " @notice Allows strategists to repay loan debt on Aave.\n @param aToken the aToken you want to repay.\n @param amountToRepay the amount of `tokenToRepay` to repay with." + }, + "functionSelector": "106a4f2f", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "repayAaveV2MorphoDebt", + "nameLocation": "6011:21:198", + "parameters": { + "id": 65399, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65396, + "mutability": "mutable", + "name": "aToken", + "nameLocation": "6044:6:198", + "nodeType": "VariableDeclaration", + "scope": 65439, + "src": "6033:17:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + }, + "typeName": { + "id": 65395, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 65394, + "name": "IAaveToken", + "nameLocations": [ + "6033:10:198" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49523, + "src": "6033:10:198" + }, + "referencedDeclaration": 49523, + "src": "6033:10:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IAaveToken_$49523", + "typeString": "contract IAaveToken" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65398, + "mutability": "mutable", + "name": "amountToRepay", + "nameLocation": "6060:13:198", + "nodeType": "VariableDeclaration", + "scope": 65439, + "src": "6052:21:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65397, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6052:7:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6032:42:198" + }, + "returnParameters": { + "id": 65400, + "nodeType": "ParameterList", + "parameters": [], + "src": "6082:0:198" + }, + "scope": 65497, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 65496, + "nodeType": "FunctionDefinition", + "src": "6604:485:198", + "nodes": [], + "body": { + "id": 65495, + "nodeType": "Block", + "src": "6701:388:198", + "nodes": [], + "statements": [ + { + "assignments": [ + 65450, + 65452 + ], + "declarations": [ + { + "constant": false, + "id": 65450, + "mutability": "mutable", + "name": "inP2P", + "nameLocation": "6720:5:198", + "nodeType": "VariableDeclaration", + "scope": 65495, + "src": "6712:13:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65449, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6712:7:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65452, + "mutability": "mutable", + "name": "onPool", + "nameLocation": "6735:6:198", + "nodeType": "VariableDeclaration", + "scope": 65495, + "src": "6727:14:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65451, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6727:7:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 65458, + "initialValue": { + "arguments": [ + { + "id": 65455, + "name": "poolToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65442, + "src": "6770:9:198", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 65456, + "name": "user", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65444, + "src": "6781:4:198", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 65453, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65154, + "src": "6745:6:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + }, + "id": 65454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6752:17:198", + "memberName": "borrowBalanceInOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 53332, + "src": "6745:24:198", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256,uint256)" + } + }, + "id": 65457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6745:41:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6711:75:198" + }, + { + "assignments": [ + 65460 + ], + "declarations": [ + { + "constant": false, + "id": 65460, + "mutability": "mutable", + "name": "balanceInUnderlying", + "nameLocation": "6805:19:198", + "nodeType": "VariableDeclaration", + "scope": 65495, + "src": "6797:27:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65459, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6797:7:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 65461, + "nodeType": "VariableDeclarationStatement", + "src": "6797:27:198" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 65464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 65462, + "name": "inP2P", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65450, + "src": "6838:5:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 65463, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6846:1:198", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6838:9:198", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 65476, + "nodeType": "IfStatement", + "src": "6834:93:198", + "trueBody": { + "expression": { + "id": 65474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 65465, + "name": "balanceInUnderlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65460, + "src": "6849:19:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 65470, + "name": "poolToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65442, + "src": "6910:9:198", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 65468, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65154, + "src": "6888:6:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + }, + "id": 65469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6895:14:198", + "memberName": "p2pBorrowIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 53365, + "src": "6888:21:198", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view external returns (uint256)" + } + }, + "id": 65471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6888:32:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "31653237", + "id": 65472, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6922:4:198", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000000000000000000000000_by_1", + "typeString": "int_const 1000000000000000000000000000" + }, + "value": "1e27" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_1000000000000000000000000000_by_1", + "typeString": "int_const 1000000000000000000000000000" + } + ], + "expression": { + "id": 65466, + "name": "inP2P", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65450, + "src": "6871:5:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 65467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6877:10:198", + "memberName": "mulDivDown", + "nodeType": "MemberAccess", + "referencedDeclaration": 74797, + "src": "6871:16:198", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 65473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6871:56:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6849:78:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 65475, + "nodeType": "ExpressionStatement", + "src": "6849:78:198" + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 65479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 65477, + "name": "onPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65452, + "src": "6941:6:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 65478, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6950:1:198", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6941:10:198", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 65492, + "nodeType": "IfStatement", + "src": "6937:109:198", + "trueBody": { + "expression": { + "id": 65490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 65480, + "name": "balanceInUnderlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65460, + "src": "6953:19:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "arguments": [ + { + "id": 65485, + "name": "poolToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65442, + "src": "7013:9:198", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 65483, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65154, + "src": "6994:6:198", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV2_$53396", + "typeString": "contract IMorphoV2" + } + }, + "id": 65484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7001:11:198", + "memberName": "poolIndexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 53351, + "src": "6994:18:198", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_PoolIndexes_$53314_memory_ptr_$", + "typeString": "function (address) view external returns (struct IMorphoV2.PoolIndexes memory)" + } + }, + "id": 65486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6994:29:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PoolIndexes_$53314_memory_ptr", + "typeString": "struct IMorphoV2.PoolIndexes memory" + } + }, + "id": 65487, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7024:15:198", + "memberName": "poolBorrowIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 53313, + "src": "6994:45:198", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + { + "hexValue": "31653237", + "id": 65488, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7041:4:198", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000000000000000000000000_by_1", + "typeString": "int_const 1000000000000000000000000000" + }, + "value": "1e27" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + { + "typeIdentifier": "t_rational_1000000000000000000000000000_by_1", + "typeString": "int_const 1000000000000000000000000000" + } + ], + "expression": { + "id": 65481, + "name": "onPool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65452, + "src": "6976:6:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 65482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6983:10:198", + "memberName": "mulDivDown", + "nodeType": "MemberAccess", + "referencedDeclaration": 74797, + "src": "6976:17:198", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 65489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6976:70:198", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6953:93:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 65491, + "nodeType": "ExpressionStatement", + "src": "6953:93:198" + } + }, + { + "expression": { + "id": 65493, + "name": "balanceInUnderlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65460, + "src": "7063:19:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 65448, + "id": 65494, + "nodeType": "Return", + "src": "7056:26:198" + } + ] + }, + "documentation": { + "id": 65440, + "nodeType": "StructuredDocumentation", + "src": "6389:210:198", + "text": " @notice Returns the balance in underlying of debt owed.\n @param poolToken the Aave V2 a Token user has debt in\n @param user the address of the user to query their debt balance of." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_balanceOfInUnderlying", + "nameLocation": "6613:22:198", + "parameters": { + "id": 65445, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65442, + "mutability": "mutable", + "name": "poolToken", + "nameLocation": "6644:9:198", + "nodeType": "VariableDeclaration", + "scope": 65496, + "src": "6636:17:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 65441, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6636:7:198", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65444, + "mutability": "mutable", + "name": "user", + "nameLocation": "6663:4:198", + "nodeType": "VariableDeclaration", + "scope": 65496, + "src": "6655:12:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 65443, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6655:7:198", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6635:33:198" + }, + "returnParameters": { + "id": 65448, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65447, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65496, + "src": "6692:7:198", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65446, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6692:7:198", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6691:9:198" + }, + "scope": 65497, + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 65134, + "name": "BaseAdaptor", + "nameLocations": [ + "602:11:198" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 61644, + "src": "602:11:198" + }, + "id": 65135, + "nodeType": "InheritanceSpecifier", + "src": "602:11:198" + } + ], + "canonicalName": "MorphoAaveV2DebtTokenAdaptor", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 65133, + "nodeType": "StructuredDocumentation", + "src": "406:154:198", + "text": " @title Morpho Aave V2 debtToken Adaptor\n @notice Allows Cellars to interact with Morpho Aave V2 debtToken positions.\n @author crispymangoes" + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 65497, + 61644 + ], + "name": "MorphoAaveV2DebtTokenAdaptor", + "nameLocation": "570:28:198", + "scope": 65498, + "usedErrors": [ + 61379, + 61382, + 61385, + 61388, + 61393, + 61396, + 65147, + 65150 + ] + } + ], + "license": "Apache-2.0" + }, + "id": 198 +} \ No newline at end of file diff --git a/steward_abi/abi/MorphoAaveV3ATokenCollateralAdaptorV1.json b/steward_abi/abi/MorphoAaveV3ATokenCollateralAdaptorV1.json new file mode 100644 index 00000000..05d06f09 --- /dev/null +++ b/steward_abi/abi/MorphoAaveV3ATokenCollateralAdaptorV1.json @@ -0,0 +1,6249 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_morpho", + "type": "address" + }, + { + "internalType": "uint256", + "name": "minHealthFactor", + "type": "uint256" + }, + { + "internalType": "address", + "name": "rewardDistributor", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "BaseAdaptor__ConstructorHealthFactorTooLow", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__ExternalReceiverBlocked", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "BaseAdaptor__PricingNotSupported", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__Slippage", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__UserDepositsNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__UserWithdrawsNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "MorphoAaveV3ATokenCollateralAdaptor__HealthFactorTooLow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "name": "assetOf", + "outputs": [ + { + "internalType": "contract ERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "name": "assetsUsed", + "outputs": [ + { + "internalType": "contract ERC20[]", + "name": "assets", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "claimable", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "proof", + "type": "bytes32[]" + } + ], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "tokenToDeposit", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountToDeposit", + "type": "uint256" + } + ], + "name": "depositToAaveV3Morpho", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "identifier", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "isDebt", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "minimumHealthFactor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "morpho", + "outputs": [ + { + "internalType": "contract IMorphoV3", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "morphoRewardsDistributor", + "outputs": [ + { + "internalType": "contract RewardsDistributor", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "revokeApproval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "slippage", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "tokenToWithdraw", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountToWithdraw", + "type": "uint256" + } + ], + "name": "withdrawFromAaveV3Morpho", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "withdrawableFrom", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": { + "object": "0x60e06040523480156200001157600080fd5b5060405162001518380380620015188339810160408190526200003491620000ae565b6001600160a01b0381166080526200004c8262000064565b506001600160a01b0390911660a05260c052620000ef565b670e92596fd62900008110156200008e576040516397ed5f4160e01b815260040160405180910390fd5b50565b80516001600160a01b0381168114620000a957600080fd5b919050565b600080600060608486031215620000c457600080fd5b620000cf8462000091565b925060208401519150620000e66040850162000091565b90509250925092565b60805160a05160c051611390620001886000396000818161010a01526103f001526000818161025101528181610352015281816103c70152818161044f015281816104a00152818161051401528181610563015281816105b40152818161062801528181610691015281816107fe015281816108e5015281816109ab0152610a6c01526000818161018f01526102b001526113906000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80637998a1c411610097578063d3bfe76a11610066578063d3bfe76a14610239578063d8fbc8331461024c578063e170a9bf14610273578063fa50e5d21461028657600080fd5b80637998a1c4146101ef57806389353a09146101f7578063aeffddde14610206578063c9111bd71461022657600080fd5b806353cbf54c116100d357806353cbf54c146101775780635b5d4d781461018a57806369445c31146101c957806378415365146101dc57600080fd5b80631caff8b1146101055780632f52ebb71461013f57806337761272146101545780633e032a3b14610167575b600080fd5b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61015261014d366004610e3a565b610299565b005b610152610162366004610ef1565b61031f565b6040516123288152602001610136565b610152610185366004610ef1565b610434565b6101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610136565b6101526101d7366004610f8d565b61053c565b61012c6101ea366004610ffa565b610652565b61012c610705565b60405160008152602001610136565b610219610214366004610ffa565b61077a565b604051610136919061102f565b61015261023436600461107c565b6107dd565b6101526102473660046110fc565b61095d565b6101b17f000000000000000000000000000000000000000000000000000000000000000081565b6101b1610281366004610ffa565b610972565b61012c610294366004611135565b610989565b604051630f44fe1d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633d13f874906102e990309086908690600401611199565b600060405180830381600087803b15801561030357600080fd5b505af1158015610317573d6000803e3d6000fd5b505050505050565b604051632bbccf0160e01b81526001600160a01b03838116600483015260248201839052306044830181905260648301527f00000000000000000000000000000000000000000000000000000000000000001690632bbccf01906084016020604051808303816000875af115801561039b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bf91906111f6565b5060006103ec7f000000000000000000000000000000000000000000000000000000000000000030610ae4565b90507f000000000000000000000000000000000000000000000000000000000000000081101561042f57604051631976ce1360e31b815260040160405180910390fd5b505050565b61043e8282610b8e565b90506104746001600160a01b0383167f000000000000000000000000000000000000000000000000000000000000000083610c0f565b604051636c887d3360e11b81526001600160a01b038381166004830152602482018390523060448301527f0000000000000000000000000000000000000000000000000000000000000000169063d910fa66906064016020604051808303816000875af11580156104e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050d91906111f6565b50610538827f0000000000000000000000000000000000000000000000000000000000000000610c8a565b5050565b600082806020019051810190610552919061120f565b90506105886001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000086610c0f565b604051636c887d3360e11b81526001600160a01b038281166004830152602482018690523060448301527f0000000000000000000000000000000000000000000000000000000000000000169063d910fa66906064016020604051808303816000875af11580156105fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062191906111f6565b5061064c817f0000000000000000000000000000000000000000000000000000000000000000610c8a565b50505050565b60008082806020019051810190610669919061120f565b60405163e7602b9d60e01b81526001600160a01b0380831660048301523360248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063e7602b9d90604401602060405180830381865afa1580156106da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106fe91906111f6565b9392505050565b600060405160200161075f906020808252602e908201527f4d6f7270686f20416176652056332061546f6b656e20436f6c6c61746572616c60408201526d1020b230b83a37b9102b1018971960911b606082015260800190565b60405160208183030381529060405280519060200120905090565b604080516001808252818301909252606091602080830190803683370190505090506107a582610972565b816000815181106107b8576107b861122c565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b6107e683610d19565b604051631dd64f3160e21b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906377593cc490602401600060405180830381865afa15801561084d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108759190810190611242565b80519091501561089857604051635f5003c560e11b815260040160405180910390fd5b6000838060200190518101906108ae919061120f565b604051632bbccf0160e01b81526001600160a01b0380831660048301526024820189905230604483015287811660648301529192507f000000000000000000000000000000000000000000000000000000000000000090911690632bbccf01906084016020604051808303816000875af1158015610930573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095491906111f6565b50505050505050565b6105386001600160a01b038316826000610c0f565b600080828060200190518101906106fe919061120f565b604051631dd64f3160e21b815233600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906377593cc490602401600060405180830381865afa1580156109f2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a1a9190810190611242565b805190915015610a2e576000915050610ade565b600084806020019051810190610a44919061120f565b60405163e7602b9d60e01b81526001600160a01b0380831660048301523360248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063e7602b9d90604401602060405180830381865afa158015610ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad991906111f6565b925050505b92915050565b604051632459428560e11b81526001600160a01b03828116600483015260009182918516906348b2850a90602401606060405180830381865afa158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906112dc565b90506000816040015111610b6957600019610b86565b60208101516040820151610b8691670de0b6b3a764000091610db0565b949350505050565b60006000198203610c08576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610bdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0191906111f6565b9050610ade565b5080610ade565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d116001600051141617169150508061064c5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b604482015260640160405180910390fd5b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa158015610cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfe91906111f6565b1115610538576105386001600160a01b038316826000610c0f565b6001600160a01b0381163014801590610d8f5750306001600160a01b0316634c4602da6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8f9190611338565b15610dad576040516307de9b5160e21b815260040160405180910390fd5b50565b828202811515841585830485141716610dc857600080fd5b0492915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610e0e57610e0e610dcf565b604052919050565b600067ffffffffffffffff821115610e3057610e30610dcf565b5060051b60200190565b60008060408385031215610e4d57600080fd5b8235915060208084013567ffffffffffffffff811115610e6c57600080fd5b8401601f81018613610e7d57600080fd5b8035610e90610e8b82610e16565b610de5565b81815260059190911b82018301908381019088831115610eaf57600080fd5b928401925b82841015610ecd57833582529284019290840190610eb4565b80955050505050509250929050565b6001600160a01b0381168114610dad57600080fd5b60008060408385031215610f0457600080fd5b8235610f0f81610edc565b946020939093013593505050565b600082601f830112610f2e57600080fd5b813567ffffffffffffffff811115610f4857610f48610dcf565b610f5b601f8201601f1916602001610de5565b818152846020838601011115610f7057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215610fa257600080fd5b83359250602084013567ffffffffffffffff80821115610fc157600080fd5b610fcd87838801610f1d565b93506040860135915080821115610fe357600080fd5b50610ff086828701610f1d565b9150509250925092565b60006020828403121561100c57600080fd5b813567ffffffffffffffff81111561102357600080fd5b610b8684828501610f1d565b6020808252825182820181905260009190848201906040850190845b818110156110705783516001600160a01b03168352928401929184019160010161104b565b50909695505050505050565b6000806000806080858703121561109257600080fd5b8435935060208501356110a481610edc565b9250604085013567ffffffffffffffff808211156110c157600080fd5b6110cd88838901610f1d565b935060608701359150808211156110e357600080fd5b506110f087828801610f1d565b91505092959194509250565b6000806040838503121561110f57600080fd5b823561111a81610edc565b9150602083013561112a81610edc565b809150509250929050565b6000806040838503121561114857600080fd5b823567ffffffffffffffff8082111561116057600080fd5b61116c86838701610f1d565b9350602085013591508082111561118257600080fd5b5061118f85828601610f1d565b9150509250929050565b6001600160a01b038416815260208082018490526060604083018190528351908301819052600091848101916080850190845b818110156111e8578451835293830193918301916001016111cc565b509098975050505050505050565b60006020828403121561120857600080fd5b5051919050565b60006020828403121561122157600080fd5b81516106fe81610edc565b634e487b7160e01b600052603260045260246000fd5b6000602080838503121561125557600080fd5b825167ffffffffffffffff81111561126c57600080fd5b8301601f8101851361127d57600080fd5b805161128b610e8b82610e16565b81815260059190911b820183019083810190878311156112aa57600080fd5b928401925b828410156112d15783516112c281610edc565b825292840192908401906112af565b979650505050505050565b6000606082840312156112ee57600080fd5b6040516060810181811067ffffffffffffffff8211171561131157611311610dcf565b80604052508251815260208301516020820152604083015160408201528091505092915050565b60006020828403121561134a57600080fd5b815180151581146106fe57600080fdfea264697066735822122022fe2e674f50c4799da7354f6ba002f00b78639102020302980a5c158bc7557164736f6c63430008100033", + "sourceMap": "575:6593:199:-:0;;;1600:305;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;629:72:203;;;;1760:54:199::1;1798:15:::0;1760:37:::1;:54::i;:::-;-1:-1:-1::0;;;;;;1824:27:199;;::::1;;::::0;1861:37:::1;::::0;575:6593;;8743:233:188;2760:7;8847:19;:57;8843:126;;;8925:44;;-1:-1:-1;;;8925:44:188;;;;;;;;;;;8843:126;8743:233;:::o;14:177:258:-;93:13;;-1:-1:-1;;;;;135:31:258;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:354::-;284:6;292;300;353:2;341:9;332:7;328:23;324:32;321:52;;;369:1;366;359:12;321:52;392:40;422:9;392:40;:::i;:::-;382:50;;472:2;461:9;457:18;451:25;441:35;;495:49;540:2;529:9;525:18;495:49;:::i;:::-;485:59;;196:354;;;;;:::o;:::-;575:6593:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80637998a1c411610097578063d3bfe76a11610066578063d3bfe76a14610239578063d8fbc8331461024c578063e170a9bf14610273578063fa50e5d21461028657600080fd5b80637998a1c4146101ef57806389353a09146101f7578063aeffddde14610206578063c9111bd71461022657600080fd5b806353cbf54c116100d357806353cbf54c146101775780635b5d4d781461018a57806369445c31146101c957806378415365146101dc57600080fd5b80631caff8b1146101055780632f52ebb71461013f57806337761272146101545780633e032a3b14610167575b600080fd5b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61015261014d366004610e3a565b610299565b005b610152610162366004610ef1565b61031f565b6040516123288152602001610136565b610152610185366004610ef1565b610434565b6101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610136565b6101526101d7366004610f8d565b61053c565b61012c6101ea366004610ffa565b610652565b61012c610705565b60405160008152602001610136565b610219610214366004610ffa565b61077a565b604051610136919061102f565b61015261023436600461107c565b6107dd565b6101526102473660046110fc565b61095d565b6101b17f000000000000000000000000000000000000000000000000000000000000000081565b6101b1610281366004610ffa565b610972565b61012c610294366004611135565b610989565b604051630f44fe1d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633d13f874906102e990309086908690600401611199565b600060405180830381600087803b15801561030357600080fd5b505af1158015610317573d6000803e3d6000fd5b505050505050565b604051632bbccf0160e01b81526001600160a01b03838116600483015260248201839052306044830181905260648301527f00000000000000000000000000000000000000000000000000000000000000001690632bbccf01906084016020604051808303816000875af115801561039b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bf91906111f6565b5060006103ec7f000000000000000000000000000000000000000000000000000000000000000030610ae4565b90507f000000000000000000000000000000000000000000000000000000000000000081101561042f57604051631976ce1360e31b815260040160405180910390fd5b505050565b61043e8282610b8e565b90506104746001600160a01b0383167f000000000000000000000000000000000000000000000000000000000000000083610c0f565b604051636c887d3360e11b81526001600160a01b038381166004830152602482018390523060448301527f0000000000000000000000000000000000000000000000000000000000000000169063d910fa66906064016020604051808303816000875af11580156104e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050d91906111f6565b50610538827f0000000000000000000000000000000000000000000000000000000000000000610c8a565b5050565b600082806020019051810190610552919061120f565b90506105886001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000086610c0f565b604051636c887d3360e11b81526001600160a01b038281166004830152602482018690523060448301527f0000000000000000000000000000000000000000000000000000000000000000169063d910fa66906064016020604051808303816000875af11580156105fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062191906111f6565b5061064c817f0000000000000000000000000000000000000000000000000000000000000000610c8a565b50505050565b60008082806020019051810190610669919061120f565b60405163e7602b9d60e01b81526001600160a01b0380831660048301523360248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063e7602b9d90604401602060405180830381865afa1580156106da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106fe91906111f6565b9392505050565b600060405160200161075f906020808252602e908201527f4d6f7270686f20416176652056332061546f6b656e20436f6c6c61746572616c60408201526d1020b230b83a37b9102b1018971960911b606082015260800190565b60405160208183030381529060405280519060200120905090565b604080516001808252818301909252606091602080830190803683370190505090506107a582610972565b816000815181106107b8576107b861122c565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b6107e683610d19565b604051631dd64f3160e21b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906377593cc490602401600060405180830381865afa15801561084d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108759190810190611242565b80519091501561089857604051635f5003c560e11b815260040160405180910390fd5b6000838060200190518101906108ae919061120f565b604051632bbccf0160e01b81526001600160a01b0380831660048301526024820189905230604483015287811660648301529192507f000000000000000000000000000000000000000000000000000000000000000090911690632bbccf01906084016020604051808303816000875af1158015610930573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095491906111f6565b50505050505050565b6105386001600160a01b038316826000610c0f565b600080828060200190518101906106fe919061120f565b604051631dd64f3160e21b815233600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906377593cc490602401600060405180830381865afa1580156109f2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a1a9190810190611242565b805190915015610a2e576000915050610ade565b600084806020019051810190610a44919061120f565b60405163e7602b9d60e01b81526001600160a01b0380831660048301523360248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063e7602b9d90604401602060405180830381865afa158015610ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad991906111f6565b925050505b92915050565b604051632459428560e11b81526001600160a01b03828116600483015260009182918516906348b2850a90602401606060405180830381865afa158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906112dc565b90506000816040015111610b6957600019610b86565b60208101516040820151610b8691670de0b6b3a764000091610db0565b949350505050565b60006000198203610c08576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610bdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0191906111f6565b9050610ade565b5080610ade565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d116001600051141617169150508061064c5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b604482015260640160405180910390fd5b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa158015610cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfe91906111f6565b1115610538576105386001600160a01b038316826000610c0f565b6001600160a01b0381163014801590610d8f5750306001600160a01b0316634c4602da6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8f9190611338565b15610dad576040516307de9b5160e21b815260040160405180910390fd5b50565b828202811515841585830485141716610dc857600080fd5b0492915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610e0e57610e0e610dcf565b604052919050565b600067ffffffffffffffff821115610e3057610e30610dcf565b5060051b60200190565b60008060408385031215610e4d57600080fd5b8235915060208084013567ffffffffffffffff811115610e6c57600080fd5b8401601f81018613610e7d57600080fd5b8035610e90610e8b82610e16565b610de5565b81815260059190911b82018301908381019088831115610eaf57600080fd5b928401925b82841015610ecd57833582529284019290840190610eb4565b80955050505050509250929050565b6001600160a01b0381168114610dad57600080fd5b60008060408385031215610f0457600080fd5b8235610f0f81610edc565b946020939093013593505050565b600082601f830112610f2e57600080fd5b813567ffffffffffffffff811115610f4857610f48610dcf565b610f5b601f8201601f1916602001610de5565b818152846020838601011115610f7057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215610fa257600080fd5b83359250602084013567ffffffffffffffff80821115610fc157600080fd5b610fcd87838801610f1d565b93506040860135915080821115610fe357600080fd5b50610ff086828701610f1d565b9150509250925092565b60006020828403121561100c57600080fd5b813567ffffffffffffffff81111561102357600080fd5b610b8684828501610f1d565b6020808252825182820181905260009190848201906040850190845b818110156110705783516001600160a01b03168352928401929184019160010161104b565b50909695505050505050565b6000806000806080858703121561109257600080fd5b8435935060208501356110a481610edc565b9250604085013567ffffffffffffffff808211156110c157600080fd5b6110cd88838901610f1d565b935060608701359150808211156110e357600080fd5b506110f087828801610f1d565b91505092959194509250565b6000806040838503121561110f57600080fd5b823561111a81610edc565b9150602083013561112a81610edc565b809150509250929050565b6000806040838503121561114857600080fd5b823567ffffffffffffffff8082111561116057600080fd5b61116c86838701610f1d565b9350602085013591508082111561118257600080fd5b5061118f85828601610f1d565b9150509250929050565b6001600160a01b038416815260208082018490526060604083018190528351908301819052600091848101916080850190845b818110156111e8578451835293830193918301916001016111cc565b509098975050505050505050565b60006020828403121561120857600080fd5b5051919050565b60006020828403121561122157600080fd5b81516106fe81610edc565b634e487b7160e01b600052603260045260246000fd5b6000602080838503121561125557600080fd5b825167ffffffffffffffff81111561126c57600080fd5b8301601f8101851361127d57600080fd5b805161128b610e8b82610e16565b81815260059190911b820183019083810190878311156112aa57600080fd5b928401925b828410156112d15783516112c281610edc565b825292840192908401906112af565b979650505050505050565b6000606082840312156112ee57600080fd5b6040516060810181811067ffffffffffffffff8211171561131157611311610dcf565b80604052508251815260208301516020820152604083015160408201528091505092915050565b60006020828403121561134a57600080fd5b815180151581146106fe57600080fdfea264697066735822122022fe2e674f50c4799da7354f6ba002f00b78639102020302980a5c158bc7557164736f6c63430008100033", + "sourceMap": "575:6593:199:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1549:44;;;;;;;;160:25:258;;;148:2;133:18;1549:44:199;;;;;;;;902:145:203;;;;;;:::i;:::-;;:::i;:::-;;6707:459:199;;;;;;:::i;:::-;;:::i;2415:78:188:-;;;2481:5;2389:42:258;;2377:2;2362:18;2415:78:188;2245:192:258;6030:437:199;;;;;;:::i;:::-;;:::i;505:60:203:-;;;;;;;;-1:-1:-1;;;;;2634:32:258;;;2616:51;;2604:2;2589:18;505:60:203;2442:231:258;2912:436:199;;;;;;:::i;:::-;;:::i;4985:221::-;;;;;;:::i;:::-;;:::i;2324:156::-;;;:::i;5542:83::-;;;5590:4;4472:41:258;;4460:2;4445:18;5542:83:199;4332:187:258;5934:180:188;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3806:584:199:-;;;;;;:::i;:::-;;:::i;9204:107:188:-;;;;;;:::i;:::-;;:::i;1418:33:199:-;;;;;5283:175;;;;;;:::i;:::-;;:::i;4490:384::-;;;;;;:::i;:::-;;:::i;902:145:203:-;977:63;;-1:-1:-1;;;977:63:203;;-1:-1:-1;;;;;977:24:203;:30;;;;:63;;1016:4;;1023:9;;1034:5;;977:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;902:145;;:::o;6707:459:199:-;6807:99;;-1:-1:-1;;;6807:99:199;;-1:-1:-1;;;;;8466:15:258;;;6807:99:199;;;8448:34:258;8498:18;;;8491:34;;;6885:4:199;8541:18:258;;;8534:43;;;8593:18;;;8586:43;6807:6:199;:25;;;;8382:19:258;;6807:99:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6979:20;7002:43;7023:6;7039:4;7002:20;:43::i;:::-;6979:66;;7074:19;7059:12;:34;7055:104;;;7102:57;;-1:-1:-1;;;7102:57:199;;;;;;;;;;;7055:104;6797:369;6707:459;;:::o;6030:437::-;6143:46;6157:14;6173:15;6143:13;:46::i;:::-;6125:64;-1:-1:-1;6199:60:199;-1:-1:-1;;;;;6199:26:199;;6234:6;6125:64;6199:26;:60::i;:::-;6269:80;;-1:-1:-1;;;6269:80:199;;-1:-1:-1;;;;;9087:15:258;;;6269:80:199;;;9069:34:258;9119:18;;;9112:34;;;6343:4:199;9162:18:258;;;9155:43;6269:6:199;:23;;;;9004:18:258;;6269:80:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6404:56;6428:14;6452:6;6404:23;:56::i;:::-;6030:437;;:::o;2912:436::-;3048:16;3078:11;3067:32;;;;;;;;;;;;:::i;:::-;3048:51;-1:-1:-1;3109:47:199;-1:-1:-1;;;;;3109:22:199;;3140:6;3149;3109:22;:47::i;:::-;3167:67;;-1:-1:-1;;;3167:67:199;;-1:-1:-1;;;;;9087:15:258;;;3167:67:199;;;9069:34:258;9119:18;;;9112:34;;;3228:4:199;9162:18:258;;;9155:43;3167:6:199;:23;;;;9004:18:258;;3167:67:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3289:52;3313:10;3333:6;3289:23;:52::i;:::-;3001:347;2912:436;;;:::o;4985:221::-;5060:7;5079:18;5111:11;5100:34;;;;;;;;;;;;:::i;:::-;5151:48;;-1:-1:-1;;;5151:48:199;;-1:-1:-1;;;;;9988:15:258;;;5151:48:199;;;9970:34:258;5188:10:199;10020:18:258;;;10013:43;5079:55:199;;-1:-1:-1;5151:6:199;:24;;;;;;9905:18:258;;5151:48:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5144:55;4985:221;-1:-1:-1;;;4985:221:199:o;2324:156::-;2376:7;2412:60;;;;;;10269:2:258;10251:21;;;10308:2;10288:18;;;10281:30;10347:34;10342:2;10327:18;;10320:62;-1:-1:-1;;;10413:2:258;10398:18;;10391:44;10467:3;10452:19;;10067:410;2412:60:199;;;;;;;;;;;;;2402:71;;;;;;2395:78;;2324:156;:::o;5934:180:188:-;6051:14;;;6063:1;6051:14;;;;;;;;;6009:21;;6051:14;;;;;;;;;;;-1:-1:-1;6051:14:188;6042:23;;6087:20;6095:11;6087:7;:20::i;:::-;6075:6;6082:1;6075:9;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;6075:32:188;;;-1:-1:-1;;;;;6075:32:188;;;;;5934:180;;;:::o;3806:584:199:-;3964:32;3987:8;3964:22;:32::i;:::-;4084:33;;-1:-1:-1;;;4084:33:199;;4111:4;4084:33;;;2616:51:258;4057:24:199;;4084:6;-1:-1:-1;;;;;4084:18:199;;;;2589::258;;4084:33:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4084:33:199;;;;;;;;;;;;:::i;:::-;4131:14;;4057:60;;-1:-1:-1;4131:18:199;4127:69;;4158:38;;-1:-1:-1;;;4158:38:199;;;;;;;;;;;4127:69;4207:18;4239:11;4228:34;;;;;;;;;;;;:::i;:::-;4313:70;;-1:-1:-1;;;4313:70:199;;-1:-1:-1;;;;;8466:15:258;;;4313:70:199;;;8448:34:258;8498:18;;;8491:34;;;4367:4:199;8541:18:258;;;8534:43;8613:15;;;8593:18;;;8586:43;4207:55:199;;-1:-1:-1;4313:6:199;:25;;;;;;8382:19:258;;4313:70:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3914:476;;3806:584;;;;:::o;9204:107:188:-;9275:29;-1:-1:-1;;;;;9275:17:188;;9293:7;9302:1;9275:17;:29::i;5283:175:199:-;5356:5;5373:16;5403:11;5392:32;;;;;;;;;;;;:::i;4490:384::-;4632:30;;-1:-1:-1;;;4632:30:199;;4651:10;4632:30;;;2616:51:258;4586:7:199;;;;-1:-1:-1;;;;;4632:6:199;:18;;;;2589::258;;4632:30:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4632:30:199;;;;;;;;;;;;:::i;:::-;4676:14;;4605:57;;-1:-1:-1;4676:18:199;4672:196;;4703:1;4696:8;;;;;4672:196;4733:18;4765:11;4754:34;;;;;;;;;;;;:::i;:::-;4809:48;;-1:-1:-1;;;4809:48:199;;-1:-1:-1;;;;;9988:15:258;;;4809:48:199;;;9970:34:258;4846:10:199;10020:18:258;;;10013:43;4733:55:199;;-1:-1:-1;4809:6:199;:24;;;;;;9905:18:258;;4809:48:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4802:55;;;;4490:384;;;;;:::o;629:358:202:-;780:26;;-1:-1:-1;;;780:26:202;;-1:-1:-1;;;;;2634:32:258;;;780:26:202;;;2616:51:258;714:7:202;;;;780:20;;;;;2589:18:258;;780:26:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;733:73;;857:1;836:13;:18;;;:22;:144;;-1:-1:-1;;836:144:202;;;902:21;;;;925:18;;;;877:67;;885:4;;877:24;:67::i;:::-;817:163;629:358;-1:-1:-1;;;;629:358:202:o;7816:207:188:-;7899:7;-1:-1:-1;;7922:6:188;:27;7918:98;;7958:30;;-1:-1:-1;;;7958:30:188;;7982:4;7958:30;;;2616:51:258;-1:-1:-1;;;;;7958:15:188;;;;;2589:18:258;;7958:30:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7951:37;;;;7918:98;-1:-1:-1;8010:6:188;8003:13;;4327:1454:104;4438:12;4565:4;4559:11;-1:-1:-1;;;4688:17:104;4681:93;4821:2;4817:1;4798:17;4794:25;4787:37;4901:6;4896:2;4877:17;4873:26;4866:42;5703:2;5700:1;5696:2;5677:17;5674:1;5667:5;5660;5655:51;5224:16;5217:24;5211:2;5193:16;5190:24;5186:1;5182;5176:8;5173:15;5169:46;5166:76;4966:754;4955:765;;;5748:7;5740:34;;;;-1:-1:-1;;;5740:34:104;;12564:2:258;5740:34:104;;;12546:21:258;12603:2;12583:18;;;12576:30;-1:-1:-1;;;12622:18:258;;;12615:44;12676:18;;5740:34:104;;;;;;;8158:167:188;8244:39;;-1:-1:-1;;;8244:39:188;;8268:4;8244:39;;;9970:34:258;-1:-1:-1;;;;;10040:15:258;;;10020:18;;;10013:43;8286:1:188;;8244:15;;;;;;9905:18:258;;8244:39:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;8240:78;;;8289:29;-1:-1:-1;;;;;8289:17:188;;8307:7;8316:1;8289:17;:29::i;8425:218::-;-1:-1:-1;;;;;8503:25:188;;8523:4;8503:25;;;;:74;;;8547:4;-1:-1:-1;;;;;8532:43:188;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8499:137;;;8598:38;;-1:-1:-1;;;8598:38:188;;;;;;;;;;;8499:137;8425:218;:::o;1357:535:221:-;1563:9;;;1694:19;;1687:27;1719:9;;1733;;;1730:16;;1716:31;1683:65;1673:121;;1778:1;1775;1768:12;1673:121;1857:19;;1357:535;-1:-1:-1;;1357:535:221:o;196:127:258:-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:275;399:2;393:9;464:2;445:13;;-1:-1:-1;;441:27:258;429:40;;499:18;484:34;;520:22;;;481:62;478:88;;;546:18;;:::i;:::-;582:2;575:22;328:275;;-1:-1:-1;328:275:258:o;608:183::-;668:4;701:18;693:6;690:30;687:56;;;723:18;;:::i;:::-;-1:-1:-1;768:1:258;764:14;780:4;760:25;;608:183::o;796:959::-;889:6;897;950:2;938:9;929:7;925:23;921:32;918:52;;;966:1;963;956:12;918:52;1002:9;989:23;979:33;;1031:2;1084;1073:9;1069:18;1056:32;1111:18;1103:6;1100:30;1097:50;;;1143:1;1140;1133:12;1097:50;1166:22;;1219:4;1211:13;;1207:27;-1:-1:-1;1197:55:258;;1248:1;1245;1238:12;1197:55;1284:2;1271:16;1307:60;1323:43;1363:2;1323:43;:::i;:::-;1307:60;:::i;:::-;1401:15;;;1483:1;1479:10;;;;1471:19;;1467:28;;;1432:12;;;;1507:19;;;1504:39;;;1539:1;1536;1529:12;1504:39;1563:11;;;;1583:142;1599:6;1594:3;1591:15;1583:142;;;1665:17;;1653:30;;1616:12;;;;1703;;;;1583:142;;;1744:5;1734:15;;;;;;;796:959;;;;;:::o;1760:138::-;-1:-1:-1;;;;;1842:31:258;;1832:42;;1822:70;;1888:1;1885;1878:12;1903:337;1986:6;1994;2047:2;2035:9;2026:7;2022:23;2018:32;2015:52;;;2063:1;2060;2053:12;2015:52;2102:9;2089:23;2121:38;2153:5;2121:38;:::i;:::-;2178:5;2230:2;2215:18;;;;2202:32;;-1:-1:-1;;;1903:337:258:o;2678:530::-;2720:5;2773:3;2766:4;2758:6;2754:17;2750:27;2740:55;;2791:1;2788;2781:12;2740:55;2827:6;2814:20;2853:18;2849:2;2846:26;2843:52;;;2875:18;;:::i;:::-;2919:55;2962:2;2943:13;;-1:-1:-1;;2939:27:258;2968:4;2935:38;2919:55;:::i;:::-;2999:2;2990:7;2983:19;3045:3;3038:4;3033:2;3025:6;3021:15;3017:26;3014:35;3011:55;;;3062:1;3059;3052:12;3011:55;3127:2;3120:4;3112:6;3108:17;3101:4;3092:7;3088:18;3075:55;3175:1;3150:16;;;3168:4;3146:27;3139:38;;;;3154:7;2678:530;-1:-1:-1;;;2678:530:258:o;3213:607::-;3308:6;3316;3324;3377:2;3365:9;3356:7;3352:23;3348:32;3345:52;;;3393:1;3390;3383:12;3345:52;3429:9;3416:23;3406:33;;3490:2;3479:9;3475:18;3462:32;3513:18;3554:2;3546:6;3543:14;3540:34;;;3570:1;3567;3560:12;3540:34;3593:49;3634:7;3625:6;3614:9;3610:22;3593:49;:::i;:::-;3583:59;;3695:2;3684:9;3680:18;3667:32;3651:48;;3724:2;3714:8;3711:16;3708:36;;;3740:1;3737;3730:12;3708:36;;3763:51;3806:7;3795:8;3784:9;3780:24;3763:51;:::i;:::-;3753:61;;;3213:607;;;;;:::o;3825:320::-;3893:6;3946:2;3934:9;3925:7;3921:23;3917:32;3914:52;;;3962:1;3959;3952:12;3914:52;4002:9;3989:23;4035:18;4027:6;4024:30;4021:50;;;4067:1;4064;4057:12;4021:50;4090:49;4131:7;4122:6;4111:9;4107:22;4090:49;:::i;4524:673::-;4710:2;4762:21;;;4832:13;;4735:18;;;4854:22;;;4681:4;;4710:2;4933:15;;;;4907:2;4892:18;;;4681:4;4976:195;4990:6;4987:1;4984:13;4976:195;;;5055:13;;-1:-1:-1;;;;;5051:39:258;5039:52;;5146:15;;;;5111:12;;;;5087:1;5005:9;4976:195;;;-1:-1:-1;5188:3:258;;4524:673;-1:-1:-1;;;;;;4524:673:258:o;5202:750::-;5306:6;5314;5322;5330;5383:3;5371:9;5362:7;5358:23;5354:33;5351:53;;;5400:1;5397;5390:12;5351:53;5436:9;5423:23;5413:33;;5496:2;5485:9;5481:18;5468:32;5509:38;5541:5;5509:38;:::i;:::-;5566:5;-1:-1:-1;5622:2:258;5607:18;;5594:32;5645:18;5675:14;;;5672:34;;;5702:1;5699;5692:12;5672:34;5725:49;5766:7;5757:6;5746:9;5742:22;5725:49;:::i;:::-;5715:59;;5827:2;5816:9;5812:18;5799:32;5783:48;;5856:2;5846:8;5843:16;5840:36;;;5872:1;5869;5862:12;5840:36;;5895:51;5938:7;5927:8;5916:9;5912:24;5895:51;:::i;:::-;5885:61;;;5202:750;;;;;;;:::o;5957:417::-;6040:6;6048;6101:2;6089:9;6080:7;6076:23;6072:32;6069:52;;;6117:1;6114;6107:12;6069:52;6156:9;6143:23;6175:38;6207:5;6175:38;:::i;:::-;6232:5;-1:-1:-1;6289:2:258;6274:18;;6261:32;6302:40;6261:32;6302:40;:::i;:::-;6361:7;6351:17;;;5957:417;;;;;:::o;6829:539::-;6915:6;6923;6976:2;6964:9;6955:7;6951:23;6947:32;6944:52;;;6992:1;6989;6982:12;6944:52;7032:9;7019:23;7061:18;7102:2;7094:6;7091:14;7088:34;;;7118:1;7115;7108:12;7088:34;7141:49;7182:7;7173:6;7162:9;7158:22;7141:49;:::i;:::-;7131:59;;7243:2;7232:9;7228:18;7215:32;7199:48;;7272:2;7262:8;7259:16;7256:36;;;7288:1;7285;7278:12;7256:36;;7311:51;7354:7;7343:8;7332:9;7328:24;7311:51;:::i;:::-;7301:61;;;6829:539;;;;;:::o;7373:801::-;-1:-1:-1;;;;;7649:32:258;;7631:51;;7701:2;7719:18;;;7712:34;;;7619:2;7777;7762:18;;7755:30;;;7834:13;;7604:18;;;7856:22;;;7571:4;;7936:15;;;;7909:3;7894:19;;;7571:4;7979:169;7993:6;7990:1;7987:13;7979:169;;;8054:13;;8042:26;;8123:15;;;;8088:12;;;;8015:1;8008:9;7979:169;;;-1:-1:-1;8165:3:258;;7373:801;-1:-1:-1;;;;;;;;7373:801:258:o;8640:184::-;8710:6;8763:2;8751:9;8742:7;8738:23;8734:32;8731:52;;;8779:1;8776;8769:12;8731:52;-1:-1:-1;8802:16:258;;8640:184;-1:-1:-1;8640:184:258:o;9209:273::-;9294:6;9347:2;9335:9;9326:7;9322:23;9318:32;9315:52;;;9363:1;9360;9353:12;9315:52;9395:9;9389:16;9414:38;9446:5;9414:38;:::i;10482:127::-;10543:10;10538:3;10534:20;10531:1;10524:31;10574:4;10571:1;10564:15;10598:4;10595:1;10588:15;10822:963;10917:6;10948:2;10991;10979:9;10970:7;10966:23;10962:32;10959:52;;;11007:1;11004;10997:12;10959:52;11040:9;11034:16;11073:18;11065:6;11062:30;11059:50;;;11105:1;11102;11095:12;11059:50;11128:22;;11181:4;11173:13;;11169:27;-1:-1:-1;11159:55:258;;11210:1;11207;11200:12;11159:55;11239:2;11233:9;11262:60;11278:43;11318:2;11278:43;:::i;11262:60::-;11356:15;;;11438:1;11434:10;;;;11426:19;;11422:28;;;11387:12;;;;11462:19;;;11459:39;;;11494:1;11491;11484:12;11459:39;11518:11;;;;11538:217;11554:6;11549:3;11546:15;11538:217;;;11627:3;11621:10;11644:38;11676:5;11644:38;:::i;:::-;11695:18;;11571:12;;;;11733;;;;11538:217;;;11774:5;10822:963;-1:-1:-1;;;;;;;10822:963:258:o;11790:567::-;11892:6;11945:2;11933:9;11924:7;11920:23;11916:32;11913:52;;;11961:1;11958;11951:12;11913:52;11994:2;11988:9;12036:2;12028:6;12024:15;12105:6;12093:10;12090:22;12069:18;12057:10;12054:34;12051:62;12048:88;;;12116:18;;:::i;:::-;12156:10;12152:2;12145:22;;12197:9;12191:16;12183:6;12176:32;12262:2;12251:9;12247:18;12241:25;12236:2;12228:6;12224:15;12217:50;12321:2;12310:9;12306:18;12300:25;12295:2;12287:6;12283:15;12276:50;12345:6;12335:16;;;11790:567;;;;:::o;12705:277::-;12772:6;12825:2;12813:9;12804:7;12800:23;12796:32;12793:52;;;12841:1;12838;12831:12;12793:52;12873:9;12867:16;12926:5;12919:13;12912:21;12905:5;12902:32;12892:60;;12948:1;12945;12938:12", + "linkReferences": {}, + "immutableReferences": { + "65527": [ + { + "start": 593, + "length": 32 + }, + { + "start": 850, + "length": 32 + }, + { + "start": 967, + "length": 32 + }, + { + "start": 1103, + "length": 32 + }, + { + "start": 1184, + "length": 32 + }, + { + "start": 1300, + "length": 32 + }, + { + "start": 1379, + "length": 32 + }, + { + "start": 1460, + "length": 32 + }, + { + "start": 1576, + "length": 32 + }, + { + "start": 1681, + "length": 32 + }, + { + "start": 2046, + "length": 32 + }, + { + "start": 2277, + "length": 32 + }, + { + "start": 2475, + "length": 32 + }, + { + "start": 2668, + "length": 32 + } + ], + "65530": [ + { + "start": 266, + "length": 32 + }, + { + "start": 1008, + "length": 32 + } + ], + "66662": [ + { + "start": 399, + "length": 32 + }, + { + "start": 688, + "length": 32 + } + ] + } + }, + "methodIdentifiers": { + "assetOf(bytes)": "e170a9bf", + "assetsUsed(bytes)": "aeffddde", + "balanceOf(bytes)": "78415365", + "claim(uint256,bytes32[])": "2f52ebb7", + "deposit(uint256,bytes,bytes)": "69445c31", + "depositToAaveV3Morpho(address,uint256)": "53cbf54c", + "identifier()": "7998a1c4", + "isDebt()": "89353a09", + "minimumHealthFactor()": "1caff8b1", + "morpho()": "d8fbc833", + "morphoRewardsDistributor()": "5b5d4d78", + "revokeApproval(address,address)": "d3bfe76a", + "slippage()": "3e032a3b", + "withdraw(uint256,address,bytes,bytes)": "c9111bd7", + "withdrawFromAaveV3Morpho(address,uint256)": "37761272", + "withdrawableFrom(bytes,bytes)": "fa50e5d2" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_morpho\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minHealthFactor\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"rewardDistributor\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BaseAdaptor__ConstructorHealthFactorTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__ExternalReceiverBlocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"BaseAdaptor__PricingNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__Slippage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__UserDepositsNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__UserWithdrawsNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MorphoAaveV3ATokenCollateralAdaptor__HealthFactorTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"}],\"name\":\"assetOf\",\"outputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"}],\"name\":\"assetsUsed\",\"outputs\":[{\"internalType\":\"contract ERC20[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"claimable\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"tokenToDeposit\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountToDeposit\",\"type\":\"uint256\"}],\"name\":\"depositToAaveV3Morpho\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"identifier\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDebt\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumHealthFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"morpho\",\"outputs\":[{\"internalType\":\"contract IMorphoV3\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"morphoRewardsDistributor\",\"outputs\":[{\"internalType\":\"contract RewardsDistributor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"revokeApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slippage\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"tokenToWithdraw\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountToWithdraw\",\"type\":\"uint256\"}],\"name\":\"withdrawFromAaveV3Morpho\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"withdrawableFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"crispymangoes\",\"kind\":\"dev\",\"methods\":{\"deposit(uint256,bytes,bytes)\":{\"details\":\"configurationData is NOT used\",\"params\":{\"adaptorData\":\"adaptor data containing the abi encoded ERC20 token\",\"assets\":\"the amount of assets to lend on Morpho\"}},\"depositToAaveV3Morpho(address,uint256)\":{\"details\":\"Uses `_maxAvailable` helper function, see BaseAdaptor.sol\",\"params\":{\"amountToDeposit\":\"the amount of `tokenToDeposit` to lend on Morpho.\",\"tokenToDeposit\":\"the token to lend on Morpho\"}},\"identifier()\":{\"details\":\"Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this Identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult.\"},\"revokeApproval(address,address)\":{\"params\":{\"asset\":\"the ERC20 asset to revoke `spender`s approval for\",\"spender\":\"the address to revoke approval for\"}},\"withdraw(uint256,address,bytes,bytes)\":{\"details\":\"Important to verify that external receivers are allowed if receiver is not Cellar address.\",\"params\":{\"adaptorData\":\"adaptor data containing the abi encoded aToken\",\"assets\":\"the amount of assets to withdraw from Morpho\",\"receiver\":\"the address to send withdrawn assets to\"}},\"withdrawFromAaveV3Morpho(address,uint256)\":{\"params\":{\"amountToWithdraw\":\"the amount of `tokenToWithdraw` to withdraw from Morpho\",\"tokenToWithdraw\":\"the token to withdraw from Morpho.\"}}},\"title\":\"Morpho Aave V3 aToken Adaptor\",\"version\":1},\"userdoc\":{\"errors\":{\"BaseAdaptor__ConstructorHealthFactorTooLow()\":[{\"notice\":\"Attempted to set a constructor minimum health factor to a value below `MINIMUM_CONSTRUCTOR_HEALTH_FACTOR()`.\"}],\"BaseAdaptor__ExternalReceiverBlocked()\":[{\"notice\":\"Attempted to specify an external receiver during a Cellar `callOnAdaptor` call.\"}],\"BaseAdaptor__PricingNotSupported(address)\":[{\"notice\":\"Attempted swap used unsupported output asset.\"}],\"BaseAdaptor__Slippage()\":[{\"notice\":\"Attempted swap has bad slippage.\"}],\"BaseAdaptor__UserDepositsNotAllowed()\":[{\"notice\":\"Attempted to deposit to a position where user deposits were not allowed.\"}],\"BaseAdaptor__UserWithdrawsNotAllowed()\":[{\"notice\":\"Attempted to withdraw from a position where user withdraws were not allowed.\"}],\"MorphoAaveV3ATokenCollateralAdaptor__HealthFactorTooLow()\":[{\"notice\":\"Attempted withdraw would lower Cellar health factor too low.\"}]},\"kind\":\"user\",\"methods\":{\"assetOf(bytes)\":{\"notice\":\"Returns the positions underlying asset.\"},\"assetsUsed(bytes)\":{\"notice\":\"When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup.\"},\"balanceOf(bytes)\":{\"notice\":\"Returns the cellars balance of the position in terms of underlying asset.\"},\"claim(uint256,bytes32[])\":{\"notice\":\"Allows cellars to claim Morpho Rewards.\"},\"deposit(uint256,bytes,bytes)\":{\"notice\":\"Cellar must approve Morpho to spend its assets, then call supplyCollateral to lend its assets.\"},\"depositToAaveV3Morpho(address,uint256)\":{\"notice\":\"Allows strategists to lend assets on Morpho.\"},\"isDebt()\":{\"notice\":\"This adaptor returns collateral, and not debt.\"},\"minimumHealthFactor()\":{\"notice\":\"Minimum Health Factor enforced after every aToken withdraw.\"},\"morpho()\":{\"notice\":\"The Morpho Aave V3 contract on current network.For mainnet use 0x33333aea097c193e66081E930c33020272b33333.\"},\"morphoRewardsDistributor()\":{\"notice\":\"The Morpho Aave V3 rewards handler contract on current network.For mainnet use 0x3B14E5C73e0A56D607A8688098326fD4b4292135.\"},\"revokeApproval(address,address)\":{\"notice\":\"Allows strategists to zero out an approval for a given `asset`.\"},\"slippage()\":{\"notice\":\"Max possible slippage when making a swap router swap.\"},\"withdraw(uint256,address,bytes,bytes)\":{\"notice\":\"Cellars must withdraw from Morpho, check if collateral is backing any loans and prevent withdraws if so.\"},\"withdrawFromAaveV3Morpho(address,uint256)\":{\"notice\":\"Allows strategists to withdraw assets from Morpho.\"},\"withdrawableFrom(bytes,bytes)\":{\"notice\":\"Checks that cellar has no active borrows, and if so returns 0.\"}},\"notice\":\"Allows Cellars to interact with Morpho Aave V3 positions.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/adaptors/Morpho/MorphoAaveV3ATokenCollateralAdaptor.sol\":\"MorphoAaveV3ATokenCollateralAdaptor\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/\",\":@balancer/=lib/balancer-v2-monorepo/pkg/\",\":@chainlink/=lib/chainlink/\",\":@ds-test/=lib/forge-std/lib/ds-test/src/\",\":@ensdomains/=node_modules/@ensdomains/\",\":@forge-std/=lib/forge-std/src/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@solmate/=lib/solmate/src/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":@uniswapV3C/=lib/v3-core/contracts/\",\":@uniswapV3P/=lib/v3-periphery/contracts/\",\":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/\",\":balancer-v2-monorepo/=lib/balancer-v2-monorepo/\",\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\":compound-protocol/=lib/compound-protocol/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/src/\",\":v3-core.git/=lib/v3-core.git/contracts/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery.git/=lib/v3-periphery.git/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\":{\"keccak256\":\"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\",\"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\"]},\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\":{\"keccak256\":\"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\",\"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\"]},\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\",\"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol\":{\"keccak256\":\"0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf\",\"dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de\",\"dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929\",\"dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg\"]},\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\",\"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\":{\"keccak256\":\"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\",\"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\",\"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\"]},\"lib/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\",\"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\"]},\"lib/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\",\"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\"]},\"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\":{\"keccak256\":\"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\",\"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\"]},\"src/Registry.sol\":{\"keccak256\":\"0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189\",\"dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK\"]},\"src/base/Cellar.sol\":{\"keccak256\":\"0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058\",\"dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs\"]},\"src/base/ERC20.sol\":{\"keccak256\":\"0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4\",\"dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf\"]},\"src/base/ERC4626.sol\":{\"keccak256\":\"0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469\",\"dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE\"]},\"src/base/Multicall.sol\":{\"keccak256\":\"0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c\",\"dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K\"]},\"src/base/SafeTransferLib.sol\":{\"keccak256\":\"0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a\",\"dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3\"]},\"src/interfaces/IMulticall.sol\":{\"keccak256\":\"0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0\",\"dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5\"]},\"src/interfaces/external/IChainlinkAggregator.sol\":{\"keccak256\":\"0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2\",\"dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs\"]},\"src/interfaces/external/IGravity.sol\":{\"keccak256\":\"0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51\",\"dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c\"]},\"src/interfaces/external/IUniswapV2Router02.sol\":{\"keccak256\":\"0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a\",\"dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo\"]},\"src/interfaces/external/IUniswapV3Router.sol\":{\"keccak256\":\"0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd\",\"dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK\"]},\"src/interfaces/external/Morpho/IMorphoV3.sol\":{\"keccak256\":\"0xb7d9b09efb93ccd8deacb62a899512f2e8d467682158dc73e936c27aedba3dd9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6ed4d09ea863c00bad9b19e1b8bc1ab8568a5b1c972b2ef4c02901f019d58241\",\"dweb:/ipfs/Qmd4873kMieGZd4K5BuKU6eCPxmczFEQ8BqaGyVbh3YtYE\"]},\"src/interfaces/external/UniswapV3Pool.sol\":{\"keccak256\":\"0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb\",\"urls\":[\"bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9\",\"dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh\"]},\"src/modules/adaptors/BaseAdaptor.sol\":{\"keccak256\":\"0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee\",\"dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd\"]},\"src/modules/adaptors/Morpho/MorphoAaveV3ATokenCollateralAdaptor.sol\":{\"keccak256\":\"0x019df734e952225534e6ae0d75a868833a92fd54edf0e717e380b20ce44ee449\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c223a0ee330b6ea2c8af0ceb7f30ac396d52ec00f8f049e0051a97b89bfb1197\",\"dweb:/ipfs/QmTxTpwqF8osJjYeDEGVh9zoySTREFtRKoHws5ZaRvLFuK\"]},\"src/modules/adaptors/Morpho/MorphoAaveV3HealthFactorLogic.sol\":{\"keccak256\":\"0x2e5863d04838373cd7d8e5bb96105bbd170b5b99faaf7aa22b58be42d433ed9f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c246aee962bb5a21a4ee17b87b6b30b1eef98c21facd43724d3e4c972da37188\",\"dweb:/ipfs/QmWH8Aq1V9RUPCxQhdBeACy2RGxznub6J7cKE6hqK55Aoh\"]},\"src/modules/adaptors/Morpho/MorphoRewardHandler.sol\":{\"keccak256\":\"0xc1461e49dacbb75fe03a4aa08a58bec9639416d57fed6c6595ade2f343520480\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b2cc897411f203e04233ee37d60e70bed92f310df63beb5adede89009c8cfc54\",\"dweb:/ipfs/QmSgJ6xXXqRLTcmyDf5uPtd5FqLvEmuK4QQ5LBXuk5dbhp\"]},\"src/modules/price-router/Extensions/Extension.sol\":{\"keccak256\":\"0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1\",\"dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo\"]},\"src/modules/price-router/PriceRouter.sol\":{\"keccak256\":\"0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66\",\"dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K\"]},\"src/modules/swap-router/SwapRouter.sol\":{\"keccak256\":\"0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818\",\"dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr\"]},\"src/utils/Math.sol\":{\"keccak256\":\"0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312\",\"dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r\"]},\"src/utils/Uint32Array.sol\":{\"keccak256\":\"0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944\",\"dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.16+commit.07a7930e" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_morpho", + "type": "address" + }, + { + "internalType": "uint256", + "name": "minHealthFactor", + "type": "uint256" + }, + { + "internalType": "address", + "name": "rewardDistributor", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__ConstructorHealthFactorTooLow" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__ExternalReceiverBlocked" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "type": "error", + "name": "BaseAdaptor__PricingNotSupported" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__Slippage" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__UserDepositsNotAllowed" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__UserWithdrawsNotAllowed" + }, + { + "inputs": [], + "type": "error", + "name": "MorphoAaveV3ATokenCollateralAdaptor__HealthFactorTooLow" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "stateMutability": "pure", + "type": "function", + "name": "assetOf", + "outputs": [ + { + "internalType": "contract ERC20", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "assetsUsed", + "outputs": [ + { + "internalType": "contract ERC20[]", + "name": "assets", + "type": "address[]" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "claimable", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "proof", + "type": "bytes32[]" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "claim" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "deposit" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "tokenToDeposit", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountToDeposit", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "depositToAaveV3Morpho" + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "identifier", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "isDebt", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "minimumHealthFactor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "morpho", + "outputs": [ + { + "internalType": "contract IMorphoV3", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "morphoRewardsDistributor", + "outputs": [ + { + "internalType": "contract RewardsDistributor", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "revokeApproval" + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "slippage", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "withdraw" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "tokenToWithdraw", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountToWithdraw", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "withdrawFromAaveV3Morpho" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "withdrawableFrom", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "deposit(uint256,bytes,bytes)": { + "details": "configurationData is NOT used", + "params": { + "adaptorData": "adaptor data containing the abi encoded ERC20 token", + "assets": "the amount of assets to lend on Morpho" + } + }, + "depositToAaveV3Morpho(address,uint256)": { + "details": "Uses `_maxAvailable` helper function, see BaseAdaptor.sol", + "params": { + "amountToDeposit": "the amount of `tokenToDeposit` to lend on Morpho.", + "tokenToDeposit": "the token to lend on Morpho" + } + }, + "identifier()": { + "details": "Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this Identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult." + }, + "revokeApproval(address,address)": { + "params": { + "asset": "the ERC20 asset to revoke `spender`s approval for", + "spender": "the address to revoke approval for" + } + }, + "withdraw(uint256,address,bytes,bytes)": { + "details": "Important to verify that external receivers are allowed if receiver is not Cellar address.", + "params": { + "adaptorData": "adaptor data containing the abi encoded aToken", + "assets": "the amount of assets to withdraw from Morpho", + "receiver": "the address to send withdrawn assets to" + } + }, + "withdrawFromAaveV3Morpho(address,uint256)": { + "params": { + "amountToWithdraw": "the amount of `tokenToWithdraw` to withdraw from Morpho", + "tokenToWithdraw": "the token to withdraw from Morpho." + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "assetOf(bytes)": { + "notice": "Returns the positions underlying asset." + }, + "assetsUsed(bytes)": { + "notice": "When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup." + }, + "balanceOf(bytes)": { + "notice": "Returns the cellars balance of the position in terms of underlying asset." + }, + "claim(uint256,bytes32[])": { + "notice": "Allows cellars to claim Morpho Rewards." + }, + "deposit(uint256,bytes,bytes)": { + "notice": "Cellar must approve Morpho to spend its assets, then call supplyCollateral to lend its assets." + }, + "depositToAaveV3Morpho(address,uint256)": { + "notice": "Allows strategists to lend assets on Morpho." + }, + "isDebt()": { + "notice": "This adaptor returns collateral, and not debt." + }, + "minimumHealthFactor()": { + "notice": "Minimum Health Factor enforced after every aToken withdraw." + }, + "morpho()": { + "notice": "The Morpho Aave V3 contract on current network.For mainnet use 0x33333aea097c193e66081E930c33020272b33333." + }, + "morphoRewardsDistributor()": { + "notice": "The Morpho Aave V3 rewards handler contract on current network.For mainnet use 0x3B14E5C73e0A56D607A8688098326fD4b4292135." + }, + "revokeApproval(address,address)": { + "notice": "Allows strategists to zero out an approval for a given `asset`." + }, + "slippage()": { + "notice": "Max possible slippage when making a swap router swap." + }, + "withdraw(uint256,address,bytes,bytes)": { + "notice": "Cellars must withdraw from Morpho, check if collateral is backing any loans and prevent withdraws if so." + }, + "withdrawFromAaveV3Morpho(address,uint256)": { + "notice": "Allows strategists to withdraw assets from Morpho." + }, + "withdrawableFrom(bytes,bytes)": { + "notice": "Checks that cellar has no active borrows, and if so returns 0." + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + ":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/", + ":@balancer/=lib/balancer-v2-monorepo/pkg/", + ":@chainlink/=lib/chainlink/", + ":@ds-test/=lib/forge-std/lib/ds-test/src/", + ":@ensdomains/=node_modules/@ensdomains/", + ":@forge-std/=lib/forge-std/src/", + ":@openzeppelin/=lib/openzeppelin-contracts/", + ":@solmate/=lib/solmate/src/", + ":@uniswap/v3-core/=lib/v3-core/", + ":@uniswap/v3-periphery/=lib/v3-periphery/", + ":@uniswapV3C/=lib/v3-core/contracts/", + ":@uniswapV3P/=lib/v3-periphery/contracts/", + ":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/", + ":balancer-v2-monorepo/=lib/balancer-v2-monorepo/", + ":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/", + ":compound-protocol/=lib/compound-protocol/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":eth-gas-reporter/=node_modules/eth-gas-reporter/", + ":forge-std/=lib/forge-std/src/", + ":hardhat/=node_modules/hardhat/", + ":openzeppelin-contracts/=lib/openzeppelin-contracts/", + ":solmate/=lib/solmate/src/", + ":v3-core.git/=lib/v3-core.git/contracts/", + ":v3-core/=lib/v3-core/contracts/", + ":v3-periphery.git/=lib/v3-periphery.git/contracts/", + ":v3-periphery/=lib/v3-periphery/contracts/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/modules/adaptors/Morpho/MorphoAaveV3ATokenCollateralAdaptor.sol": "MorphoAaveV3ATokenCollateralAdaptor" + }, + "libraries": {} + }, + "sources": { + "lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol": { + "keccak256": "0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7", + "urls": [ + "bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465", + "dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a" + ], + "license": "MIT" + }, + "lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol": { + "keccak256": "0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2", + "urls": [ + "bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b", + "dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG" + ], + "license": "MIT" + }, + "lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol": { + "keccak256": "0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846", + "urls": [ + "bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7", + "dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { + "keccak256": "0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673", + "urls": [ + "bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2", + "dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol": { + "keccak256": "0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da", + "urls": [ + "bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708", + "dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol": { + "keccak256": "0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028", + "urls": [ + "bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf", + "dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Address.sol": { + "keccak256": "0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700", + "urls": [ + "bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de", + "dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Context.sol": { + "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", + "urls": [ + "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", + "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol": { + "keccak256": "0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb", + "urls": [ + "bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929", + "dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg" + ], + "license": "MIT" + }, + "lib/solmate/src/auth/Owned.sol": { + "keccak256": "0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea", + "urls": [ + "bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4", + "dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx" + ], + "license": "AGPL-3.0-only" + }, + "lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol": { + "keccak256": "0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968", + "urls": [ + "bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e", + "dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol": { + "keccak256": "0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634", + "urls": [ + "bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5", + "dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol": { + "keccak256": "0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5", + "urls": [ + "bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7", + "dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol": { + "keccak256": "0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b", + "urls": [ + "bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa", + "dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol": { + "keccak256": "0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd", + "urls": [ + "bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03", + "dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol": { + "keccak256": "0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7", + "urls": [ + "bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047", + "dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol": { + "keccak256": "0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235", + "urls": [ + "bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735", + "dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol": { + "keccak256": "0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43", + "urls": [ + "bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea", + "dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/libraries/FullMath.sol": { + "keccak256": "0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645", + "urls": [ + "bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125", + "dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd" + ], + "license": "MIT" + }, + "lib/v3-core/contracts/libraries/TickMath.sol": { + "keccak256": "0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129", + "urls": [ + "bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c", + "dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-periphery/contracts/libraries/OracleLibrary.sol": { + "keccak256": "0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b", + "urls": [ + "bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53", + "dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM" + ], + "license": "GPL-2.0-or-later" + }, + "src/Registry.sol": { + "keccak256": "0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47", + "urls": [ + "bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189", + "dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK" + ], + "license": "Apache-2.0" + }, + "src/base/Cellar.sol": { + "keccak256": "0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47", + "urls": [ + "bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058", + "dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs" + ], + "license": "Apache-2.0" + }, + "src/base/ERC20.sol": { + "keccak256": "0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02", + "urls": [ + "bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4", + "dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf" + ], + "license": "AGPL-3.0-only" + }, + "src/base/ERC4626.sol": { + "keccak256": "0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7", + "urls": [ + "bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469", + "dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE" + ], + "license": "AGPL-3.0-only" + }, + "src/base/Multicall.sol": { + "keccak256": "0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9", + "urls": [ + "bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c", + "dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K" + ], + "license": "GPL-2.0-or-later" + }, + "src/base/SafeTransferLib.sol": { + "keccak256": "0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324", + "urls": [ + "bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a", + "dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3" + ], + "license": "AGPL-3.0-only" + }, + "src/interfaces/IMulticall.sol": { + "keccak256": "0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e", + "urls": [ + "bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0", + "dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5" + ], + "license": "GPL-2.0-or-later" + }, + "src/interfaces/external/IChainlinkAggregator.sol": { + "keccak256": "0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d", + "urls": [ + "bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2", + "dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/IGravity.sol": { + "keccak256": "0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11", + "urls": [ + "bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51", + "dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/IUniswapV2Router02.sol": { + "keccak256": "0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f", + "urls": [ + "bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a", + "dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/IUniswapV3Router.sol": { + "keccak256": "0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355", + "urls": [ + "bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd", + "dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK" + ], + "license": "GPL-2.0-or-later" + }, + "src/interfaces/external/Morpho/IMorphoV3.sol": { + "keccak256": "0xb7d9b09efb93ccd8deacb62a899512f2e8d467682158dc73e936c27aedba3dd9", + "urls": [ + "bzz-raw://6ed4d09ea863c00bad9b19e1b8bc1ab8568a5b1c972b2ef4c02901f019d58241", + "dweb:/ipfs/Qmd4873kMieGZd4K5BuKU6eCPxmczFEQ8BqaGyVbh3YtYE" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/UniswapV3Pool.sol": { + "keccak256": "0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb", + "urls": [ + "bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9", + "dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh" + ], + "license": null + }, + "src/modules/adaptors/BaseAdaptor.sol": { + "keccak256": "0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c", + "urls": [ + "bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee", + "dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd" + ], + "license": "Apache-2.0" + }, + "src/modules/adaptors/Morpho/MorphoAaveV3ATokenCollateralAdaptor.sol": { + "keccak256": "0x019df734e952225534e6ae0d75a868833a92fd54edf0e717e380b20ce44ee449", + "urls": [ + "bzz-raw://c223a0ee330b6ea2c8af0ceb7f30ac396d52ec00f8f049e0051a97b89bfb1197", + "dweb:/ipfs/QmTxTpwqF8osJjYeDEGVh9zoySTREFtRKoHws5ZaRvLFuK" + ], + "license": "Apache-2.0" + }, + "src/modules/adaptors/Morpho/MorphoAaveV3HealthFactorLogic.sol": { + "keccak256": "0x2e5863d04838373cd7d8e5bb96105bbd170b5b99faaf7aa22b58be42d433ed9f", + "urls": [ + "bzz-raw://c246aee962bb5a21a4ee17b87b6b30b1eef98c21facd43724d3e4c972da37188", + "dweb:/ipfs/QmWH8Aq1V9RUPCxQhdBeACy2RGxznub6J7cKE6hqK55Aoh" + ], + "license": "Apache-2.0" + }, + "src/modules/adaptors/Morpho/MorphoRewardHandler.sol": { + "keccak256": "0xc1461e49dacbb75fe03a4aa08a58bec9639416d57fed6c6595ade2f343520480", + "urls": [ + "bzz-raw://b2cc897411f203e04233ee37d60e70bed92f310df63beb5adede89009c8cfc54", + "dweb:/ipfs/QmSgJ6xXXqRLTcmyDf5uPtd5FqLvEmuK4QQ5LBXuk5dbhp" + ], + "license": "Apache-2.0" + }, + "src/modules/price-router/Extensions/Extension.sol": { + "keccak256": "0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d", + "urls": [ + "bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1", + "dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo" + ], + "license": "Apache-2.0" + }, + "src/modules/price-router/PriceRouter.sol": { + "keccak256": "0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9", + "urls": [ + "bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66", + "dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K" + ], + "license": "Apache-2.0" + }, + "src/modules/swap-router/SwapRouter.sol": { + "keccak256": "0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80", + "urls": [ + "bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818", + "dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr" + ], + "license": "Apache-2.0" + }, + "src/utils/Math.sol": { + "keccak256": "0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f", + "urls": [ + "bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312", + "dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r" + ], + "license": "Apache-2.0" + }, + "src/utils/Uint32Array.sol": { + "keccak256": "0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9", + "urls": [ + "bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944", + "dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3" + ], + "license": "Apache-2.0" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/modules/adaptors/Morpho/MorphoAaveV3ATokenCollateralAdaptor.sol", + "id": 65891, + "exportedSymbols": { + "BaseAdaptor": [ + 61644 + ], + "ERC20": [ + 45747 + ], + "IMorphoV3": [ + 53563 + ], + "MorphoAaveV3ATokenCollateralAdaptor": [ + 65890 + ], + "MorphoAaveV3HealthFactorLogic": [ + 66644 + ], + "MorphoRewardHandler": [ + 66696 + ], + "SafeTransferLib": [ + 46498 + ] + }, + "nodeType": "SourceUnit", + "src": "39:7130:199", + "nodes": [ + { + "id": 65499, + "nodeType": "PragmaDirective", + "src": "39:23:199", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".16" + ] + }, + { + "id": 65503, + "nodeType": "ImportDirective", + "src": "64:91:199", + "nodes": [], + "absolutePath": "src/modules/adaptors/BaseAdaptor.sol", + "file": "src/modules/adaptors/BaseAdaptor.sol", + "nameLocation": "-1:-1:-1", + "scope": 65891, + "sourceUnit": 61645, + "symbolAliases": [ + { + "foreign": { + "id": 65500, + "name": "BaseAdaptor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61644, + "src": "73:11:199", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 65501, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45747, + "src": "86:5:199", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 65502, + "name": "SafeTransferLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46498, + "src": "93:15:199", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 65505, + "nodeType": "ImportDirective", + "src": "156:73:199", + "nodes": [], + "absolutePath": "src/interfaces/external/Morpho/IMorphoV3.sol", + "file": "src/interfaces/external/Morpho/IMorphoV3.sol", + "nameLocation": "-1:-1:-1", + "scope": 65891, + "sourceUnit": 53564, + "symbolAliases": [ + { + "foreign": { + "id": 65504, + "name": "IMorphoV3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 53563, + "src": "165:9:199", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 65507, + "nodeType": "ImportDirective", + "src": "230:90:199", + "nodes": [], + "absolutePath": "src/modules/adaptors/Morpho/MorphoRewardHandler.sol", + "file": "src/modules/adaptors/Morpho/MorphoRewardHandler.sol", + "nameLocation": "-1:-1:-1", + "scope": 65891, + "sourceUnit": 66697, + "symbolAliases": [ + { + "foreign": { + "id": 65506, + "name": "MorphoRewardHandler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66696, + "src": "239:19:199", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 65509, + "nodeType": "ImportDirective", + "src": "321:110:199", + "nodes": [], + "absolutePath": "src/modules/adaptors/Morpho/MorphoAaveV3HealthFactorLogic.sol", + "file": "src/modules/adaptors/Morpho/MorphoAaveV3HealthFactorLogic.sol", + "nameLocation": "-1:-1:-1", + "scope": 65891, + "sourceUnit": 66645, + "symbolAliases": [ + { + "foreign": { + "id": 65508, + "name": "MorphoAaveV3HealthFactorLogic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66644, + "src": "330:29:199", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 65890, + "nodeType": "ContractDefinition", + "src": "575:6593:199", + "nodes": [ + { + "id": 65520, + "nodeType": "UsingForDirective", + "src": "693:32:199", + "nodes": [], + "global": false, + "libraryName": { + "id": 65517, + "name": "SafeTransferLib", + "nameLocations": [ + "699:15:199" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46498, + "src": "699:15:199" + }, + "typeName": { + "id": 65519, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 65518, + "name": "ERC20", + "nameLocations": [ + "719:5:199" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "719:5:199" + }, + "referencedDeclaration": 45747, + "src": "719:5:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + } + }, + { + "id": 65523, + "nodeType": "ErrorDefinition", + "src": "1194:64:199", + "nodes": [], + "documentation": { + "id": 65521, + "nodeType": "StructuredDocumentation", + "src": "1104:85:199", + "text": "@notice Attempted withdraw would lower Cellar health factor too low." + }, + "errorSelector": "cbb67098", + "name": "MorphoAaveV3ATokenCollateralAdaptor__HealthFactorTooLow", + "nameLocation": "1200:55:199", + "parameters": { + "id": 65522, + "nodeType": "ParameterList", + "parameters": [], + "src": "1255:2:199" + } + }, + { + "id": 65527, + "nodeType": "VariableDeclaration", + "src": "1418:33:199", + "nodes": [], + "constant": false, + "documentation": { + "id": 65524, + "nodeType": "StructuredDocumentation", + "src": "1264:149:199", + "text": " @notice The Morpho Aave V3 contract on current network.\n @notice For mainnet use 0x33333aea097c193e66081E930c33020272b33333." + }, + "functionSelector": "d8fbc833", + "mutability": "immutable", + "name": "morpho", + "nameLocation": "1445:6:199", + "scope": 65890, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + }, + "typeName": { + "id": 65526, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 65525, + "name": "IMorphoV3", + "nameLocations": [ + "1418:9:199" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 53563, + "src": "1418:9:199" + }, + "referencedDeclaration": 53563, + "src": "1418:9:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "visibility": "public" + }, + { + "id": 65530, + "nodeType": "VariableDeclaration", + "src": "1549:44:199", + "nodes": [], + "constant": false, + "documentation": { + "id": 65528, + "nodeType": "StructuredDocumentation", + "src": "1458:86:199", + "text": " @notice Minimum Health Factor enforced after every aToken withdraw." + }, + "functionSelector": "1caff8b1", + "mutability": "immutable", + "name": "minimumHealthFactor", + "nameLocation": "1574:19:199", + "scope": 65890, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65529, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1549:7:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "id": 65557, + "nodeType": "FunctionDefinition", + "src": "1600:305:199", + "nodes": [], + "body": { + "id": 65556, + "nodeType": "Block", + "src": "1750:155:199", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 65543, + "name": "minHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65534, + "src": "1798:15:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 65542, + "name": "_verifyConstructorMinimumHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61626, + "src": "1760:37:199", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 65544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1760:54:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 65545, + "nodeType": "ExpressionStatement", + "src": "1760:54:199" + }, + { + "expression": { + "id": 65550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 65546, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65527, + "src": "1824:6:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 65548, + "name": "_morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65532, + "src": "1843:7:199", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 65547, + "name": "IMorphoV3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 53563, + "src": "1833:9:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IMorphoV3_$53563_$", + "typeString": "type(contract IMorphoV3)" + } + }, + "id": 65549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1833:18:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "src": "1824:27:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "id": 65551, + "nodeType": "ExpressionStatement", + "src": "1824:27:199" + }, + { + "expression": { + "id": 65554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 65552, + "name": "minimumHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65530, + "src": "1861:19:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 65553, + "name": "minHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65534, + "src": "1883:15:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1861:37:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 65555, + "nodeType": "ExpressionStatement", + "src": "1861:37:199" + } + ] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 65539, + "name": "rewardDistributor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65536, + "src": "1731:17:199", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 65540, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 65538, + "name": "MorphoRewardHandler", + "nameLocations": [ + "1711:19:199" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 66696, + "src": "1711:19:199" + }, + "nodeType": "ModifierInvocation", + "src": "1711:38:199" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 65537, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65532, + "mutability": "mutable", + "name": "_morpho", + "nameLocation": "1629:7:199", + "nodeType": "VariableDeclaration", + "scope": 65557, + "src": "1621:15:199", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 65531, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1621:7:199", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65534, + "mutability": "mutable", + "name": "minHealthFactor", + "nameLocation": "1654:15:199", + "nodeType": "VariableDeclaration", + "scope": 65557, + "src": "1646:23:199", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65533, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1646:7:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65536, + "mutability": "mutable", + "name": "rewardDistributor", + "nameLocation": "1687:17:199", + "nodeType": "VariableDeclaration", + "scope": 65557, + "src": "1679:25:199", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 65535, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1679:7:199", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1611:99:199" + }, + "returnParameters": { + "id": 65541, + "nodeType": "ParameterList", + "parameters": [], + "src": "1750:0:199" + }, + "scope": 65890, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 65572, + "nodeType": "FunctionDefinition", + "src": "2324:156:199", + "nodes": [], + "body": { + "id": 65571, + "nodeType": "Block", + "src": "2385:95:199", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "4d6f7270686f20416176652056332061546f6b656e20436f6c6c61746572616c2041646170746f72205620312e32", + "id": 65567, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2423:48:199", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_766a65b86580aba38320cc8670ef1305de9d8a9d7928b7fb434318bb57e0185b", + "typeString": "literal_string \"Morpho Aave V3 aToken Collateral Adaptor V 1.2\"" + }, + "value": "Morpho Aave V3 aToken Collateral Adaptor V 1.2" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_766a65b86580aba38320cc8670ef1305de9d8a9d7928b7fb434318bb57e0185b", + "typeString": "literal_string \"Morpho Aave V3 aToken Collateral Adaptor V 1.2\"" + } + ], + "expression": { + "id": 65565, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2412:3:199", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 65566, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2416:6:199", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "2412:10:199", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 65568, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2412:60:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 65564, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2402:9:199", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 65569, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2402:71:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 65563, + "id": 65570, + "nodeType": "Return", + "src": "2395:78:199" + } + ] + }, + "baseFunctions": [ + 61410 + ], + "documentation": { + "id": 65558, + "nodeType": "StructuredDocumentation", + "src": "2023:296:199", + "text": " @dev Identifier unique to this adaptor for a shared registry.\n Normally the identifier would just be the address of this contract, but this\n Identifier is needed during Cellar Delegate Call Operations, so getting the address\n of the adaptor is more difficult." + }, + "functionSelector": "7998a1c4", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "identifier", + "nameLocation": "2333:10:199", + "overrides": { + "id": 65560, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2358:8:199" + }, + "parameters": { + "id": 65559, + "nodeType": "ParameterList", + "parameters": [], + "src": "2343:2:199" + }, + "returnParameters": { + "id": 65563, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65562, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65572, + "src": "2376:7:199", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 65561, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2376:7:199", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2375:9:199" + }, + "scope": 65890, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 65626, + "nodeType": "FunctionDefinition", + "src": "2912:436:199", + "nodes": [], + "body": { + "id": 65625, + "nodeType": "Block", + "src": "3001:347:199", + "nodes": [], + "statements": [ + { + "assignments": [ + 65585 + ], + "declarations": [ + { + "constant": false, + "id": 65585, + "mutability": "mutable", + "name": "underlying", + "nameLocation": "3054:10:199", + "nodeType": "VariableDeclaration", + "scope": 65625, + "src": "3048:16:199", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 65584, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 65583, + "name": "ERC20", + "nameLocations": [ + "3048:5:199" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "3048:5:199" + }, + "referencedDeclaration": 45747, + "src": "3048:5:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + } + ], + "id": 65592, + "initialValue": { + "arguments": [ + { + "id": 65588, + "name": "adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65577, + "src": "3078:11:199", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 65589, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45747, + "src": "3092:5:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$45747_$", + "typeString": "type(contract ERC20)" + } + } + ], + "id": 65590, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3091:7:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$45747_$", + "typeString": "type(contract ERC20)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_contract$_ERC20_$45747_$", + "typeString": "type(contract ERC20)" + } + ], + "expression": { + "id": 65586, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3067:3:199", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 65587, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3071:6:199", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "3067:10:199", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 65591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3067:32:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3048:51:199" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 65598, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65527, + "src": "3140:6:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + ], + "id": 65597, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3132:7:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65596, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3132:7:199", + "typeDescriptions": {} + } + }, + "id": 65599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3132:15:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 65600, + "name": "assets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65575, + "src": "3149:6:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 65593, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65585, + "src": "3109:10:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "id": 65595, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3120:11:199", + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 46497, + "src": "3109:22:199", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$45747_$", + "typeString": "function (contract ERC20,address,uint256)" + } + }, + "id": 65601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3109:47:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 65602, + "nodeType": "ExpressionStatement", + "src": "3109:47:199" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 65608, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65585, + "src": "3199:10:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + ], + "id": 65607, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3191:7:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65606, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3191:7:199", + "typeDescriptions": {} + } + }, + "id": 65609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3191:19:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 65610, + "name": "assets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65575, + "src": "3212:6:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 65613, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3228:4:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890", + "typeString": "contract MorphoAaveV3ATokenCollateralAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890", + "typeString": "contract MorphoAaveV3ATokenCollateralAdaptor" + } + ], + "id": 65612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3220:7:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65611, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3220:7:199", + "typeDescriptions": {} + } + }, + "id": 65614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3220:13:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 65603, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65527, + "src": "3167:6:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "id": 65605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3174:16:199", + "memberName": "supplyCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 53534, + "src": "3167:23:199", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,uint256,address) external returns (uint256)" + } + }, + "id": 65615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3167:67:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 65616, + "nodeType": "ExpressionStatement", + "src": "3167:67:199" + }, + { + "expression": { + "arguments": [ + { + "id": 65618, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65585, + "src": "3313:10:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + { + "arguments": [ + { + "id": 65621, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65527, + "src": "3333:6:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + ], + "id": 65620, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3325:7:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65619, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3325:7:199", + "typeDescriptions": {} + } + }, + "id": 65622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3325:15:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 65617, + "name": "_revokeExternalApproval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61585, + "src": "3289:23:199", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$returns$__$", + "typeString": "function (contract ERC20,address)" + } + }, + "id": 65623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3289:52:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 65624, + "nodeType": "ExpressionStatement", + "src": "3289:52:199" + } + ] + }, + "baseFunctions": [ + 61454 + ], + "documentation": { + "id": 65573, + "nodeType": "StructuredDocumentation", + "src": "2606:301:199", + "text": " @notice Cellar must approve Morpho to spend its assets, then call supplyCollateral to lend its assets.\n @param assets the amount of assets to lend on Morpho\n @param adaptorData adaptor data containing the abi encoded ERC20 token\n @dev configurationData is NOT used" + }, + "functionSelector": "69445c31", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deposit", + "nameLocation": "2921:7:199", + "overrides": { + "id": 65581, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2992:8:199" + }, + "parameters": { + "id": 65580, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65575, + "mutability": "mutable", + "name": "assets", + "nameLocation": "2937:6:199", + "nodeType": "VariableDeclaration", + "scope": 65626, + "src": "2929:14:199", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65574, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2929:7:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65577, + "mutability": "mutable", + "name": "adaptorData", + "nameLocation": "2958:11:199", + "nodeType": "VariableDeclaration", + "scope": 65626, + "src": "2945:24:199", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 65576, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2945:5:199", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65579, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65626, + "src": "2971:12:199", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 65578, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2971:5:199", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2928:56:199" + }, + "returnParameters": { + "id": 65582, + "nodeType": "ParameterList", + "parameters": [], + "src": "3001:0:199" + }, + "scope": 65890, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 65687, + "nodeType": "FunctionDefinition", + "src": "3806:584:199", + "nodes": [], + "body": { + "id": 65686, + "nodeType": "Block", + "src": "3914:476:199", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 65640, + "name": "receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65631, + "src": "3987:8:199", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 65639, + "name": "_externalReceiverCheck", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61611, + "src": "3964:22:199", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$", + "typeString": "function (address) view" + } + }, + "id": 65641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3964:32:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 65642, + "nodeType": "ExpressionStatement", + "src": "3964:32:199" + }, + { + "assignments": [ + 65647 + ], + "declarations": [ + { + "constant": false, + "id": 65647, + "mutability": "mutable", + "name": "borrows", + "nameLocation": "4074:7:199", + "nodeType": "VariableDeclaration", + "scope": 65686, + "src": "4057:24:199", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 65645, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4057:7:199", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 65646, + "nodeType": "ArrayTypeName", + "src": "4057:9:199", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "id": 65655, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 65652, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4111:4:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890", + "typeString": "contract MorphoAaveV3ATokenCollateralAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890", + "typeString": "contract MorphoAaveV3ATokenCollateralAdaptor" + } + ], + "id": 65651, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4103:7:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65650, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4103:7:199", + "typeDescriptions": {} + } + }, + "id": 65653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4103:13:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 65648, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65527, + "src": "4084:6:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "id": 65649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4091:11:199", + "memberName": "userBorrows", + "nodeType": "MemberAccess", + "referencedDeclaration": 53421, + "src": "4084:18:199", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function (address) view external returns (address[] memory)" + } + }, + "id": 65654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4084:33:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4057:60:199" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 65659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 65656, + "name": "borrows", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65647, + "src": "4131:7:199", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 65657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4139:6:199", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4131:14:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 65658, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4148:1:199", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4131:18:199", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 65663, + "nodeType": "IfStatement", + "src": "4127:69:199", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 65660, + "name": "BaseAdaptor__UserWithdrawsNotAllowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61385, + "src": "4158:36:199", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 65661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4158:38:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 65662, + "nodeType": "RevertStatement", + "src": "4151:45:199" + } + }, + { + "assignments": [ + 65665 + ], + "declarations": [ + { + "constant": false, + "id": 65665, + "mutability": "mutable", + "name": "underlying", + "nameLocation": "4215:10:199", + "nodeType": "VariableDeclaration", + "scope": 65686, + "src": "4207:18:199", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 65664, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4207:7:199", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 65673, + "initialValue": { + "arguments": [ + { + "id": 65668, + "name": "adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65633, + "src": "4239:11:199", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 65670, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4253:7:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65669, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4253:7:199", + "typeDescriptions": {} + } + } + ], + "id": 65671, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4252:9:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + ], + "expression": { + "id": 65666, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4228:3:199", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 65667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4232:6:199", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "4228:10:199", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 65672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4228:34:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4207:55:199" + }, + { + "expression": { + "arguments": [ + { + "id": 65677, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65665, + "src": "4339:10:199", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 65678, + "name": "assets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65629, + "src": "4351:6:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 65681, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4367:4:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890", + "typeString": "contract MorphoAaveV3ATokenCollateralAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890", + "typeString": "contract MorphoAaveV3ATokenCollateralAdaptor" + } + ], + "id": 65680, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4359:7:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65679, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4359:7:199", + "typeDescriptions": {} + } + }, + "id": 65682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4359:13:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 65683, + "name": "receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65631, + "src": "4374:8:199", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 65674, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65527, + "src": "4313:6:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "id": 65676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4320:18:199", + "memberName": "withdrawCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 53562, + "src": "4313:25:199", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,uint256,address,address) external returns (uint256)" + } + }, + "id": 65684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4313:70:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 65685, + "nodeType": "ExpressionStatement", + "src": "4313:70:199" + } + ] + }, + "baseFunctions": [ + 61466 + ], + "documentation": { + "id": 65627, + "nodeType": "StructuredDocumentation", + "src": "3354:447:199", + "text": "@notice Cellars must withdraw from Morpho, check if collateral is backing any loans\n and prevent withdraws if so.\n @dev Important to verify that external receivers are allowed if receiver is not Cellar address.\n @param assets the amount of assets to withdraw from Morpho\n @param receiver the address to send withdrawn assets to\n @param adaptorData adaptor data containing the abi encoded aToken" + }, + "functionSelector": "c9111bd7", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nameLocation": "3815:8:199", + "overrides": { + "id": 65637, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3905:8:199" + }, + "parameters": { + "id": 65636, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65629, + "mutability": "mutable", + "name": "assets", + "nameLocation": "3832:6:199", + "nodeType": "VariableDeclaration", + "scope": 65687, + "src": "3824:14:199", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65628, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3824:7:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65631, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "3848:8:199", + "nodeType": "VariableDeclaration", + "scope": 65687, + "src": "3840:16:199", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 65630, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3840:7:199", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65633, + "mutability": "mutable", + "name": "adaptorData", + "nameLocation": "3871:11:199", + "nodeType": "VariableDeclaration", + "scope": 65687, + "src": "3858:24:199", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 65632, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3858:5:199", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65635, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65687, + "src": "3884:12:199", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 65634, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3884:5:199", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3823:74:199" + }, + "returnParameters": { + "id": 65638, + "nodeType": "ParameterList", + "parameters": [], + "src": "3914:0:199" + }, + "scope": 65890, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 65735, + "nodeType": "FunctionDefinition", + "src": "4490:384:199", + "nodes": [], + "body": { + "id": 65734, + "nodeType": "Block", + "src": "4595:279:199", + "nodes": [], + "statements": [ + { + "assignments": [ + 65702 + ], + "declarations": [ + { + "constant": false, + "id": 65702, + "mutability": "mutable", + "name": "borrows", + "nameLocation": "4622:7:199", + "nodeType": "VariableDeclaration", + "scope": 65734, + "src": "4605:24:199", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 65700, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4605:7:199", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 65701, + "nodeType": "ArrayTypeName", + "src": "4605:9:199", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "id": 65708, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 65705, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4651:3:199", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 65706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4655:6:199", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4651:10:199", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 65703, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65527, + "src": "4632:6:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "id": 65704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4639:11:199", + "memberName": "userBorrows", + "nodeType": "MemberAccess", + "referencedDeclaration": 53421, + "src": "4632:18:199", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$", + "typeString": "function (address) view external returns (address[] memory)" + } + }, + "id": 65707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4632:30:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4605:57:199" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 65712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 65709, + "name": "borrows", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65702, + "src": "4676:7:199", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 65710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4684:6:199", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4676:14:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 65711, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4693:1:199", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4676:18:199", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 65732, + "nodeType": "Block", + "src": "4719:149:199", + "statements": [ + { + "assignments": [ + 65716 + ], + "declarations": [ + { + "constant": false, + "id": 65716, + "mutability": "mutable", + "name": "underlying", + "nameLocation": "4741:10:199", + "nodeType": "VariableDeclaration", + "scope": 65732, + "src": "4733:18:199", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 65715, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4733:7:199", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 65724, + "initialValue": { + "arguments": [ + { + "id": 65719, + "name": "adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65690, + "src": "4765:11:199", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 65721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4779:7:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65720, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4779:7:199", + "typeDescriptions": {} + } + } + ], + "id": 65722, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4778:9:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + ], + "expression": { + "id": 65717, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4754:3:199", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 65718, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4758:6:199", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "4754:10:199", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 65723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4754:34:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4733:55:199" + }, + { + "expression": { + "arguments": [ + { + "id": 65727, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65716, + "src": "4834:10:199", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 65728, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4846:3:199", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 65729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4850:6:199", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4846:10:199", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 65725, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65527, + "src": "4809:6:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "id": 65726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4816:17:199", + "memberName": "collateralBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 53430, + "src": "4809:24:199", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 65730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4809:48:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 65697, + "id": 65731, + "nodeType": "Return", + "src": "4802:55:199" + } + ] + }, + "id": 65733, + "nodeType": "IfStatement", + "src": "4672:196:199", + "trueBody": { + "expression": { + "hexValue": "30", + "id": 65713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4703:1:199", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 65697, + "id": 65714, + "nodeType": "Return", + "src": "4696:8:199" + } + } + ] + }, + "baseFunctions": [ + 61484 + ], + "documentation": { + "id": 65688, + "nodeType": "StructuredDocumentation", + "src": "4396:89:199", + "text": " @notice Checks that cellar has no active borrows, and if so returns 0." + }, + "functionSelector": "fa50e5d2", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawableFrom", + "nameLocation": "4499:16:199", + "overrides": { + "id": 65694, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4568:8:199" + }, + "parameters": { + "id": 65693, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65690, + "mutability": "mutable", + "name": "adaptorData", + "nameLocation": "4529:11:199", + "nodeType": "VariableDeclaration", + "scope": 65735, + "src": "4516:24:199", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 65689, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4516:5:199", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65692, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65735, + "src": "4542:12:199", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 65691, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4542:5:199", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4515:40:199" + }, + "returnParameters": { + "id": 65697, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65696, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65735, + "src": "4586:7:199", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65695, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4586:7:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4585:9:199" + }, + "scope": 65890, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "id": 65762, + "nodeType": "FunctionDefinition", + "src": "4985:221:199", + "nodes": [], + "body": { + "id": 65761, + "nodeType": "Block", + "src": "5069:137:199", + "nodes": [], + "statements": [ + { + "assignments": [ + 65745 + ], + "declarations": [ + { + "constant": false, + "id": 65745, + "mutability": "mutable", + "name": "underlying", + "nameLocation": "5087:10:199", + "nodeType": "VariableDeclaration", + "scope": 65761, + "src": "5079:18:199", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 65744, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5079:7:199", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 65753, + "initialValue": { + "arguments": [ + { + "id": 65748, + "name": "adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65738, + "src": "5111:11:199", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 65750, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5125:7:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65749, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5125:7:199", + "typeDescriptions": {} + } + } + ], + "id": 65751, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5124:9:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + ], + "expression": { + "id": 65746, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5100:3:199", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 65747, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5104:6:199", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "5100:10:199", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 65752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5100:34:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5079:55:199" + }, + { + "expression": { + "arguments": [ + { + "id": 65756, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65745, + "src": "5176:10:199", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 65757, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "5188:3:199", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 65758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5192:6:199", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5188:10:199", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 65754, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65527, + "src": "5151:6:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "id": 65755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5158:17:199", + "memberName": "collateralBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 53430, + "src": "5151:24:199", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 65759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5151:48:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 65743, + "id": 65760, + "nodeType": "Return", + "src": "5144:55:199" + } + ] + }, + "baseFunctions": [ + 61474 + ], + "documentation": { + "id": 65736, + "nodeType": "StructuredDocumentation", + "src": "4880:100:199", + "text": " @notice Returns the cellars balance of the position in terms of underlying asset." + }, + "functionSelector": "78415365", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "4994:9:199", + "overrides": { + "id": 65740, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5042:8:199" + }, + "parameters": { + "id": 65739, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65738, + "mutability": "mutable", + "name": "adaptorData", + "nameLocation": "5017:11:199", + "nodeType": "VariableDeclaration", + "scope": 65762, + "src": "5004:24:199", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 65737, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5004:5:199", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5003:26:199" + }, + "returnParameters": { + "id": 65743, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65742, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65762, + "src": "5060:7:199", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65741, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5060:7:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5059:9:199" + }, + "scope": 65890, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "id": 65785, + "nodeType": "FunctionDefinition", + "src": "5283:175:199", + "nodes": [], + "body": { + "id": 65784, + "nodeType": "Block", + "src": "5363:95:199", + "nodes": [], + "statements": [ + { + "assignments": [ + 65774 + ], + "declarations": [ + { + "constant": false, + "id": 65774, + "mutability": "mutable", + "name": "underlying", + "nameLocation": "5379:10:199", + "nodeType": "VariableDeclaration", + "scope": 65784, + "src": "5373:16:199", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 65773, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 65772, + "name": "ERC20", + "nameLocations": [ + "5373:5:199" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "5373:5:199" + }, + "referencedDeclaration": 45747, + "src": "5373:5:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + } + ], + "id": 65781, + "initialValue": { + "arguments": [ + { + "id": 65777, + "name": "adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65765, + "src": "5403:11:199", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 65778, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45747, + "src": "5417:5:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$45747_$", + "typeString": "type(contract ERC20)" + } + } + ], + "id": 65779, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5416:7:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$45747_$", + "typeString": "type(contract ERC20)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_contract$_ERC20_$45747_$", + "typeString": "type(contract ERC20)" + } + ], + "expression": { + "id": 65775, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5392:3:199", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 65776, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5396:6:199", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "5392:10:199", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 65780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5392:32:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5373:51:199" + }, + { + "expression": { + "id": 65782, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65774, + "src": "5441:10:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "functionReturnParameters": 65771, + "id": 65783, + "nodeType": "Return", + "src": "5434:17:199" + } + ] + }, + "baseFunctions": [ + 61493 + ], + "documentation": { + "id": 65763, + "nodeType": "StructuredDocumentation", + "src": "5212:66:199", + "text": " @notice Returns the positions underlying asset." + }, + "functionSelector": "e170a9bf", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "assetOf", + "nameLocation": "5292:7:199", + "overrides": { + "id": 65767, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5338:8:199" + }, + "parameters": { + "id": 65766, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65765, + "mutability": "mutable", + "name": "adaptorData", + "nameLocation": "5313:11:199", + "nodeType": "VariableDeclaration", + "scope": 65785, + "src": "5300:24:199", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 65764, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5300:5:199", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5299:26:199" + }, + "returnParameters": { + "id": 65771, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65770, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65785, + "src": "5356:5:199", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 65769, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 65768, + "name": "ERC20", + "nameLocations": [ + "5356:5:199" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "5356:5:199" + }, + "referencedDeclaration": 45747, + "src": "5356:5:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + } + ], + "src": "5355:7:199" + }, + "scope": 65890, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 65795, + "nodeType": "FunctionDefinition", + "src": "5542:83:199", + "nodes": [], + "body": { + "id": 65794, + "nodeType": "Block", + "src": "5596:29:199", + "nodes": [], + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 65792, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5613:5:199", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 65791, + "id": 65793, + "nodeType": "Return", + "src": "5606:12:199" + } + ] + }, + "baseFunctions": [ + 61527 + ], + "documentation": { + "id": 65786, + "nodeType": "StructuredDocumentation", + "src": "5464:73:199", + "text": " @notice This adaptor returns collateral, and not debt." + }, + "functionSelector": "89353a09", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isDebt", + "nameLocation": "5551:6:199", + "overrides": { + "id": 65788, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5572:8:199" + }, + "parameters": { + "id": 65787, + "nodeType": "ParameterList", + "parameters": [], + "src": "5557:2:199" + }, + "returnParameters": { + "id": 65791, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65790, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65795, + "src": "5590:4:199", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 65789, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5590:4:199", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5589:6:199" + }, + "scope": 65890, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 65844, + "nodeType": "FunctionDefinition", + "src": "6030:437:199", + "nodes": [], + "body": { + "id": 65843, + "nodeType": "Block", + "src": "6115:352:199", + "nodes": [], + "statements": [ + { + "expression": { + "id": 65809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 65804, + "name": "amountToDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65801, + "src": "6125:15:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 65806, + "name": "tokenToDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65799, + "src": "6157:14:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + { + "id": 65807, + "name": "amountToDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65801, + "src": "6173:15:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 65805, + "name": "_maxAvailable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61557, + "src": "6143:13:199", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_ERC20_$45747_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (contract ERC20,uint256) view returns (uint256)" + } + }, + "id": 65808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6143:46:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6125:64:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 65810, + "nodeType": "ExpressionStatement", + "src": "6125:64:199" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 65816, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65527, + "src": "6234:6:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + ], + "id": 65815, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6226:7:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65814, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6226:7:199", + "typeDescriptions": {} + } + }, + "id": 65817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6226:15:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 65818, + "name": "amountToDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65801, + "src": "6243:15:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 65811, + "name": "tokenToDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65799, + "src": "6199:14:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "id": 65813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6214:11:199", + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 46497, + "src": "6199:26:199", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$45747_$", + "typeString": "function (contract ERC20,address,uint256)" + } + }, + "id": 65819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6199:60:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 65820, + "nodeType": "ExpressionStatement", + "src": "6199:60:199" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 65826, + "name": "tokenToDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65799, + "src": "6301:14:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + ], + "id": 65825, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6293:7:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65824, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6293:7:199", + "typeDescriptions": {} + } + }, + "id": 65827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6293:23:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 65828, + "name": "amountToDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65801, + "src": "6318:15:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 65831, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "6343:4:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890", + "typeString": "contract MorphoAaveV3ATokenCollateralAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890", + "typeString": "contract MorphoAaveV3ATokenCollateralAdaptor" + } + ], + "id": 65830, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6335:7:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65829, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6335:7:199", + "typeDescriptions": {} + } + }, + "id": 65832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6335:13:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 65821, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65527, + "src": "6269:6:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "id": 65823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6276:16:199", + "memberName": "supplyCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 53534, + "src": "6269:23:199", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,uint256,address) external returns (uint256)" + } + }, + "id": 65833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6269:80:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 65834, + "nodeType": "ExpressionStatement", + "src": "6269:80:199" + }, + { + "expression": { + "arguments": [ + { + "id": 65836, + "name": "tokenToDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65799, + "src": "6428:14:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + { + "arguments": [ + { + "id": 65839, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65527, + "src": "6452:6:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + ], + "id": 65838, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6444:7:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65837, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6444:7:199", + "typeDescriptions": {} + } + }, + "id": 65840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6444:15:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 65835, + "name": "_revokeExternalApproval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61585, + "src": "6404:23:199", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$returns$__$", + "typeString": "function (contract ERC20,address)" + } + }, + "id": 65841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6404:56:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 65842, + "nodeType": "ExpressionStatement", + "src": "6404:56:199" + } + ] + }, + "documentation": { + "id": 65796, + "nodeType": "StructuredDocumentation", + "src": "5747:278:199", + "text": " @notice Allows strategists to lend assets on Morpho.\n @dev Uses `_maxAvailable` helper function, see BaseAdaptor.sol\n @param tokenToDeposit the token to lend on Morpho\n @param amountToDeposit the amount of `tokenToDeposit` to lend on Morpho." + }, + "functionSelector": "53cbf54c", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "depositToAaveV3Morpho", + "nameLocation": "6039:21:199", + "parameters": { + "id": 65802, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65799, + "mutability": "mutable", + "name": "tokenToDeposit", + "nameLocation": "6067:14:199", + "nodeType": "VariableDeclaration", + "scope": 65844, + "src": "6061:20:199", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 65798, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 65797, + "name": "ERC20", + "nameLocations": [ + "6061:5:199" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "6061:5:199" + }, + "referencedDeclaration": 45747, + "src": "6061:5:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65801, + "mutability": "mutable", + "name": "amountToDeposit", + "nameLocation": "6091:15:199", + "nodeType": "VariableDeclaration", + "scope": 65844, + "src": "6083:23:199", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65800, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6083:7:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6060:47:199" + }, + "returnParameters": { + "id": 65803, + "nodeType": "ParameterList", + "parameters": [], + "src": "6115:0:199" + }, + "scope": 65890, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 65889, + "nodeType": "FunctionDefinition", + "src": "6707:459:199", + "nodes": [], + "body": { + "id": 65888, + "nodeType": "Block", + "src": "6797:369:199", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 65858, + "name": "tokenToWithdraw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65848, + "src": "6841:15:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + ], + "id": 65857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6833:7:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65856, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6833:7:199", + "typeDescriptions": {} + } + }, + "id": 65859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6833:24:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 65860, + "name": "amountToWithdraw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65850, + "src": "6859:16:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 65863, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "6885:4:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890", + "typeString": "contract MorphoAaveV3ATokenCollateralAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890", + "typeString": "contract MorphoAaveV3ATokenCollateralAdaptor" + } + ], + "id": 65862, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6877:7:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65861, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6877:7:199", + "typeDescriptions": {} + } + }, + "id": 65864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6877:13:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 65867, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "6900:4:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890", + "typeString": "contract MorphoAaveV3ATokenCollateralAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890", + "typeString": "contract MorphoAaveV3ATokenCollateralAdaptor" + } + ], + "id": 65866, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6892:7:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65865, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6892:7:199", + "typeDescriptions": {} + } + }, + "id": 65868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6892:13:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 65853, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65527, + "src": "6807:6:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "id": 65855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6814:18:199", + "memberName": "withdrawCollateral", + "nodeType": "MemberAccess", + "referencedDeclaration": 53562, + "src": "6807:25:199", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,uint256,address,address) external returns (uint256)" + } + }, + "id": 65869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6807:99:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 65870, + "nodeType": "ExpressionStatement", + "src": "6807:99:199" + }, + { + "assignments": [ + 65872 + ], + "declarations": [ + { + "constant": false, + "id": 65872, + "mutability": "mutable", + "name": "healthFactor", + "nameLocation": "6987:12:199", + "nodeType": "VariableDeclaration", + "scope": 65888, + "src": "6979:20:199", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65871, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6979:7:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 65880, + "initialValue": { + "arguments": [ + { + "id": 65874, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65527, + "src": "7023:6:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + { + "arguments": [ + { + "id": 65877, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "7039:4:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890", + "typeString": "contract MorphoAaveV3ATokenCollateralAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890", + "typeString": "contract MorphoAaveV3ATokenCollateralAdaptor" + } + ], + "id": 65876, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7031:7:199", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65875, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7031:7:199", + "typeDescriptions": {} + } + }, + "id": 65878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7031:13:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 65873, + "name": "_getUserHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66643, + "src": "7002:20:199", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IMorphoV3_$53563_$_t_address_$returns$_t_uint256_$", + "typeString": "function (contract IMorphoV3,address) view returns (uint256)" + } + }, + "id": 65879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7002:43:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6979:66:199" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 65883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 65881, + "name": "healthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65872, + "src": "7059:12:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 65882, + "name": "minimumHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65530, + "src": "7074:19:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7059:34:199", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 65887, + "nodeType": "IfStatement", + "src": "7055:104:199", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 65884, + "name": "MorphoAaveV3ATokenCollateralAdaptor__HealthFactorTooLow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65523, + "src": "7102:55:199", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 65885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7102:57:199", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 65886, + "nodeType": "RevertStatement", + "src": "7095:64:199" + } + } + ] + }, + "documentation": { + "id": 65845, + "nodeType": "StructuredDocumentation", + "src": "6473:229:199", + "text": " @notice Allows strategists to withdraw assets from Morpho.\n @param tokenToWithdraw the token to withdraw from Morpho.\n @param amountToWithdraw the amount of `tokenToWithdraw` to withdraw from Morpho" + }, + "functionSelector": "37761272", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawFromAaveV3Morpho", + "nameLocation": "6716:24:199", + "parameters": { + "id": 65851, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65848, + "mutability": "mutable", + "name": "tokenToWithdraw", + "nameLocation": "6747:15:199", + "nodeType": "VariableDeclaration", + "scope": 65889, + "src": "6741:21:199", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 65847, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 65846, + "name": "ERC20", + "nameLocations": [ + "6741:5:199" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "6741:5:199" + }, + "referencedDeclaration": 45747, + "src": "6741:5:199", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65850, + "mutability": "mutable", + "name": "amountToWithdraw", + "nameLocation": "6772:16:199", + "nodeType": "VariableDeclaration", + "scope": 65889, + "src": "6764:24:199", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65849, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6764:7:199", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6740:49:199" + }, + "returnParameters": { + "id": 65852, + "nodeType": "ParameterList", + "parameters": [], + "src": "6797:0:199" + }, + "scope": 65890, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 65511, + "name": "BaseAdaptor", + "nameLocations": [ + "623:11:199" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 61644, + "src": "623:11:199" + }, + "id": 65512, + "nodeType": "InheritanceSpecifier", + "src": "623:11:199" + }, + { + "baseName": { + "id": 65513, + "name": "MorphoRewardHandler", + "nameLocations": [ + "636:19:199" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 66696, + "src": "636:19:199" + }, + "id": 65514, + "nodeType": "InheritanceSpecifier", + "src": "636:19:199" + }, + { + "baseName": { + "id": 65515, + "name": "MorphoAaveV3HealthFactorLogic", + "nameLocations": [ + "657:29:199" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 66644, + "src": "657:29:199" + }, + "id": 65516, + "nodeType": "InheritanceSpecifier", + "src": "657:29:199" + } + ], + "canonicalName": "MorphoAaveV3ATokenCollateralAdaptor", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 65510, + "nodeType": "StructuredDocumentation", + "src": "433:141:199", + "text": " @title Morpho Aave V3 aToken Adaptor\n @notice Allows Cellars to interact with Morpho Aave V3 positions.\n @author crispymangoes" + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 65890, + 66644, + 66696, + 61644 + ], + "name": "MorphoAaveV3ATokenCollateralAdaptor", + "nameLocation": "584:35:199", + "scope": 65891, + "usedErrors": [ + 61379, + 61382, + 61385, + 61388, + 61393, + 61396, + 65523 + ] + } + ], + "license": "Apache-2.0" + }, + "id": 199 +} \ No newline at end of file diff --git a/steward_abi/abi/MorphoAaveV3ATokenP2PAdaptorV1.json b/steward_abi/abi/MorphoAaveV3ATokenP2PAdaptorV1.json new file mode 100644 index 00000000..735ca57b --- /dev/null +++ b/steward_abi/abi/MorphoAaveV3ATokenP2PAdaptorV1.json @@ -0,0 +1,6208 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_morpho", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardDistributor", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "BaseAdaptor__ConstructorHealthFactorTooLow", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__ExternalReceiverBlocked", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "BaseAdaptor__PricingNotSupported", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__Slippage", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__UserDepositsNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__UserWithdrawsNotAllowed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "name": "assetOf", + "outputs": [ + { + "internalType": "contract ERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "name": "assetsUsed", + "outputs": [ + { + "internalType": "contract ERC20[]", + "name": "assets", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "claimable", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "proof", + "type": "bytes32[]" + } + ], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "configurationData", + "type": "bytes" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "tokenToDeposit", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountToDeposit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxIterations", + "type": "uint256" + } + ], + "name": "depositToAaveV3Morpho", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "identifier", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "isDebt", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "morpho", + "outputs": [ + { + "internalType": "contract IMorphoV3", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "morphoRewardsDistributor", + "outputs": [ + { + "internalType": "contract RewardsDistributor", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "revokeApproval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "slippage", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "configurationData", + "type": "bytes" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "tokenToWithdraw", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountToWithdraw", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxIterations", + "type": "uint256" + } + ], + "name": "withdrawFromAaveV3Morpho", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "withdrawableFrom", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": { + "object": "0x60c060405234801561001057600080fd5b5060405161116238038061116283398101604081905261002f91610062565b6001600160a01b039081166080521660a052610095565b80516001600160a01b038116811461005d57600080fd5b919050565b6000806040838503121561007557600080fd5b61007e83610046565b915061008c60208401610046565b90509250929050565b60805160a05161105b6101076000396000818161021f0152818161033d015281816103d70152818161045d015281816104d10152818161053b0152818161064e015281816106a60152818161071a0152818161081b015261090201526000818161013c015261027e015261105b6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80637ca4c4b711610097578063d3bfe76a11610066578063d3bfe76a14610207578063d8fbc8331461021a578063e170a9bf14610241578063fa50e5d21461025457600080fd5b80637ca4c4b7146101b257806389353a09146101c5578063aeffddde146101d4578063c9111bd7146101f457600080fd5b80635b5d4d78116100d35780635b5d4d781461013757806369445c311461017657806378415365146101895780637998a1c4146101aa57600080fd5b80632f52ebb7146100fa57806335340a271461010f5780633e032a3b14610122575b600080fd5b61010d610108366004610be2565b610267565b005b61010d61011d366004610ca9565b6102ed565b60405161232881526020015b60405180910390f35b61015e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161012e565b61010d610184366004610d4e565b6103b0565b61019c610197366004610dbb565b6104fc565b60405190815260200161012e565b61019c6105af565b61010d6101c0366004610ca9565b61061d565b6040516000815260200161012e565b6101e76101e2366004610dbb565b610743565b60405161012e9190610df0565b61010d610202366004610e3d565b6107a6565b61010d610215366004610ebd565b610893565b61015e7f000000000000000000000000000000000000000000000000000000000000000081565b61015e61024f366004610dbb565b6108ac565b61019c610262366004610ef6565b6108c3565b604051630f44fe1d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633d13f874906102b790309086908690600401610f5a565b600060405180830381600087803b1580156102d157600080fd5b505af11580156102e5573d6000803e3d6000fd5b505050505050565b8015806102fa5750600a81115b15610303575060045b604051632a80f8e360e11b81526001600160a01b0384811660048301526024820184905230604483018190526064830152608482018390527f00000000000000000000000000000000000000000000000000000000000000001690635501f1c69060a4016020604051808303816000875af1158015610386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103aa9190610fb7565b50505050565b6000828060200190518101906103c69190610fd0565b90506103fc6001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000086610979565b6000828060200190518101906104129190610fb7565b90508015806104215750600a81115b1561042a575060045b604051633a71cd6760e21b81526001600160a01b03838116600483015260248201879052306044830152606482018390527f0000000000000000000000000000000000000000000000000000000000000000169063e9c7359c906084016020604051808303816000875af11580156104a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ca9190610fb7565b506104f5827f00000000000000000000000000000000000000000000000000000000000000006109f4565b5050505050565b600080828060200190518101906105139190610fd0565b6040516351e2e5b960e11b81526001600160a01b0380831660048301523360248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a3c5cb7290604401602060405180830381865afa158015610584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a89190610fb7565b9392505050565b60006040516020016106029060208082526027908201527f4d6f7270686f20416176652056332061546f6b656e205032502041646170746f60408201526639102b1018971960c91b606082015260800190565b60405160208183030381529060405280519060200120905090565b80158061062a5750600a81115b15610633575060045b61063d8383610a83565b91506106736001600160a01b0384167f000000000000000000000000000000000000000000000000000000000000000084610979565b604051633a71cd6760e21b81526001600160a01b03848116600483015260248201849052306044830152606482018390527f0000000000000000000000000000000000000000000000000000000000000000169063e9c7359c906084016020604051808303816000875af11580156106ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107139190610fb7565b5061073e837f00000000000000000000000000000000000000000000000000000000000000006109f4565b505050565b6040805160018082528183019092526060916020808301908036833701905050905061076e826108ac565b8160008151811061078157610781610fed565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b6107af83610b04565b6000828060200190518101906107c59190610fd0565b90506000828060200190518101906107dd9190610fb7565b604051632a80f8e360e11b81526001600160a01b038481166004830152602482018990523060448301528781166064830152608482018390529192507f000000000000000000000000000000000000000000000000000000000000000090911690635501f1c69060a4016020604051808303816000875af1158015610866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088a9190610fb7565b50505050505050565b6108a86001600160a01b038316826000610979565b5050565b600080828060200190518101906105a89190610fd0565b600080838060200190518101906108da9190610fd0565b6040516351e2e5b960e11b81526001600160a01b0380831660048301523360248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a3c5cb7290604401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610fb7565b9150505b92915050565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806103aa5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b604482015260640160405180910390fd5b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa158015610a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a689190610fb7565b11156108a8576108a86001600160a01b038316826000610979565b60006000198203610afd576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af69190610fb7565b9050610973565b5080610973565b6001600160a01b0381163014801590610b7a5750306001600160a01b0316634c4602da6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a9190611003565b15610b98576040516307de9b5160e21b815260040160405180910390fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610bda57610bda610b9b565b604052919050565b60008060408385031215610bf557600080fd5b8235915060208084013567ffffffffffffffff80821115610c1557600080fd5b818601915086601f830112610c2957600080fd5b813581811115610c3b57610c3b610b9b565b8060051b9150610c4c848301610bb1565b8181529183018401918481019089841115610c6657600080fd5b938501935b83851015610c8457843582529385019390850190610c6b565b8096505050505050509250929050565b6001600160a01b0381168114610b9857600080fd5b600080600060608486031215610cbe57600080fd5b8335610cc981610c94565b95602085013595506040909401359392505050565b600082601f830112610cef57600080fd5b813567ffffffffffffffff811115610d0957610d09610b9b565b610d1c601f8201601f1916602001610bb1565b818152846020838601011115610d3157600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215610d6357600080fd5b83359250602084013567ffffffffffffffff80821115610d8257600080fd5b610d8e87838801610cde565b93506040860135915080821115610da457600080fd5b50610db186828701610cde565b9150509250925092565b600060208284031215610dcd57600080fd5b813567ffffffffffffffff811115610de457600080fd5b61096f84828501610cde565b6020808252825182820181905260009190848201906040850190845b81811015610e315783516001600160a01b031683529284019291840191600101610e0c565b50909695505050505050565b60008060008060808587031215610e5357600080fd5b843593506020850135610e6581610c94565b9250604085013567ffffffffffffffff80821115610e8257600080fd5b610e8e88838901610cde565b93506060870135915080821115610ea457600080fd5b50610eb187828801610cde565b91505092959194509250565b60008060408385031215610ed057600080fd5b8235610edb81610c94565b91506020830135610eeb81610c94565b809150509250929050565b60008060408385031215610f0957600080fd5b823567ffffffffffffffff80821115610f2157600080fd5b610f2d86838701610cde565b93506020850135915080821115610f4357600080fd5b50610f5085828601610cde565b9150509250929050565b6001600160a01b038416815260208082018490526060604083018190528351908301819052600091848101916080850190845b81811015610fa957845183529383019391830191600101610f8d565b509098975050505050505050565b600060208284031215610fc957600080fd5b5051919050565b600060208284031215610fe257600080fd5b81516105a881610c94565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561101557600080fd5b815180151581146105a857600080fdfea264697066735822122035c4efd5c6303e30507a76738adbf547094bc900853feea9ef41338e39d574c564736f6c63430008100033", + "sourceMap": "464:6629:200:-:0;;;1444:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;629:72:203;;;;;1549:27:200::1;;::::0;464:6629;;14:177:258;93:13;;-1:-1:-1;;;;;135:31:258;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;:::-;464:6629:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80637ca4c4b711610097578063d3bfe76a11610066578063d3bfe76a14610207578063d8fbc8331461021a578063e170a9bf14610241578063fa50e5d21461025457600080fd5b80637ca4c4b7146101b257806389353a09146101c5578063aeffddde146101d4578063c9111bd7146101f457600080fd5b80635b5d4d78116100d35780635b5d4d781461013757806369445c311461017657806378415365146101895780637998a1c4146101aa57600080fd5b80632f52ebb7146100fa57806335340a271461010f5780633e032a3b14610122575b600080fd5b61010d610108366004610be2565b610267565b005b61010d61011d366004610ca9565b6102ed565b60405161232881526020015b60405180910390f35b61015e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161012e565b61010d610184366004610d4e565b6103b0565b61019c610197366004610dbb565b6104fc565b60405190815260200161012e565b61019c6105af565b61010d6101c0366004610ca9565b61061d565b6040516000815260200161012e565b6101e76101e2366004610dbb565b610743565b60405161012e9190610df0565b61010d610202366004610e3d565b6107a6565b61010d610215366004610ebd565b610893565b61015e7f000000000000000000000000000000000000000000000000000000000000000081565b61015e61024f366004610dbb565b6108ac565b61019c610262366004610ef6565b6108c3565b604051630f44fe1d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633d13f874906102b790309086908690600401610f5a565b600060405180830381600087803b1580156102d157600080fd5b505af11580156102e5573d6000803e3d6000fd5b505050505050565b8015806102fa5750600a81115b15610303575060045b604051632a80f8e360e11b81526001600160a01b0384811660048301526024820184905230604483018190526064830152608482018390527f00000000000000000000000000000000000000000000000000000000000000001690635501f1c69060a4016020604051808303816000875af1158015610386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103aa9190610fb7565b50505050565b6000828060200190518101906103c69190610fd0565b90506103fc6001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000086610979565b6000828060200190518101906104129190610fb7565b90508015806104215750600a81115b1561042a575060045b604051633a71cd6760e21b81526001600160a01b03838116600483015260248201879052306044830152606482018390527f0000000000000000000000000000000000000000000000000000000000000000169063e9c7359c906084016020604051808303816000875af11580156104a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ca9190610fb7565b506104f5827f00000000000000000000000000000000000000000000000000000000000000006109f4565b5050505050565b600080828060200190518101906105139190610fd0565b6040516351e2e5b960e11b81526001600160a01b0380831660048301523360248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a3c5cb7290604401602060405180830381865afa158015610584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a89190610fb7565b9392505050565b60006040516020016106029060208082526027908201527f4d6f7270686f20416176652056332061546f6b656e205032502041646170746f60408201526639102b1018971960c91b606082015260800190565b60405160208183030381529060405280519060200120905090565b80158061062a5750600a81115b15610633575060045b61063d8383610a83565b91506106736001600160a01b0384167f000000000000000000000000000000000000000000000000000000000000000084610979565b604051633a71cd6760e21b81526001600160a01b03848116600483015260248201849052306044830152606482018390527f0000000000000000000000000000000000000000000000000000000000000000169063e9c7359c906084016020604051808303816000875af11580156106ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107139190610fb7565b5061073e837f00000000000000000000000000000000000000000000000000000000000000006109f4565b505050565b6040805160018082528183019092526060916020808301908036833701905050905061076e826108ac565b8160008151811061078157610781610fed565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b6107af83610b04565b6000828060200190518101906107c59190610fd0565b90506000828060200190518101906107dd9190610fb7565b604051632a80f8e360e11b81526001600160a01b038481166004830152602482018990523060448301528781166064830152608482018390529192507f000000000000000000000000000000000000000000000000000000000000000090911690635501f1c69060a4016020604051808303816000875af1158015610866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088a9190610fb7565b50505050505050565b6108a86001600160a01b038316826000610979565b5050565b600080828060200190518101906105a89190610fd0565b600080838060200190518101906108da9190610fd0565b6040516351e2e5b960e11b81526001600160a01b0380831660048301523360248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a3c5cb7290604401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610fb7565b9150505b92915050565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806103aa5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b604482015260640160405180910390fd5b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa158015610a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a689190610fb7565b11156108a8576108a86001600160a01b038316826000610979565b60006000198203610afd576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af69190610fb7565b9050610973565b5080610973565b6001600160a01b0381163014801590610b7a5750306001600160a01b0316634c4602da6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a9190611003565b15610b98576040516307de9b5160e21b815260040160405180910390fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610bda57610bda610b9b565b604052919050565b60008060408385031215610bf557600080fd5b8235915060208084013567ffffffffffffffff80821115610c1557600080fd5b818601915086601f830112610c2957600080fd5b813581811115610c3b57610c3b610b9b565b8060051b9150610c4c848301610bb1565b8181529183018401918481019089841115610c6657600080fd5b938501935b83851015610c8457843582529385019390850190610c6b565b8096505050505050509250929050565b6001600160a01b0381168114610b9857600080fd5b600080600060608486031215610cbe57600080fd5b8335610cc981610c94565b95602085013595506040909401359392505050565b600082601f830112610cef57600080fd5b813567ffffffffffffffff811115610d0957610d09610b9b565b610d1c601f8201601f1916602001610bb1565b818152846020838601011115610d3157600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215610d6357600080fd5b83359250602084013567ffffffffffffffff80821115610d8257600080fd5b610d8e87838801610cde565b93506040860135915080821115610da457600080fd5b50610db186828701610cde565b9150509250925092565b600060208284031215610dcd57600080fd5b813567ffffffffffffffff811115610de457600080fd5b61096f84828501610cde565b6020808252825182820181905260009190848201906040850190845b81811015610e315783516001600160a01b031683529284019291840191600101610e0c565b50909695505050505050565b60008060008060808587031215610e5357600080fd5b843593506020850135610e6581610c94565b9250604085013567ffffffffffffffff80821115610e8257600080fd5b610e8e88838901610cde565b93506060870135915080821115610ea457600080fd5b50610eb187828801610cde565b91505092959194509250565b60008060408385031215610ed057600080fd5b8235610edb81610c94565b91506020830135610eeb81610c94565b809150509250929050565b60008060408385031215610f0957600080fd5b823567ffffffffffffffff80821115610f2157600080fd5b610f2d86838701610cde565b93506020850135915080821115610f4357600080fd5b50610f5085828601610cde565b9150509250929050565b6001600160a01b038416815260208082018490526060604083018190528351908301819052600091848101916080850190845b81811015610fa957845183529383019391830191600101610f8d565b509098975050505050505050565b600060208284031215610fc957600080fd5b5051919050565b600060208284031215610fe257600080fd5b81516105a881610c94565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561101557600080fd5b815180151581146105a857600080fdfea264697066735822122035c4efd5c6303e30507a76738adbf547094bc900853feea9ef41338e39d574c564736f6c63430008100033", + "sourceMap": "464:6629:200:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;902:145:203;;;;;;:::i;:::-;;:::i;:::-;;6665:426:200;;;;;;:::i;:::-;;:::i;2415:78:188:-;;;2481:5;2142:42:258;;2130:2;2115:18;2415:78:188;;;;;;;;505:60:203;;;;;;;;-1:-1:-1;;;;;2387:32:258;;;2369:51;;2357:2;2342:18;505:60:203;2195:231:258;2586:620:200;;;;;;:::i;:::-;;:::i;4549:217::-;;;;;;:::i;:::-;;:::i;:::-;;;4049:25:258;;;4037:2;4022:18;4549:217:200;3903:177:258;2002:149:200;;;:::i;5679:657::-;;;;;;:::i;:::-;;:::i;5102:83::-;;;5150:4;4407:41:258;;4395:2;4380:18;5102:83:200;4267:187:258;5934:180:188;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3652:513:200:-;;;;;;:::i;:::-;;:::i;9204:107:188:-;;;;;;:::i;:::-;;:::i;1404:33:200:-;;;;;4843:175;;;;;;:::i;:::-;;:::i;4241:238::-;;;;;;:::i;:::-;;:::i;902:145:203:-;977:63;;-1:-1:-1;;;977:63:203;;-1:-1:-1;;;;;977:24:203;:30;;;;:63;;1016:4;;1023:9;;1034:5;;977:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;902:145;;:::o;6665:426:200:-;6882:18;;;:52;;;1187:2;6904:13;:30;6882:52;6878:92;;;-1:-1:-1;1242:1:200;6878:92;6980:104;;-1:-1:-1;;;6980:104:200;;-1:-1:-1;;;;;8429:15:258;;;6980:104:200;;;8411:34:258;8461:18;;;8454:34;;;7048:4:200;8504:18:258;;;8497:43;;;8556:18;;;8549:43;8608:19;;;8601:35;;;6980:6:200;:15;;;;8345:19:258;;6980:104:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6665:426;;;:::o;2586:620::-;2740:16;2770:11;2759:32;;;;;;;;;;;;:::i;:::-;2740:51;-1:-1:-1;2801:47:200;-1:-1:-1;;;;;2801:22:200;;2832:6;2841;2801:22;:47::i;:::-;2859:18;2891:17;2880:40;;;;;;;;;;;;:::i;:::-;2859:61;-1:-1:-1;2934:15:200;;;:46;;;1187:2;2953:10;:27;2934:46;2930:83;;;-1:-1:-1;1242:1:200;2930:83;3023:69;;-1:-1:-1;;;3023:69:200;;-1:-1:-1;;;;;9401:15:258;;;3023:69:200;;;9383:34:258;9433:18;;;9426:34;;;3074:4:200;9476:18:258;;;9469:43;9528:18;;;9521:34;;;3023:6:200;:13;;;;9317:19:258;;3023:69:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3147:52;3171:10;3191:6;3147:23;:52::i;:::-;2693:513;;2586:620;;;:::o;4549:217::-;4624:7;4643:18;4675:11;4664:34;;;;;;;;;;;;:::i;:::-;4715:44;;-1:-1:-1;;;4715:44:200;;-1:-1:-1;;;;;10067:15:258;;;4715:44:200;;;10049:34:258;4748:10:200;10099:18:258;;;10092:43;4643:55:200;;-1:-1:-1;4715:6:200;:20;;;;;;9984:18:258;;4715:44:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4708:51;4549:217;-1:-1:-1;;;4549:217:200:o;2002:149::-;2054:7;2090:53;;;;;;10348:2:258;10330:21;;;10387:2;10367:18;;;10360:30;10426:34;10421:2;10406:18;;10399:62;-1:-1:-1;;;10492:2:258;10477:18;;10470:37;10539:3;10524:19;;10146:403;2090:53:200;;;;;;;;;;;;;2080:64;;;;;;2073:71;;2002:149;:::o;5679:657::-;5890:18;;;:52;;;1187:2;5912:13;:30;5890:52;5886:92;;;-1:-1:-1;1242:1:200;5886:92;6007:46;6021:14;6037:15;6007:13;:46::i;:::-;5989:64;-1:-1:-1;6063:60:200;-1:-1:-1;;;;;6063:26:200;;6098:6;5989:64;6063:26;:60::i;:::-;6133:85;;-1:-1:-1;;;6133:85:200;;-1:-1:-1;;;;;9401:15:258;;;6133:85:200;;;9383:34:258;9433:18;;;9426:34;;;6197:4:200;9476:18:258;;;9469:43;9528:18;;;9521:34;;;6133:6:200;:13;;;;9317:19:258;;6133:85:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6273:56;6297:14;6321:6;6273:23;:56::i;:::-;5679:657;;;:::o;5934:180:188:-;6051:14;;;6063:1;6051:14;;;;;;;;;6009:21;;6051:14;;;;;;;;;;;-1:-1:-1;6051:14:188;6042:23;;6087:20;6095:11;6087:7;:20::i;:::-;6075:6;6082:1;6075:9;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;6075:32:188;;;-1:-1:-1;;;;;6075:32:188;;;;;5934:180;;;:::o;3652:513:200:-;3866:32;3889:8;3866:22;:32::i;:::-;3909:18;3941:11;3930:34;;;;;;;;;;;;:::i;:::-;3909:55;;3974:18;4006:17;3995:40;;;;;;;;;;;;:::i;:::-;4086:72;;-1:-1:-1;;;4086:72:200;;-1:-1:-1;;;;;8429:15:258;;;4086:72:200;;;8411:34:258;8461:18;;;8454:34;;;4130:4:200;8504:18:258;;;8497:43;8576:15;;;8556:18;;;8549:43;8608:19;;;8601:35;;;3974:61:200;;-1:-1:-1;4086:6:200;:15;;;;;;8345:19:258;;4086:72:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3816:349;;3652:513;;;;:::o;9204:107:188:-;9275:29;-1:-1:-1;;;;;9275:17:188;;9293:7;9302:1;9275:17;:29::i;:::-;9204:107;;:::o;4843:175:200:-;4916:5;4933:16;4963:11;4952:32;;;;;;;;;;;;:::i;4241:238::-;4337:7;4356:18;4388:11;4377:34;;;;;;;;;;;;:::i;:::-;4428:44;;-1:-1:-1;;;4428:44:200;;-1:-1:-1;;;;;10067:15:258;;;4428:44:200;;;10049:34:258;4461:10:200;10099:18:258;;;10092:43;4356:55:200;;-1:-1:-1;4428:6:200;:20;;;;;;9984:18:258;;4428:44:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4421:51;;;4241:238;;;;;:::o;4327:1454:104:-;4438:12;4565:4;4559:11;-1:-1:-1;;;4688:17:104;4681:93;4821:2;4817:1;4798:17;4794:25;4787:37;4901:6;4896:2;4877:17;4873:26;4866:42;5703:2;5700:1;5696:2;5677:17;5674:1;5667:5;5660;5655:51;5224:16;5217:24;5211:2;5193:16;5190:24;5186:1;5182;5176:8;5173:15;5169:46;5166:76;4966:754;4955:765;;;5748:7;5740:34;;;;-1:-1:-1;;;5740:34:104;;10888:2:258;5740:34:104;;;10870:21:258;10927:2;10907:18;;;10900:30;-1:-1:-1;;;10946:18:258;;;10939:44;11000:18;;5740:34:104;;;;;;;8158:167:188;8244:39;;-1:-1:-1;;;8244:39:188;;8268:4;8244:39;;;10049:34:258;-1:-1:-1;;;;;10119:15:258;;;10099:18;;;10092:43;8286:1:188;;8244:15;;;;;;9984:18:258;;8244:39:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;8240:78;;;8289:29;-1:-1:-1;;;;;8289:17:188;;8307:7;8316:1;8289:17;:29::i;7816:207::-;7899:7;-1:-1:-1;;7922:6:188;:27;7918:98;;7958:30;;-1:-1:-1;;;7958:30:188;;7982:4;7958:30;;;2369:51:258;-1:-1:-1;;;;;7958:15:188;;;;;2342:18:258;;7958:30:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7951:37;;;;7918:98;-1:-1:-1;8010:6:188;8003:13;;8425:218;-1:-1:-1;;;;;8503:25:188;;8523:4;8503:25;;;;:74;;;8547:4;-1:-1:-1;;;;;8532:43:188;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8499:137;;;8598:38;;-1:-1:-1;;;8598:38:188;;;;;;;;;;;8499:137;8425:218;:::o;14:127:258:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:275;217:2;211:9;282:2;263:13;;-1:-1:-1;;259:27:258;247:40;;317:18;302:34;;338:22;;;299:62;296:88;;;364:18;;:::i;:::-;400:2;393:22;146:275;;-1:-1:-1;146:275:258:o;426:1014::-;519:6;527;580:2;568:9;559:7;555:23;551:32;548:52;;;596:1;593;586:12;548:52;632:9;619:23;609:33;;661:2;714;703:9;699:18;686:32;737:18;778:2;770:6;767:14;764:34;;;794:1;791;784:12;764:34;832:6;821:9;817:22;807:32;;877:7;870:4;866:2;862:13;858:27;848:55;;899:1;896;889:12;848:55;935:2;922:16;957:2;953;950:10;947:36;;;963:18;;:::i;:::-;1009:2;1006:1;1002:10;992:20;;1032:28;1056:2;1052;1048:11;1032:28;:::i;:::-;1094:15;;;1164:11;;;1160:20;;;1125:12;;;;1192:19;;;1189:39;;;1224:1;1221;1214:12;1189:39;1248:11;;;;1268:142;1284:6;1279:3;1276:15;1268:142;;;1350:17;;1338:30;;1301:12;;;;1388;;;;1268:142;;;1429:5;1419:15;;;;;;;;426:1014;;;;;:::o;1445:138::-;-1:-1:-1;;;;;1527:31:258;;1517:42;;1507:70;;1573:1;1570;1563:12;1588:405;1680:6;1688;1696;1749:2;1737:9;1728:7;1724:23;1720:32;1717:52;;;1765:1;1762;1755:12;1717:52;1804:9;1791:23;1823:38;1855:5;1823:38;:::i;:::-;1880:5;1932:2;1917:18;;1904:32;;-1:-1:-1;1983:2:258;1968:18;;;1955:32;;1588:405;-1:-1:-1;;;1588:405:258:o;2431:530::-;2473:5;2526:3;2519:4;2511:6;2507:17;2503:27;2493:55;;2544:1;2541;2534:12;2493:55;2580:6;2567:20;2606:18;2602:2;2599:26;2596:52;;;2628:18;;:::i;:::-;2672:55;2715:2;2696:13;;-1:-1:-1;;2692:27:258;2721:4;2688:38;2672:55;:::i;:::-;2752:2;2743:7;2736:19;2798:3;2791:4;2786:2;2778:6;2774:15;2770:26;2767:35;2764:55;;;2815:1;2812;2805:12;2764:55;2880:2;2873:4;2865:6;2861:17;2854:4;2845:7;2841:18;2828:55;2928:1;2903:16;;;2921:4;2899:27;2892:38;;;;2907:7;2431:530;-1:-1:-1;;;2431:530:258:o;2966:607::-;3061:6;3069;3077;3130:2;3118:9;3109:7;3105:23;3101:32;3098:52;;;3146:1;3143;3136:12;3098:52;3182:9;3169:23;3159:33;;3243:2;3232:9;3228:18;3215:32;3266:18;3307:2;3299:6;3296:14;3293:34;;;3323:1;3320;3313:12;3293:34;3346:49;3387:7;3378:6;3367:9;3363:22;3346:49;:::i;:::-;3336:59;;3448:2;3437:9;3433:18;3420:32;3404:48;;3477:2;3467:8;3464:16;3461:36;;;3493:1;3490;3483:12;3461:36;;3516:51;3559:7;3548:8;3537:9;3533:24;3516:51;:::i;:::-;3506:61;;;2966:607;;;;;:::o;3578:320::-;3646:6;3699:2;3687:9;3678:7;3674:23;3670:32;3667:52;;;3715:1;3712;3705:12;3667:52;3755:9;3742:23;3788:18;3780:6;3777:30;3774:50;;;3820:1;3817;3810:12;3774:50;3843:49;3884:7;3875:6;3864:9;3860:22;3843:49;:::i;4459:673::-;4645:2;4697:21;;;4767:13;;4670:18;;;4789:22;;;4616:4;;4645:2;4868:15;;;;4842:2;4827:18;;;4616:4;4911:195;4925:6;4922:1;4919:13;4911:195;;;4990:13;;-1:-1:-1;;;;;4986:39:258;4974:52;;5081:15;;;;5046:12;;;;5022:1;4940:9;4911:195;;;-1:-1:-1;5123:3:258;;4459:673;-1:-1:-1;;;;;;4459:673:258:o;5137:750::-;5241:6;5249;5257;5265;5318:3;5306:9;5297:7;5293:23;5289:33;5286:53;;;5335:1;5332;5325:12;5286:53;5371:9;5358:23;5348:33;;5431:2;5420:9;5416:18;5403:32;5444:38;5476:5;5444:38;:::i;:::-;5501:5;-1:-1:-1;5557:2:258;5542:18;;5529:32;5580:18;5610:14;;;5607:34;;;5637:1;5634;5627:12;5607:34;5660:49;5701:7;5692:6;5681:9;5677:22;5660:49;:::i;:::-;5650:59;;5762:2;5751:9;5747:18;5734:32;5718:48;;5791:2;5781:8;5778:16;5775:36;;;5807:1;5804;5797:12;5775:36;;5830:51;5873:7;5862:8;5851:9;5847:24;5830:51;:::i;:::-;5820:61;;;5137:750;;;;;;;:::o;5892:417::-;5975:6;5983;6036:2;6024:9;6015:7;6011:23;6007:32;6004:52;;;6052:1;6049;6042:12;6004:52;6091:9;6078:23;6110:38;6142:5;6110:38;:::i;:::-;6167:5;-1:-1:-1;6224:2:258;6209:18;;6196:32;6237:40;6196:32;6237:40;:::i;:::-;6296:7;6286:17;;;5892:417;;;;;:::o;6764:539::-;6850:6;6858;6911:2;6899:9;6890:7;6886:23;6882:32;6879:52;;;6927:1;6924;6917:12;6879:52;6967:9;6954:23;6996:18;7037:2;7029:6;7026:14;7023:34;;;7053:1;7050;7043:12;7023:34;7076:49;7117:7;7108:6;7097:9;7093:22;7076:49;:::i;:::-;7066:59;;7178:2;7167:9;7163:18;7150:32;7134:48;;7207:2;7197:8;7194:16;7191:36;;;7223:1;7220;7213:12;7191:36;;7246:51;7289:7;7278:8;7267:9;7263:24;7246:51;:::i;:::-;7236:61;;;6764:539;;;;;:::o;7308:801::-;-1:-1:-1;;;;;7584:32:258;;7566:51;;7636:2;7654:18;;;7647:34;;;7554:2;7712;7697:18;;7690:30;;;7769:13;;7539:18;;;7791:22;;;7506:4;;7871:15;;;;7844:3;7829:19;;;7506:4;7914:169;7928:6;7925:1;7922:13;7914:169;;;7989:13;;7977:26;;8058:15;;;;8023:12;;;;7950:1;7943:9;7914:169;;;-1:-1:-1;8100:3:258;;7308:801;-1:-1:-1;;;;;;;;7308:801:258:o;8647:184::-;8717:6;8770:2;8758:9;8749:7;8745:23;8741:32;8738:52;;;8786:1;8783;8776:12;8738:52;-1:-1:-1;8809:16:258;;8647:184;-1:-1:-1;8647:184:258:o;8836:273::-;8921:6;8974:2;8962:9;8953:7;8949:23;8945:32;8942:52;;;8990:1;8987;8980:12;8942:52;9022:9;9016:16;9041:38;9073:5;9041:38;:::i;10554:127::-;10615:10;10610:3;10606:20;10603:1;10596:31;10646:4;10643:1;10636:15;10670:4;10667:1;10660:15;11237:277;11304:6;11357:2;11345:9;11336:7;11332:23;11328:32;11325:52;;;11373:1;11370;11363:12;11325:52;11405:9;11399:16;11458:5;11451:13;11444:21;11437:5;11434:32;11424:60;;11480:1;11477;11470:12", + "linkReferences": {}, + "immutableReferences": { + "65919": [ + { + "start": 543, + "length": 32 + }, + { + "start": 829, + "length": 32 + }, + { + "start": 983, + "length": 32 + }, + { + "start": 1117, + "length": 32 + }, + { + "start": 1233, + "length": 32 + }, + { + "start": 1339, + "length": 32 + }, + { + "start": 1614, + "length": 32 + }, + { + "start": 1702, + "length": 32 + }, + { + "start": 1818, + "length": 32 + }, + { + "start": 2075, + "length": 32 + }, + { + "start": 2306, + "length": 32 + } + ], + "66662": [ + { + "start": 316, + "length": 32 + }, + { + "start": 638, + "length": 32 + } + ] + } + }, + "methodIdentifiers": { + "assetOf(bytes)": "e170a9bf", + "assetsUsed(bytes)": "aeffddde", + "balanceOf(bytes)": "78415365", + "claim(uint256,bytes32[])": "2f52ebb7", + "deposit(uint256,bytes,bytes)": "69445c31", + "depositToAaveV3Morpho(address,uint256,uint256)": "7ca4c4b7", + "identifier()": "7998a1c4", + "isDebt()": "89353a09", + "morpho()": "d8fbc833", + "morphoRewardsDistributor()": "5b5d4d78", + "revokeApproval(address,address)": "d3bfe76a", + "slippage()": "3e032a3b", + "withdraw(uint256,address,bytes,bytes)": "c9111bd7", + "withdrawFromAaveV3Morpho(address,uint256,uint256)": "35340a27", + "withdrawableFrom(bytes,bytes)": "fa50e5d2" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_morpho\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"rewardDistributor\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BaseAdaptor__ConstructorHealthFactorTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__ExternalReceiverBlocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"BaseAdaptor__PricingNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__Slippage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__UserDepositsNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__UserWithdrawsNotAllowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"}],\"name\":\"assetOf\",\"outputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"}],\"name\":\"assetsUsed\",\"outputs\":[{\"internalType\":\"contract ERC20[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"claimable\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"proof\",\"type\":\"bytes32[]\"}],\"name\":\"claim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"configurationData\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"tokenToDeposit\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountToDeposit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxIterations\",\"type\":\"uint256\"}],\"name\":\"depositToAaveV3Morpho\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"identifier\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDebt\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"morpho\",\"outputs\":[{\"internalType\":\"contract IMorphoV3\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"morphoRewardsDistributor\",\"outputs\":[{\"internalType\":\"contract RewardsDistributor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"revokeApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slippage\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"configurationData\",\"type\":\"bytes\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"tokenToWithdraw\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountToWithdraw\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxIterations\",\"type\":\"uint256\"}],\"name\":\"withdrawFromAaveV3Morpho\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"withdrawableFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"crispymangoes\",\"kind\":\"dev\",\"methods\":{\"deposit(uint256,bytes,bytes)\":{\"params\":{\"adaptorData\":\"adaptor data containining the abi encoded aToken\",\"assets\":\"the amount of assets to lend on Morpho\",\"configurationData\":\"abi encoded maxIterations\"}},\"depositToAaveV3Morpho(address,uint256,uint256)\":{\"details\":\"Uses `_maxAvailable` helper function, see BaseAdaptor.sol\",\"params\":{\"amountToDeposit\":\"the amount of `tokenToDeposit` to lend on Morpho.\",\"maxIterations\":\"maximum number of iterations for Morphos p2p matching engine\",\"tokenToDeposit\":\"the token to lend on Morpho\"}},\"identifier()\":{\"details\":\"Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this Identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult.\"},\"revokeApproval(address,address)\":{\"params\":{\"asset\":\"the ERC20 asset to revoke `spender`s approval for\",\"spender\":\"the address to revoke approval for\"}},\"withdraw(uint256,address,bytes,bytes)\":{\"details\":\"Important to verify that external receivers are allowed if receiver is not Cellar address.\",\"params\":{\"adaptorData\":\"adaptor data containining the abi encoded ERC20 token\",\"assets\":\"the amount of assets to withdraw from Morpho\",\"configurationData\":\"abi encoded maximum iterations.\",\"receiver\":\"the address to send withdrawn assets to\"}},\"withdrawFromAaveV3Morpho(address,uint256,uint256)\":{\"params\":{\"amountToWithdraw\":\"the amount of `tokenToWithdraw` to withdraw from Morpho\",\"maxIterations\":\"maximum number of iterations for Morphos p2p matching engine\",\"tokenToWithdraw\":\"the token to withdraw from Morpho.\"}}},\"title\":\"Morpho Aave V3 aToken Adaptor\",\"version\":1},\"userdoc\":{\"errors\":{\"BaseAdaptor__ConstructorHealthFactorTooLow()\":[{\"notice\":\"Attempted to set a constructor minimum health factor to a value below `MINIMUM_CONSTRUCTOR_HEALTH_FACTOR()`.\"}],\"BaseAdaptor__ExternalReceiverBlocked()\":[{\"notice\":\"Attempted to specify an external receiver during a Cellar `callOnAdaptor` call.\"}],\"BaseAdaptor__PricingNotSupported(address)\":[{\"notice\":\"Attempted swap used unsupported output asset.\"}],\"BaseAdaptor__Slippage()\":[{\"notice\":\"Attempted swap has bad slippage.\"}],\"BaseAdaptor__UserDepositsNotAllowed()\":[{\"notice\":\"Attempted to deposit to a position where user deposits were not allowed.\"}],\"BaseAdaptor__UserWithdrawsNotAllowed()\":[{\"notice\":\"Attempted to withdraw from a position where user withdraws were not allowed.\"}]},\"kind\":\"user\",\"methods\":{\"assetOf(bytes)\":{\"notice\":\"Returns the positions underlying asset.\"},\"assetsUsed(bytes)\":{\"notice\":\"When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup.\"},\"balanceOf(bytes)\":{\"notice\":\"Returns the cellars p2p balance.\"},\"claim(uint256,bytes32[])\":{\"notice\":\"Allows cellars to claim Morpho Rewards.\"},\"deposit(uint256,bytes,bytes)\":{\"notice\":\"Cellar must approve Morpho to spend its assets, then call supply to lend its assets.\"},\"depositToAaveV3Morpho(address,uint256,uint256)\":{\"notice\":\"Allows strategists to lend assets on Morpho.\"},\"isDebt()\":{\"notice\":\"This adaptor returns collateral, and not debt.\"},\"morpho()\":{\"notice\":\"The Morpho Aave V3 contract on current network.For mainnet use 0x33333aea097c193e66081E930c33020272b33333.\"},\"morphoRewardsDistributor()\":{\"notice\":\"The Morpho Aave V3 rewards handler contract on current network.For mainnet use 0x3B14E5C73e0A56D607A8688098326fD4b4292135.\"},\"revokeApproval(address,address)\":{\"notice\":\"Allows strategists to zero out an approval for a given `asset`.\"},\"slippage()\":{\"notice\":\"Max possible slippage when making a swap router swap.\"},\"withdraw(uint256,address,bytes,bytes)\":{\"notice\":\"Allows cellars to withdraw Morpho.\"},\"withdrawFromAaveV3Morpho(address,uint256,uint256)\":{\"notice\":\"Allows strategists to withdraw assets from Morpho.\"},\"withdrawableFrom(bytes,bytes)\":{\"notice\":\"Returns the p2p balance of the cellar.\"}},\"notice\":\"Allows Cellars to interact with Morpho Aave V3 positions.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/adaptors/Morpho/MorphoAaveV3ATokenP2PAdaptor.sol\":\"MorphoAaveV3ATokenP2PAdaptor\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/\",\":@balancer/=lib/balancer-v2-monorepo/pkg/\",\":@chainlink/=lib/chainlink/\",\":@ds-test/=lib/forge-std/lib/ds-test/src/\",\":@ensdomains/=node_modules/@ensdomains/\",\":@forge-std/=lib/forge-std/src/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@solmate/=lib/solmate/src/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":@uniswapV3C/=lib/v3-core/contracts/\",\":@uniswapV3P/=lib/v3-periphery/contracts/\",\":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/\",\":balancer-v2-monorepo/=lib/balancer-v2-monorepo/\",\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\":compound-protocol/=lib/compound-protocol/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/src/\",\":v3-core.git/=lib/v3-core.git/contracts/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery.git/=lib/v3-periphery.git/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\":{\"keccak256\":\"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\",\"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\"]},\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\":{\"keccak256\":\"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\",\"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\"]},\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\",\"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol\":{\"keccak256\":\"0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf\",\"dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de\",\"dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929\",\"dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg\"]},\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\",\"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\":{\"keccak256\":\"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\",\"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\",\"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\"]},\"lib/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\",\"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\"]},\"lib/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\",\"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\"]},\"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\":{\"keccak256\":\"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\",\"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\"]},\"src/Registry.sol\":{\"keccak256\":\"0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189\",\"dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK\"]},\"src/base/Cellar.sol\":{\"keccak256\":\"0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058\",\"dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs\"]},\"src/base/ERC20.sol\":{\"keccak256\":\"0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4\",\"dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf\"]},\"src/base/ERC4626.sol\":{\"keccak256\":\"0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469\",\"dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE\"]},\"src/base/Multicall.sol\":{\"keccak256\":\"0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c\",\"dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K\"]},\"src/base/SafeTransferLib.sol\":{\"keccak256\":\"0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a\",\"dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3\"]},\"src/interfaces/IMulticall.sol\":{\"keccak256\":\"0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0\",\"dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5\"]},\"src/interfaces/external/IChainlinkAggregator.sol\":{\"keccak256\":\"0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2\",\"dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs\"]},\"src/interfaces/external/IGravity.sol\":{\"keccak256\":\"0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51\",\"dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c\"]},\"src/interfaces/external/IUniswapV2Router02.sol\":{\"keccak256\":\"0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a\",\"dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo\"]},\"src/interfaces/external/IUniswapV3Router.sol\":{\"keccak256\":\"0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd\",\"dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK\"]},\"src/interfaces/external/Morpho/IMorphoV3.sol\":{\"keccak256\":\"0xb7d9b09efb93ccd8deacb62a899512f2e8d467682158dc73e936c27aedba3dd9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6ed4d09ea863c00bad9b19e1b8bc1ab8568a5b1c972b2ef4c02901f019d58241\",\"dweb:/ipfs/Qmd4873kMieGZd4K5BuKU6eCPxmczFEQ8BqaGyVbh3YtYE\"]},\"src/interfaces/external/UniswapV3Pool.sol\":{\"keccak256\":\"0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb\",\"urls\":[\"bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9\",\"dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh\"]},\"src/modules/adaptors/BaseAdaptor.sol\":{\"keccak256\":\"0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee\",\"dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd\"]},\"src/modules/adaptors/Morpho/MorphoAaveV3ATokenP2PAdaptor.sol\":{\"keccak256\":\"0x4d8aab372a599e69c545f5b4cb991530dd18c301f3cfd775858ab37b09332aea\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://41f7b060c85e6ef1e90546a95b942c14d0a325aec1bffe259b9911b0fd534ea5\",\"dweb:/ipfs/QmXYkhfDHzb6NnuEpnYndRs4osEbDn4bQpNCcUSAqQuLE7\"]},\"src/modules/adaptors/Morpho/MorphoRewardHandler.sol\":{\"keccak256\":\"0xc1461e49dacbb75fe03a4aa08a58bec9639416d57fed6c6595ade2f343520480\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b2cc897411f203e04233ee37d60e70bed92f310df63beb5adede89009c8cfc54\",\"dweb:/ipfs/QmSgJ6xXXqRLTcmyDf5uPtd5FqLvEmuK4QQ5LBXuk5dbhp\"]},\"src/modules/price-router/Extensions/Extension.sol\":{\"keccak256\":\"0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1\",\"dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo\"]},\"src/modules/price-router/PriceRouter.sol\":{\"keccak256\":\"0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66\",\"dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K\"]},\"src/modules/swap-router/SwapRouter.sol\":{\"keccak256\":\"0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818\",\"dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr\"]},\"src/utils/Math.sol\":{\"keccak256\":\"0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312\",\"dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r\"]},\"src/utils/Uint32Array.sol\":{\"keccak256\":\"0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944\",\"dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.16+commit.07a7930e" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_morpho", + "type": "address" + }, + { + "internalType": "address", + "name": "rewardDistributor", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__ConstructorHealthFactorTooLow" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__ExternalReceiverBlocked" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "type": "error", + "name": "BaseAdaptor__PricingNotSupported" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__Slippage" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__UserDepositsNotAllowed" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__UserWithdrawsNotAllowed" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "stateMutability": "pure", + "type": "function", + "name": "assetOf", + "outputs": [ + { + "internalType": "contract ERC20", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "assetsUsed", + "outputs": [ + { + "internalType": "contract ERC20[]", + "name": "assets", + "type": "address[]" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "claimable", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "proof", + "type": "bytes32[]" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "claim" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "configurationData", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "deposit" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "tokenToDeposit", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountToDeposit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxIterations", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "depositToAaveV3Morpho" + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "identifier", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "isDebt", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "morpho", + "outputs": [ + { + "internalType": "contract IMorphoV3", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "morphoRewardsDistributor", + "outputs": [ + { + "internalType": "contract RewardsDistributor", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "revokeApproval" + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "slippage", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "assets", + "type": "uint256" + }, + { + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "configurationData", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "withdraw" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "tokenToWithdraw", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountToWithdraw", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxIterations", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "withdrawFromAaveV3Morpho" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "withdrawableFrom", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "deposit(uint256,bytes,bytes)": { + "params": { + "adaptorData": "adaptor data containining the abi encoded aToken", + "assets": "the amount of assets to lend on Morpho", + "configurationData": "abi encoded maxIterations" + } + }, + "depositToAaveV3Morpho(address,uint256,uint256)": { + "details": "Uses `_maxAvailable` helper function, see BaseAdaptor.sol", + "params": { + "amountToDeposit": "the amount of `tokenToDeposit` to lend on Morpho.", + "maxIterations": "maximum number of iterations for Morphos p2p matching engine", + "tokenToDeposit": "the token to lend on Morpho" + } + }, + "identifier()": { + "details": "Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this Identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult." + }, + "revokeApproval(address,address)": { + "params": { + "asset": "the ERC20 asset to revoke `spender`s approval for", + "spender": "the address to revoke approval for" + } + }, + "withdraw(uint256,address,bytes,bytes)": { + "details": "Important to verify that external receivers are allowed if receiver is not Cellar address.", + "params": { + "adaptorData": "adaptor data containining the abi encoded ERC20 token", + "assets": "the amount of assets to withdraw from Morpho", + "configurationData": "abi encoded maximum iterations.", + "receiver": "the address to send withdrawn assets to" + } + }, + "withdrawFromAaveV3Morpho(address,uint256,uint256)": { + "params": { + "amountToWithdraw": "the amount of `tokenToWithdraw` to withdraw from Morpho", + "maxIterations": "maximum number of iterations for Morphos p2p matching engine", + "tokenToWithdraw": "the token to withdraw from Morpho." + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "assetOf(bytes)": { + "notice": "Returns the positions underlying asset." + }, + "assetsUsed(bytes)": { + "notice": "When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup." + }, + "balanceOf(bytes)": { + "notice": "Returns the cellars p2p balance." + }, + "claim(uint256,bytes32[])": { + "notice": "Allows cellars to claim Morpho Rewards." + }, + "deposit(uint256,bytes,bytes)": { + "notice": "Cellar must approve Morpho to spend its assets, then call supply to lend its assets." + }, + "depositToAaveV3Morpho(address,uint256,uint256)": { + "notice": "Allows strategists to lend assets on Morpho." + }, + "isDebt()": { + "notice": "This adaptor returns collateral, and not debt." + }, + "morpho()": { + "notice": "The Morpho Aave V3 contract on current network.For mainnet use 0x33333aea097c193e66081E930c33020272b33333." + }, + "morphoRewardsDistributor()": { + "notice": "The Morpho Aave V3 rewards handler contract on current network.For mainnet use 0x3B14E5C73e0A56D607A8688098326fD4b4292135." + }, + "revokeApproval(address,address)": { + "notice": "Allows strategists to zero out an approval for a given `asset`." + }, + "slippage()": { + "notice": "Max possible slippage when making a swap router swap." + }, + "withdraw(uint256,address,bytes,bytes)": { + "notice": "Allows cellars to withdraw Morpho." + }, + "withdrawFromAaveV3Morpho(address,uint256,uint256)": { + "notice": "Allows strategists to withdraw assets from Morpho." + }, + "withdrawableFrom(bytes,bytes)": { + "notice": "Returns the p2p balance of the cellar." + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + ":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/", + ":@balancer/=lib/balancer-v2-monorepo/pkg/", + ":@chainlink/=lib/chainlink/", + ":@ds-test/=lib/forge-std/lib/ds-test/src/", + ":@ensdomains/=node_modules/@ensdomains/", + ":@forge-std/=lib/forge-std/src/", + ":@openzeppelin/=lib/openzeppelin-contracts/", + ":@solmate/=lib/solmate/src/", + ":@uniswap/v3-core/=lib/v3-core/", + ":@uniswap/v3-periphery/=lib/v3-periphery/", + ":@uniswapV3C/=lib/v3-core/contracts/", + ":@uniswapV3P/=lib/v3-periphery/contracts/", + ":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/", + ":balancer-v2-monorepo/=lib/balancer-v2-monorepo/", + ":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/", + ":compound-protocol/=lib/compound-protocol/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":eth-gas-reporter/=node_modules/eth-gas-reporter/", + ":forge-std/=lib/forge-std/src/", + ":hardhat/=node_modules/hardhat/", + ":openzeppelin-contracts/=lib/openzeppelin-contracts/", + ":solmate/=lib/solmate/src/", + ":v3-core.git/=lib/v3-core.git/contracts/", + ":v3-core/=lib/v3-core/contracts/", + ":v3-periphery.git/=lib/v3-periphery.git/contracts/", + ":v3-periphery/=lib/v3-periphery/contracts/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/modules/adaptors/Morpho/MorphoAaveV3ATokenP2PAdaptor.sol": "MorphoAaveV3ATokenP2PAdaptor" + }, + "libraries": {} + }, + "sources": { + "lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol": { + "keccak256": "0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7", + "urls": [ + "bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465", + "dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a" + ], + "license": "MIT" + }, + "lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol": { + "keccak256": "0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2", + "urls": [ + "bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b", + "dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG" + ], + "license": "MIT" + }, + "lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol": { + "keccak256": "0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846", + "urls": [ + "bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7", + "dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { + "keccak256": "0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673", + "urls": [ + "bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2", + "dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol": { + "keccak256": "0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da", + "urls": [ + "bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708", + "dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol": { + "keccak256": "0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028", + "urls": [ + "bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf", + "dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Address.sol": { + "keccak256": "0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700", + "urls": [ + "bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de", + "dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Context.sol": { + "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", + "urls": [ + "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", + "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol": { + "keccak256": "0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb", + "urls": [ + "bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929", + "dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg" + ], + "license": "MIT" + }, + "lib/solmate/src/auth/Owned.sol": { + "keccak256": "0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea", + "urls": [ + "bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4", + "dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx" + ], + "license": "AGPL-3.0-only" + }, + "lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol": { + "keccak256": "0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968", + "urls": [ + "bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e", + "dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol": { + "keccak256": "0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634", + "urls": [ + "bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5", + "dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol": { + "keccak256": "0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5", + "urls": [ + "bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7", + "dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol": { + "keccak256": "0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b", + "urls": [ + "bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa", + "dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol": { + "keccak256": "0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd", + "urls": [ + "bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03", + "dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol": { + "keccak256": "0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7", + "urls": [ + "bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047", + "dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol": { + "keccak256": "0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235", + "urls": [ + "bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735", + "dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol": { + "keccak256": "0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43", + "urls": [ + "bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea", + "dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/libraries/FullMath.sol": { + "keccak256": "0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645", + "urls": [ + "bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125", + "dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd" + ], + "license": "MIT" + }, + "lib/v3-core/contracts/libraries/TickMath.sol": { + "keccak256": "0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129", + "urls": [ + "bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c", + "dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-periphery/contracts/libraries/OracleLibrary.sol": { + "keccak256": "0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b", + "urls": [ + "bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53", + "dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM" + ], + "license": "GPL-2.0-or-later" + }, + "src/Registry.sol": { + "keccak256": "0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47", + "urls": [ + "bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189", + "dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK" + ], + "license": "Apache-2.0" + }, + "src/base/Cellar.sol": { + "keccak256": "0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47", + "urls": [ + "bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058", + "dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs" + ], + "license": "Apache-2.0" + }, + "src/base/ERC20.sol": { + "keccak256": "0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02", + "urls": [ + "bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4", + "dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf" + ], + "license": "AGPL-3.0-only" + }, + "src/base/ERC4626.sol": { + "keccak256": "0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7", + "urls": [ + "bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469", + "dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE" + ], + "license": "AGPL-3.0-only" + }, + "src/base/Multicall.sol": { + "keccak256": "0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9", + "urls": [ + "bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c", + "dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K" + ], + "license": "GPL-2.0-or-later" + }, + "src/base/SafeTransferLib.sol": { + "keccak256": "0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324", + "urls": [ + "bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a", + "dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3" + ], + "license": "AGPL-3.0-only" + }, + "src/interfaces/IMulticall.sol": { + "keccak256": "0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e", + "urls": [ + "bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0", + "dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5" + ], + "license": "GPL-2.0-or-later" + }, + "src/interfaces/external/IChainlinkAggregator.sol": { + "keccak256": "0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d", + "urls": [ + "bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2", + "dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/IGravity.sol": { + "keccak256": "0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11", + "urls": [ + "bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51", + "dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/IUniswapV2Router02.sol": { + "keccak256": "0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f", + "urls": [ + "bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a", + "dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/IUniswapV3Router.sol": { + "keccak256": "0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355", + "urls": [ + "bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd", + "dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK" + ], + "license": "GPL-2.0-or-later" + }, + "src/interfaces/external/Morpho/IMorphoV3.sol": { + "keccak256": "0xb7d9b09efb93ccd8deacb62a899512f2e8d467682158dc73e936c27aedba3dd9", + "urls": [ + "bzz-raw://6ed4d09ea863c00bad9b19e1b8bc1ab8568a5b1c972b2ef4c02901f019d58241", + "dweb:/ipfs/Qmd4873kMieGZd4K5BuKU6eCPxmczFEQ8BqaGyVbh3YtYE" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/UniswapV3Pool.sol": { + "keccak256": "0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb", + "urls": [ + "bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9", + "dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh" + ], + "license": null + }, + "src/modules/adaptors/BaseAdaptor.sol": { + "keccak256": "0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c", + "urls": [ + "bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee", + "dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd" + ], + "license": "Apache-2.0" + }, + "src/modules/adaptors/Morpho/MorphoAaveV3ATokenP2PAdaptor.sol": { + "keccak256": "0x4d8aab372a599e69c545f5b4cb991530dd18c301f3cfd775858ab37b09332aea", + "urls": [ + "bzz-raw://41f7b060c85e6ef1e90546a95b942c14d0a325aec1bffe259b9911b0fd534ea5", + "dweb:/ipfs/QmXYkhfDHzb6NnuEpnYndRs4osEbDn4bQpNCcUSAqQuLE7" + ], + "license": "Apache-2.0" + }, + "src/modules/adaptors/Morpho/MorphoRewardHandler.sol": { + "keccak256": "0xc1461e49dacbb75fe03a4aa08a58bec9639416d57fed6c6595ade2f343520480", + "urls": [ + "bzz-raw://b2cc897411f203e04233ee37d60e70bed92f310df63beb5adede89009c8cfc54", + "dweb:/ipfs/QmSgJ6xXXqRLTcmyDf5uPtd5FqLvEmuK4QQ5LBXuk5dbhp" + ], + "license": "Apache-2.0" + }, + "src/modules/price-router/Extensions/Extension.sol": { + "keccak256": "0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d", + "urls": [ + "bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1", + "dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo" + ], + "license": "Apache-2.0" + }, + "src/modules/price-router/PriceRouter.sol": { + "keccak256": "0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9", + "urls": [ + "bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66", + "dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K" + ], + "license": "Apache-2.0" + }, + "src/modules/swap-router/SwapRouter.sol": { + "keccak256": "0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80", + "urls": [ + "bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818", + "dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr" + ], + "license": "Apache-2.0" + }, + "src/utils/Math.sol": { + "keccak256": "0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f", + "urls": [ + "bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312", + "dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r" + ], + "license": "Apache-2.0" + }, + "src/utils/Uint32Array.sol": { + "keccak256": "0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9", + "urls": [ + "bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944", + "dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3" + ], + "license": "Apache-2.0" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/modules/adaptors/Morpho/MorphoAaveV3ATokenP2PAdaptor.sol", + "id": 66277, + "exportedSymbols": { + "BaseAdaptor": [ + 61644 + ], + "ERC20": [ + 45747 + ], + "IMorphoV3": [ + 53563 + ], + "MorphoAaveV3ATokenP2PAdaptor": [ + 66276 + ], + "MorphoRewardHandler": [ + 66696 + ], + "SafeTransferLib": [ + 46498 + ] + }, + "nodeType": "SourceUnit", + "src": "39:7055:200", + "nodes": [ + { + "id": 65892, + "nodeType": "PragmaDirective", + "src": "39:23:200", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".16" + ] + }, + { + "id": 65896, + "nodeType": "ImportDirective", + "src": "64:91:200", + "nodes": [], + "absolutePath": "src/modules/adaptors/BaseAdaptor.sol", + "file": "src/modules/adaptors/BaseAdaptor.sol", + "nameLocation": "-1:-1:-1", + "scope": 66277, + "sourceUnit": 61645, + "symbolAliases": [ + { + "foreign": { + "id": 65893, + "name": "BaseAdaptor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61644, + "src": "73:11:200", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 65894, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45747, + "src": "86:5:200", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 65895, + "name": "SafeTransferLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46498, + "src": "93:15:200", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 65898, + "nodeType": "ImportDirective", + "src": "156:73:200", + "nodes": [], + "absolutePath": "src/interfaces/external/Morpho/IMorphoV3.sol", + "file": "src/interfaces/external/Morpho/IMorphoV3.sol", + "nameLocation": "-1:-1:-1", + "scope": 66277, + "sourceUnit": 53564, + "symbolAliases": [ + { + "foreign": { + "id": 65897, + "name": "IMorphoV3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 53563, + "src": "165:9:200", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 65900, + "nodeType": "ImportDirective", + "src": "230:90:200", + "nodes": [], + "absolutePath": "src/modules/adaptors/Morpho/MorphoRewardHandler.sol", + "file": "src/modules/adaptors/Morpho/MorphoRewardHandler.sol", + "nameLocation": "-1:-1:-1", + "scope": 66277, + "sourceUnit": 66697, + "symbolAliases": [ + { + "foreign": { + "id": 65899, + "name": "MorphoRewardHandler", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66696, + "src": "239:19:200", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 66276, + "nodeType": "ContractDefinition", + "src": "464:6629:200", + "nodes": [ + { + "id": 65909, + "nodeType": "UsingForDirective", + "src": "544:32:200", + "nodes": [], + "global": false, + "libraryName": { + "id": 65906, + "name": "SafeTransferLib", + "nameLocations": [ + "550:15:200" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46498, + "src": "550:15:200" + }, + "typeName": { + "id": 65908, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 65907, + "name": "ERC20", + "nameLocations": [ + "570:5:200" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "570:5:200" + }, + "referencedDeclaration": 45747, + "src": "570:5:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + } + }, + { + "id": 65912, + "nodeType": "VariableDeclaration", + "src": "1144:45:200", + "nodes": [], + "constant": true, + "mutability": "constant", + "name": "MAX_ITERATIONS", + "nameLocation": "1170:14:200", + "scope": 66276, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65910, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1144:7:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3130", + "id": 65911, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1187:2:200", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "visibility": "internal" + }, + { + "id": 65915, + "nodeType": "VariableDeclaration", + "src": "1195:48:200", + "nodes": [], + "constant": true, + "mutability": "constant", + "name": "OPTIMAL_ITERATIONS", + "nameLocation": "1221:18:200", + "scope": 66276, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65913, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1195:7:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "34", + "id": 65914, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1242:1:200", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "visibility": "internal" + }, + { + "id": 65919, + "nodeType": "VariableDeclaration", + "src": "1404:33:200", + "nodes": [], + "constant": false, + "documentation": { + "id": 65916, + "nodeType": "StructuredDocumentation", + "src": "1250:149:200", + "text": " @notice The Morpho Aave V3 contract on current network.\n @notice For mainnet use 0x33333aea097c193e66081E930c33020272b33333." + }, + "functionSelector": "d8fbc833", + "mutability": "immutable", + "name": "morpho", + "nameLocation": "1431:6:200", + "scope": 66276, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + }, + "typeName": { + "id": 65918, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 65917, + "name": "IMorphoV3", + "nameLocations": [ + "1404:9:200" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 53563, + "src": "1404:9:200" + }, + "referencedDeclaration": 53563, + "src": "1404:9:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "visibility": "public" + }, + { + "id": 65936, + "nodeType": "FunctionDefinition", + "src": "1444:139:200", + "nodes": [], + "body": { + "id": 65935, + "nodeType": "Block", + "src": "1539:44:200", + "nodes": [], + "statements": [ + { + "expression": { + "id": 65933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 65929, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65919, + "src": "1549:6:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 65931, + "name": "_morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65921, + "src": "1568:7:200", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 65930, + "name": "IMorphoV3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 53563, + "src": "1558:9:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IMorphoV3_$53563_$", + "typeString": "type(contract IMorphoV3)" + } + }, + "id": 65932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1558:18:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "src": "1549:27:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "id": 65934, + "nodeType": "ExpressionStatement", + "src": "1549:27:200" + } + ] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 65926, + "name": "rewardDistributor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65923, + "src": "1520:17:200", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 65927, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 65925, + "name": "MorphoRewardHandler", + "nameLocations": [ + "1500:19:200" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 66696, + "src": "1500:19:200" + }, + "nodeType": "ModifierInvocation", + "src": "1500:38:200" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 65924, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65921, + "mutability": "mutable", + "name": "_morpho", + "nameLocation": "1464:7:200", + "nodeType": "VariableDeclaration", + "scope": 65936, + "src": "1456:15:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 65920, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1456:7:200", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65923, + "mutability": "mutable", + "name": "rewardDistributor", + "nameLocation": "1481:17:200", + "nodeType": "VariableDeclaration", + "scope": 65936, + "src": "1473:25:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 65922, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1473:7:200", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1455:44:200" + }, + "returnParameters": { + "id": 65928, + "nodeType": "ParameterList", + "parameters": [], + "src": "1539:0:200" + }, + "scope": 66276, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 65951, + "nodeType": "FunctionDefinition", + "src": "2002:149:200", + "nodes": [], + "body": { + "id": 65950, + "nodeType": "Block", + "src": "2063:88:200", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "4d6f7270686f20416176652056332061546f6b656e205032502041646170746f72205620312e32", + "id": 65946, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2101:41:200", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bb2002321549ba02fb73271b6d22696c0f2450a0966102d0034f5d025bf91173", + "typeString": "literal_string \"Morpho Aave V3 aToken P2P Adaptor V 1.2\"" + }, + "value": "Morpho Aave V3 aToken P2P Adaptor V 1.2" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_bb2002321549ba02fb73271b6d22696c0f2450a0966102d0034f5d025bf91173", + "typeString": "literal_string \"Morpho Aave V3 aToken P2P Adaptor V 1.2\"" + } + ], + "expression": { + "id": 65944, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2090:3:200", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 65945, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2094:6:200", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "2090:10:200", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 65947, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2090:53:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 65943, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2080:9:200", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 65948, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2080:64:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 65942, + "id": 65949, + "nodeType": "Return", + "src": "2073:71:200" + } + ] + }, + "baseFunctions": [ + 61410 + ], + "documentation": { + "id": 65937, + "nodeType": "StructuredDocumentation", + "src": "1701:296:200", + "text": " @dev Identifier unique to this adaptor for a shared registry.\n Normally the identifier would just be the address of this contract, but this\n Identifier is needed during Cellar Delegate Call Operations, so getting the address\n of the adaptor is more difficult." + }, + "functionSelector": "7998a1c4", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "identifier", + "nameLocation": "2011:10:200", + "overrides": { + "id": 65939, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2036:8:200" + }, + "parameters": { + "id": 65938, + "nodeType": "ParameterList", + "parameters": [], + "src": "2021:2:200" + }, + "returnParameters": { + "id": 65942, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65941, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 65951, + "src": "2054:7:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 65940, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2054:7:200", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2053:9:200" + }, + "scope": 66276, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 66028, + "nodeType": "FunctionDefinition", + "src": "2586:620:200", + "nodes": [], + "body": { + "id": 66027, + "nodeType": "Block", + "src": "2693:513:200", + "nodes": [], + "statements": [ + { + "assignments": [ + 65964 + ], + "declarations": [ + { + "constant": false, + "id": 65964, + "mutability": "mutable", + "name": "underlying", + "nameLocation": "2746:10:200", + "nodeType": "VariableDeclaration", + "scope": 66027, + "src": "2740:16:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 65963, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 65962, + "name": "ERC20", + "nameLocations": [ + "2740:5:200" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "2740:5:200" + }, + "referencedDeclaration": 45747, + "src": "2740:5:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + } + ], + "id": 65971, + "initialValue": { + "arguments": [ + { + "id": 65967, + "name": "adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65956, + "src": "2770:11:200", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 65968, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45747, + "src": "2784:5:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$45747_$", + "typeString": "type(contract ERC20)" + } + } + ], + "id": 65969, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2783:7:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$45747_$", + "typeString": "type(contract ERC20)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_contract$_ERC20_$45747_$", + "typeString": "type(contract ERC20)" + } + ], + "expression": { + "id": 65965, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2759:3:200", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 65966, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2763:6:200", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "2759:10:200", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 65970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2759:32:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2740:51:200" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 65977, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65919, + "src": "2832:6:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + ], + "id": 65976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2824:7:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 65975, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2824:7:200", + "typeDescriptions": {} + } + }, + "id": 65978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2824:15:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 65979, + "name": "assets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65954, + "src": "2841:6:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 65972, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65964, + "src": "2801:10:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "id": 65974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2812:11:200", + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 46497, + "src": "2801:22:200", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$45747_$", + "typeString": "function (contract ERC20,address,uint256)" + } + }, + "id": 65980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2801:47:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 65981, + "nodeType": "ExpressionStatement", + "src": "2801:47:200" + }, + { + "assignments": [ + 65983 + ], + "declarations": [ + { + "constant": false, + "id": 65983, + "mutability": "mutable", + "name": "iterations", + "nameLocation": "2867:10:200", + "nodeType": "VariableDeclaration", + "scope": 66027, + "src": "2859:18:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65982, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2859:7:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 65991, + "initialValue": { + "arguments": [ + { + "id": 65986, + "name": "configurationData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65958, + "src": "2891:17:200", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 65988, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2911:7:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 65987, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2911:7:200", + "typeDescriptions": {} + } + } + ], + "id": 65989, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2910:9:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "expression": { + "id": 65984, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2880:3:200", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 65985, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2884:6:200", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "2880:10:200", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 65990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2880:40:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2859:61:200" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 65998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 65994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 65992, + "name": "iterations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65983, + "src": "2934:10:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 65993, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2948:1:200", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2934:15:200", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 65997, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 65995, + "name": "iterations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65983, + "src": "2953:10:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 65996, + "name": "MAX_ITERATIONS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65912, + "src": "2966:14:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2953:27:200", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2934:46:200", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 66003, + "nodeType": "IfStatement", + "src": "2930:83:200", + "trueBody": { + "expression": { + "id": 66001, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 65999, + "name": "iterations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65983, + "src": "2982:10:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 66000, + "name": "OPTIMAL_ITERATIONS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65915, + "src": "2995:18:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2982:31:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 66002, + "nodeType": "ExpressionStatement", + "src": "2982:31:200" + } + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 66009, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65964, + "src": "3045:10:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + ], + "id": 66008, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3037:7:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66007, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3037:7:200", + "typeDescriptions": {} + } + }, + "id": 66010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3037:19:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 66011, + "name": "assets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65954, + "src": "3058:6:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 66014, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3074:4:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenP2PAdaptor_$66276", + "typeString": "contract MorphoAaveV3ATokenP2PAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenP2PAdaptor_$66276", + "typeString": "contract MorphoAaveV3ATokenP2PAdaptor" + } + ], + "id": 66013, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3066:7:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66012, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3066:7:200", + "typeDescriptions": {} + } + }, + "id": 66015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3066:13:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 66016, + "name": "iterations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65983, + "src": "3081:10:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 66004, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65919, + "src": "3023:6:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "id": 66006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3030:6:200", + "memberName": "supply", + "nodeType": "MemberAccess", + "referencedDeclaration": 53523, + "src": "3023:13:200", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,uint256,address,uint256) external returns (uint256)" + } + }, + "id": 66017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3023:69:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 66018, + "nodeType": "ExpressionStatement", + "src": "3023:69:200" + }, + { + "expression": { + "arguments": [ + { + "id": 66020, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65964, + "src": "3171:10:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + { + "arguments": [ + { + "id": 66023, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65919, + "src": "3191:6:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + ], + "id": 66022, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3183:7:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66021, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3183:7:200", + "typeDescriptions": {} + } + }, + "id": 66024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3183:15:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 66019, + "name": "_revokeExternalApproval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61585, + "src": "3147:23:200", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$returns$__$", + "typeString": "function (contract ERC20,address)" + } + }, + "id": 66025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3147:52:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 66026, + "nodeType": "ExpressionStatement", + "src": "3147:52:200" + } + ] + }, + "baseFunctions": [ + 61454 + ], + "documentation": { + "id": 65952, + "nodeType": "StructuredDocumentation", + "src": "2277:304:200", + "text": " @notice Cellar must approve Morpho to spend its assets, then call supply to lend its assets.\n @param assets the amount of assets to lend on Morpho\n @param adaptorData adaptor data containining the abi encoded aToken\n @param configurationData abi encoded maxIterations" + }, + "functionSelector": "69445c31", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deposit", + "nameLocation": "2595:7:200", + "overrides": { + "id": 65960, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2684:8:200" + }, + "parameters": { + "id": 65959, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 65954, + "mutability": "mutable", + "name": "assets", + "nameLocation": "2611:6:200", + "nodeType": "VariableDeclaration", + "scope": 66028, + "src": "2603:14:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 65953, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2603:7:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65956, + "mutability": "mutable", + "name": "adaptorData", + "nameLocation": "2632:11:200", + "nodeType": "VariableDeclaration", + "scope": 66028, + "src": "2619:24:200", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 65955, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2619:5:200", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 65958, + "mutability": "mutable", + "name": "configurationData", + "nameLocation": "2658:17:200", + "nodeType": "VariableDeclaration", + "scope": 66028, + "src": "2645:30:200", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 65957, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2645:5:200", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2602:74:200" + }, + "returnParameters": { + "id": 65961, + "nodeType": "ParameterList", + "parameters": [], + "src": "2693:0:200" + }, + "scope": 66276, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 66079, + "nodeType": "FunctionDefinition", + "src": "3652:513:200", + "nodes": [], + "body": { + "id": 66078, + "nodeType": "Block", + "src": "3816:349:200", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 66042, + "name": "receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66033, + "src": "3889:8:200", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 66041, + "name": "_externalReceiverCheck", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61611, + "src": "3866:22:200", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$", + "typeString": "function (address) view" + } + }, + "id": 66043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3866:32:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 66044, + "nodeType": "ExpressionStatement", + "src": "3866:32:200" + }, + { + "assignments": [ + 66046 + ], + "declarations": [ + { + "constant": false, + "id": 66046, + "mutability": "mutable", + "name": "underlying", + "nameLocation": "3917:10:200", + "nodeType": "VariableDeclaration", + "scope": 66078, + "src": "3909:18:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 66045, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3909:7:200", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 66054, + "initialValue": { + "arguments": [ + { + "id": 66049, + "name": "adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66035, + "src": "3941:11:200", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 66051, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3955:7:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66050, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3955:7:200", + "typeDescriptions": {} + } + } + ], + "id": 66052, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3954:9:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + ], + "expression": { + "id": 66047, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3930:3:200", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 66048, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3934:6:200", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "3930:10:200", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 66053, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3930:34:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3909:55:200" + }, + { + "assignments": [ + 66056 + ], + "declarations": [ + { + "constant": false, + "id": 66056, + "mutability": "mutable", + "name": "iterations", + "nameLocation": "3982:10:200", + "nodeType": "VariableDeclaration", + "scope": 66078, + "src": "3974:18:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66055, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3974:7:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 66064, + "initialValue": { + "arguments": [ + { + "id": 66059, + "name": "configurationData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66037, + "src": "4006:17:200", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 66061, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4026:7:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 66060, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4026:7:200", + "typeDescriptions": {} + } + } + ], + "id": 66062, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4025:9:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "expression": { + "id": 66057, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3995:3:200", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 66058, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3999:6:200", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "3995:10:200", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 66063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3995:40:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3974:61:200" + }, + { + "expression": { + "arguments": [ + { + "id": 66068, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66046, + "src": "4102:10:200", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 66069, + "name": "assets", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66031, + "src": "4114:6:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 66072, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4130:4:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenP2PAdaptor_$66276", + "typeString": "contract MorphoAaveV3ATokenP2PAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenP2PAdaptor_$66276", + "typeString": "contract MorphoAaveV3ATokenP2PAdaptor" + } + ], + "id": 66071, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4122:7:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66070, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4122:7:200", + "typeDescriptions": {} + } + }, + "id": 66073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4122:13:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 66074, + "name": "receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66033, + "src": "4137:8:200", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 66075, + "name": "iterations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66056, + "src": "4147:10:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 66065, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65919, + "src": "4086:6:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "id": 66067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4093:8:200", + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 53549, + "src": "4086:15:200", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,uint256,address,address,uint256) external returns (uint256)" + } + }, + "id": 66076, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4086:72:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 66077, + "nodeType": "ExpressionStatement", + "src": "4086:72:200" + } + ] + }, + "baseFunctions": [ + 61466 + ], + "documentation": { + "id": 66029, + "nodeType": "StructuredDocumentation", + "src": "3212:435:200", + "text": "@notice Allows cellars to withdraw Morpho.\n @dev Important to verify that external receivers are allowed if receiver is not Cellar address.\n @param assets the amount of assets to withdraw from Morpho\n @param receiver the address to send withdrawn assets to\n @param adaptorData adaptor data containining the abi encoded ERC20 token\n @param configurationData abi encoded maximum iterations." + }, + "functionSelector": "c9111bd7", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nameLocation": "3661:8:200", + "overrides": { + "id": 66039, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3807:8:200" + }, + "parameters": { + "id": 66038, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66031, + "mutability": "mutable", + "name": "assets", + "nameLocation": "3687:6:200", + "nodeType": "VariableDeclaration", + "scope": 66079, + "src": "3679:14:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66030, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3679:7:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 66033, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "3711:8:200", + "nodeType": "VariableDeclaration", + "scope": 66079, + "src": "3703:16:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 66032, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3703:7:200", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 66035, + "mutability": "mutable", + "name": "adaptorData", + "nameLocation": "3742:11:200", + "nodeType": "VariableDeclaration", + "scope": 66079, + "src": "3729:24:200", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 66034, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3729:5:200", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 66037, + "mutability": "mutable", + "name": "configurationData", + "nameLocation": "3776:17:200", + "nodeType": "VariableDeclaration", + "scope": 66079, + "src": "3763:30:200", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 66036, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3763:5:200", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3669:130:200" + }, + "returnParameters": { + "id": 66040, + "nodeType": "ParameterList", + "parameters": [], + "src": "3816:0:200" + }, + "scope": 66276, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 66108, + "nodeType": "FunctionDefinition", + "src": "4241:238:200", + "nodes": [], + "body": { + "id": 66107, + "nodeType": "Block", + "src": "4346:133:200", + "nodes": [], + "statements": [ + { + "assignments": [ + 66091 + ], + "declarations": [ + { + "constant": false, + "id": 66091, + "mutability": "mutable", + "name": "underlying", + "nameLocation": "4364:10:200", + "nodeType": "VariableDeclaration", + "scope": 66107, + "src": "4356:18:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 66090, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4356:7:200", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 66099, + "initialValue": { + "arguments": [ + { + "id": 66094, + "name": "adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66082, + "src": "4388:11:200", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 66096, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4402:7:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66095, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4402:7:200", + "typeDescriptions": {} + } + } + ], + "id": 66097, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4401:9:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + ], + "expression": { + "id": 66092, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4377:3:200", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 66093, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4381:6:200", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "4377:10:200", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 66098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4377:34:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4356:55:200" + }, + { + "expression": { + "arguments": [ + { + "id": 66102, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66091, + "src": "4449:10:200", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 66103, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4461:3:200", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 66104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4465:6:200", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4461:10:200", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 66100, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65919, + "src": "4428:6:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "id": 66101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4435:13:200", + "memberName": "supplyBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 53439, + "src": "4428:20:200", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 66105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4428:44:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 66089, + "id": 66106, + "nodeType": "Return", + "src": "4421:51:200" + } + ] + }, + "baseFunctions": [ + 61484 + ], + "documentation": { + "id": 66080, + "nodeType": "StructuredDocumentation", + "src": "4171:65:200", + "text": " @notice Returns the p2p balance of the cellar." + }, + "functionSelector": "fa50e5d2", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawableFrom", + "nameLocation": "4250:16:200", + "overrides": { + "id": 66086, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4319:8:200" + }, + "parameters": { + "id": 66085, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66082, + "mutability": "mutable", + "name": "adaptorData", + "nameLocation": "4280:11:200", + "nodeType": "VariableDeclaration", + "scope": 66108, + "src": "4267:24:200", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 66081, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4267:5:200", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 66084, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 66108, + "src": "4293:12:200", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 66083, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4293:5:200", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4266:40:200" + }, + "returnParameters": { + "id": 66089, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66088, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 66108, + "src": "4337:7:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66087, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4337:7:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4336:9:200" + }, + "scope": 66276, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "id": 66135, + "nodeType": "FunctionDefinition", + "src": "4549:217:200", + "nodes": [], + "body": { + "id": 66134, + "nodeType": "Block", + "src": "4633:133:200", + "nodes": [], + "statements": [ + { + "assignments": [ + 66118 + ], + "declarations": [ + { + "constant": false, + "id": 66118, + "mutability": "mutable", + "name": "underlying", + "nameLocation": "4651:10:200", + "nodeType": "VariableDeclaration", + "scope": 66134, + "src": "4643:18:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 66117, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4643:7:200", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 66126, + "initialValue": { + "arguments": [ + { + "id": 66121, + "name": "adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66111, + "src": "4675:11:200", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 66123, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4689:7:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66122, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4689:7:200", + "typeDescriptions": {} + } + } + ], + "id": 66124, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4688:9:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + ], + "expression": { + "id": 66119, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4664:3:200", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 66120, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4668:6:200", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "4664:10:200", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 66125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4664:34:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4643:55:200" + }, + { + "expression": { + "arguments": [ + { + "id": 66129, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66118, + "src": "4736:10:200", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 66130, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4748:3:200", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 66131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4752:6:200", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4748:10:200", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 66127, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65919, + "src": "4715:6:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "id": 66128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4722:13:200", + "memberName": "supplyBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 53439, + "src": "4715:20:200", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 66132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4715:44:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 66116, + "id": 66133, + "nodeType": "Return", + "src": "4708:51:200" + } + ] + }, + "baseFunctions": [ + 61474 + ], + "documentation": { + "id": 66109, + "nodeType": "StructuredDocumentation", + "src": "4485:59:200", + "text": " @notice Returns the cellars p2p balance." + }, + "functionSelector": "78415365", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "4558:9:200", + "overrides": { + "id": 66113, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4606:8:200" + }, + "parameters": { + "id": 66112, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66111, + "mutability": "mutable", + "name": "adaptorData", + "nameLocation": "4581:11:200", + "nodeType": "VariableDeclaration", + "scope": 66135, + "src": "4568:24:200", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 66110, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4568:5:200", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4567:26:200" + }, + "returnParameters": { + "id": 66116, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66115, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 66135, + "src": "4624:7:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66114, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4624:7:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4623:9:200" + }, + "scope": 66276, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "id": 66158, + "nodeType": "FunctionDefinition", + "src": "4843:175:200", + "nodes": [], + "body": { + "id": 66157, + "nodeType": "Block", + "src": "4923:95:200", + "nodes": [], + "statements": [ + { + "assignments": [ + 66147 + ], + "declarations": [ + { + "constant": false, + "id": 66147, + "mutability": "mutable", + "name": "underlying", + "nameLocation": "4939:10:200", + "nodeType": "VariableDeclaration", + "scope": 66157, + "src": "4933:16:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 66146, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 66145, + "name": "ERC20", + "nameLocations": [ + "4933:5:200" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "4933:5:200" + }, + "referencedDeclaration": 45747, + "src": "4933:5:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + } + ], + "id": 66154, + "initialValue": { + "arguments": [ + { + "id": 66150, + "name": "adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66138, + "src": "4963:11:200", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 66151, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45747, + "src": "4977:5:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$45747_$", + "typeString": "type(contract ERC20)" + } + } + ], + "id": 66152, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4976:7:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$45747_$", + "typeString": "type(contract ERC20)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_contract$_ERC20_$45747_$", + "typeString": "type(contract ERC20)" + } + ], + "expression": { + "id": 66148, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4952:3:200", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 66149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4956:6:200", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "4952:10:200", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 66153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4952:32:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4933:51:200" + }, + { + "expression": { + "id": 66155, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66147, + "src": "5001:10:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "functionReturnParameters": 66144, + "id": 66156, + "nodeType": "Return", + "src": "4994:17:200" + } + ] + }, + "baseFunctions": [ + 61493 + ], + "documentation": { + "id": 66136, + "nodeType": "StructuredDocumentation", + "src": "4772:66:200", + "text": " @notice Returns the positions underlying asset." + }, + "functionSelector": "e170a9bf", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "assetOf", + "nameLocation": "4852:7:200", + "overrides": { + "id": 66140, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4898:8:200" + }, + "parameters": { + "id": 66139, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66138, + "mutability": "mutable", + "name": "adaptorData", + "nameLocation": "4873:11:200", + "nodeType": "VariableDeclaration", + "scope": 66158, + "src": "4860:24:200", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 66137, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4860:5:200", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4859:26:200" + }, + "returnParameters": { + "id": 66144, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66143, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 66158, + "src": "4916:5:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 66142, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 66141, + "name": "ERC20", + "nameLocations": [ + "4916:5:200" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "4916:5:200" + }, + "referencedDeclaration": 45747, + "src": "4916:5:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + } + ], + "src": "4915:7:200" + }, + "scope": 66276, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 66168, + "nodeType": "FunctionDefinition", + "src": "5102:83:200", + "nodes": [], + "body": { + "id": 66167, + "nodeType": "Block", + "src": "5156:29:200", + "nodes": [], + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 66165, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5173:5:200", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 66164, + "id": 66166, + "nodeType": "Return", + "src": "5166:12:200" + } + ] + }, + "baseFunctions": [ + 61527 + ], + "documentation": { + "id": 66159, + "nodeType": "StructuredDocumentation", + "src": "5024:73:200", + "text": " @notice This adaptor returns collateral, and not debt." + }, + "functionSelector": "89353a09", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isDebt", + "nameLocation": "5111:6:200", + "overrides": { + "id": 66161, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5132:8:200" + }, + "parameters": { + "id": 66160, + "nodeType": "ParameterList", + "parameters": [], + "src": "5117:2:200" + }, + "returnParameters": { + "id": 66164, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66163, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 66168, + "src": "5150:4:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 66162, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5150:4:200", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5149:6:200" + }, + "scope": 66276, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 66232, + "nodeType": "FunctionDefinition", + "src": "5679:657:200", + "nodes": [], + "body": { + "id": 66231, + "nodeType": "Block", + "src": "5787:549:200", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 66185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 66181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 66179, + "name": "maxIterations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66176, + "src": "5890:13:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 66180, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5907:1:200", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5890:18:200", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 66184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 66182, + "name": "maxIterations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66176, + "src": "5912:13:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 66183, + "name": "MAX_ITERATIONS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65912, + "src": "5928:14:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5912:30:200", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5890:52:200", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 66190, + "nodeType": "IfStatement", + "src": "5886:92:200", + "trueBody": { + "expression": { + "id": 66188, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 66186, + "name": "maxIterations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66176, + "src": "5944:13:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 66187, + "name": "OPTIMAL_ITERATIONS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65915, + "src": "5960:18:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5944:34:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 66189, + "nodeType": "ExpressionStatement", + "src": "5944:34:200" + } + }, + { + "expression": { + "id": 66196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 66191, + "name": "amountToDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66174, + "src": "5989:15:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 66193, + "name": "tokenToDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66172, + "src": "6021:14:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + { + "id": 66194, + "name": "amountToDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66174, + "src": "6037:15:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 66192, + "name": "_maxAvailable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61557, + "src": "6007:13:200", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_ERC20_$45747_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (contract ERC20,uint256) view returns (uint256)" + } + }, + "id": 66195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6007:46:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5989:64:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 66197, + "nodeType": "ExpressionStatement", + "src": "5989:64:200" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 66203, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65919, + "src": "6098:6:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + ], + "id": 66202, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6090:7:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66201, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6090:7:200", + "typeDescriptions": {} + } + }, + "id": 66204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6090:15:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 66205, + "name": "amountToDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66174, + "src": "6107:15:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 66198, + "name": "tokenToDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66172, + "src": "6063:14:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "id": 66200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6078:11:200", + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 46497, + "src": "6063:26:200", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$45747_$", + "typeString": "function (contract ERC20,address,uint256)" + } + }, + "id": 66206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6063:60:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 66207, + "nodeType": "ExpressionStatement", + "src": "6063:60:200" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 66213, + "name": "tokenToDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66172, + "src": "6155:14:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + ], + "id": 66212, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6147:7:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66211, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6147:7:200", + "typeDescriptions": {} + } + }, + "id": 66214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6147:23:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 66215, + "name": "amountToDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66174, + "src": "6172:15:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 66218, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "6197:4:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenP2PAdaptor_$66276", + "typeString": "contract MorphoAaveV3ATokenP2PAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenP2PAdaptor_$66276", + "typeString": "contract MorphoAaveV3ATokenP2PAdaptor" + } + ], + "id": 66217, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6189:7:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66216, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6189:7:200", + "typeDescriptions": {} + } + }, + "id": 66219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6189:13:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 66220, + "name": "maxIterations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66176, + "src": "6204:13:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 66208, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65919, + "src": "6133:6:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "id": 66210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6140:6:200", + "memberName": "supply", + "nodeType": "MemberAccess", + "referencedDeclaration": 53523, + "src": "6133:13:200", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,uint256,address,uint256) external returns (uint256)" + } + }, + "id": 66221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6133:85:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 66222, + "nodeType": "ExpressionStatement", + "src": "6133:85:200" + }, + { + "expression": { + "arguments": [ + { + "id": 66224, + "name": "tokenToDeposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66172, + "src": "6297:14:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + { + "arguments": [ + { + "id": 66227, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65919, + "src": "6321:6:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + ], + "id": 66226, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6313:7:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66225, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6313:7:200", + "typeDescriptions": {} + } + }, + "id": 66228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6313:15:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 66223, + "name": "_revokeExternalApproval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61585, + "src": "6273:23:200", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$returns$__$", + "typeString": "function (contract ERC20,address)" + } + }, + "id": 66229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6273:56:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 66230, + "nodeType": "ExpressionStatement", + "src": "6273:56:200" + } + ] + }, + "documentation": { + "id": 66169, + "nodeType": "StructuredDocumentation", + "src": "5307:367:200", + "text": " @notice Allows strategists to lend assets on Morpho.\n @dev Uses `_maxAvailable` helper function, see BaseAdaptor.sol\n @param tokenToDeposit the token to lend on Morpho\n @param amountToDeposit the amount of `tokenToDeposit` to lend on Morpho.\n @param maxIterations maximum number of iterations for Morphos p2p matching engine" + }, + "functionSelector": "7ca4c4b7", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "depositToAaveV3Morpho", + "nameLocation": "5688:21:200", + "parameters": { + "id": 66177, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66172, + "mutability": "mutable", + "name": "tokenToDeposit", + "nameLocation": "5716:14:200", + "nodeType": "VariableDeclaration", + "scope": 66232, + "src": "5710:20:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 66171, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 66170, + "name": "ERC20", + "nameLocations": [ + "5710:5:200" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "5710:5:200" + }, + "referencedDeclaration": 45747, + "src": "5710:5:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 66174, + "mutability": "mutable", + "name": "amountToDeposit", + "nameLocation": "5740:15:200", + "nodeType": "VariableDeclaration", + "scope": 66232, + "src": "5732:23:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66173, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5732:7:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 66176, + "mutability": "mutable", + "name": "maxIterations", + "nameLocation": "5765:13:200", + "nodeType": "VariableDeclaration", + "scope": 66232, + "src": "5757:21:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66175, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5757:7:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5709:70:200" + }, + "returnParameters": { + "id": 66178, + "nodeType": "ParameterList", + "parameters": [], + "src": "5787:0:200" + }, + "scope": 66276, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 66275, + "nodeType": "FunctionDefinition", + "src": "6665:426:200", + "nodes": [], + "body": { + "id": 66274, + "nodeType": "Block", + "src": "6778:313:200", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 66249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 66245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 66243, + "name": "maxIterations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66240, + "src": "6882:13:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 66244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6899:1:200", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6882:18:200", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 66248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 66246, + "name": "maxIterations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66240, + "src": "6904:13:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 66247, + "name": "MAX_ITERATIONS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65912, + "src": "6920:14:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6904:30:200", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6882:52:200", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "documentation": "Sanitize maxIterations to prevent strategists from gas griefing Somm relayer.", + "id": 66254, + "nodeType": "IfStatement", + "src": "6878:92:200", + "trueBody": { + "expression": { + "id": 66252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 66250, + "name": "maxIterations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66240, + "src": "6936:13:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 66251, + "name": "OPTIMAL_ITERATIONS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65915, + "src": "6952:18:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6936:34:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 66253, + "nodeType": "ExpressionStatement", + "src": "6936:34:200" + } + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 66260, + "name": "tokenToWithdraw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66236, + "src": "7004:15:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + ], + "id": 66259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6996:7:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66258, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6996:7:200", + "typeDescriptions": {} + } + }, + "id": 66261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6996:24:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 66262, + "name": "amountToWithdraw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66238, + "src": "7022:16:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 66265, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "7048:4:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenP2PAdaptor_$66276", + "typeString": "contract MorphoAaveV3ATokenP2PAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenP2PAdaptor_$66276", + "typeString": "contract MorphoAaveV3ATokenP2PAdaptor" + } + ], + "id": 66264, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7040:7:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66263, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7040:7:200", + "typeDescriptions": {} + } + }, + "id": 66266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7040:13:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 66269, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "7063:4:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenP2PAdaptor_$66276", + "typeString": "contract MorphoAaveV3ATokenP2PAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV3ATokenP2PAdaptor_$66276", + "typeString": "contract MorphoAaveV3ATokenP2PAdaptor" + } + ], + "id": 66268, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7055:7:200", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66267, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7055:7:200", + "typeDescriptions": {} + } + }, + "id": 66270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7055:13:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 66271, + "name": "maxIterations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66240, + "src": "7070:13:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 66255, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 65919, + "src": "6980:6:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "id": 66257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6987:8:200", + "memberName": "withdraw", + "nodeType": "MemberAccess", + "referencedDeclaration": 53549, + "src": "6980:15:200", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,uint256,address,address,uint256) external returns (uint256)" + } + }, + "id": 66272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6980:104:200", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 66273, + "nodeType": "ExpressionStatement", + "src": "6980:104:200" + } + ] + }, + "documentation": { + "id": 66233, + "nodeType": "StructuredDocumentation", + "src": "6342:318:200", + "text": " @notice Allows strategists to withdraw assets from Morpho.\n @param tokenToWithdraw the token to withdraw from Morpho.\n @param amountToWithdraw the amount of `tokenToWithdraw` to withdraw from Morpho\n @param maxIterations maximum number of iterations for Morphos p2p matching engine" + }, + "functionSelector": "35340a27", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawFromAaveV3Morpho", + "nameLocation": "6674:24:200", + "parameters": { + "id": 66241, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66236, + "mutability": "mutable", + "name": "tokenToWithdraw", + "nameLocation": "6705:15:200", + "nodeType": "VariableDeclaration", + "scope": 66275, + "src": "6699:21:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 66235, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 66234, + "name": "ERC20", + "nameLocations": [ + "6699:5:200" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "6699:5:200" + }, + "referencedDeclaration": 45747, + "src": "6699:5:200", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 66238, + "mutability": "mutable", + "name": "amountToWithdraw", + "nameLocation": "6730:16:200", + "nodeType": "VariableDeclaration", + "scope": 66275, + "src": "6722:24:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66237, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6722:7:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 66240, + "mutability": "mutable", + "name": "maxIterations", + "nameLocation": "6756:13:200", + "nodeType": "VariableDeclaration", + "scope": 66275, + "src": "6748:21:200", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66239, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6748:7:200", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6698:72:200" + }, + "returnParameters": { + "id": 66242, + "nodeType": "ParameterList", + "parameters": [], + "src": "6778:0:200" + }, + "scope": 66276, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 65902, + "name": "BaseAdaptor", + "nameLocations": [ + "505:11:200" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 61644, + "src": "505:11:200" + }, + "id": 65903, + "nodeType": "InheritanceSpecifier", + "src": "505:11:200" + }, + { + "baseName": { + "id": 65904, + "name": "MorphoRewardHandler", + "nameLocations": [ + "518:19:200" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 66696, + "src": "518:19:200" + }, + "id": 65905, + "nodeType": "InheritanceSpecifier", + "src": "518:19:200" + } + ], + "canonicalName": "MorphoAaveV3ATokenP2PAdaptor", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 65901, + "nodeType": "StructuredDocumentation", + "src": "322:141:200", + "text": " @title Morpho Aave V3 aToken Adaptor\n @notice Allows Cellars to interact with Morpho Aave V3 positions.\n @author crispymangoes" + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 66276, + 66696, + 61644 + ], + "name": "MorphoAaveV3ATokenP2PAdaptor", + "nameLocation": "473:28:200", + "scope": 66277, + "usedErrors": [ + 61379, + 61382, + 61385, + 61388, + 61393, + 61396 + ] + } + ], + "license": "Apache-2.0" + }, + "id": 200 +} \ No newline at end of file diff --git a/steward_abi/abi/MorphoAaveV3DebtTokenAdaptorV1.json b/steward_abi/abi/MorphoAaveV3DebtTokenAdaptorV1.json new file mode 100644 index 00000000..f139ae23 --- /dev/null +++ b/steward_abi/abi/MorphoAaveV3DebtTokenAdaptorV1.json @@ -0,0 +1,5170 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_morpho", + "type": "address" + }, + { + "internalType": "uint256", + "name": "minHealthFactor", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "BaseAdaptor__ConstructorHealthFactorTooLow", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__ExternalReceiverBlocked", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "name": "BaseAdaptor__PricingNotSupported", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__Slippage", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__UserDepositsNotAllowed", + "type": "error" + }, + { + "inputs": [], + "name": "BaseAdaptor__UserWithdrawsNotAllowed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "untrackedDebtPosition", + "type": "address" + } + ], + "name": "MorphoAaveV3DebtTokenAdaptor__DebtPositionsMustBeTracked", + "type": "error" + }, + { + "inputs": [], + "name": "MorphoAaveV3DebtTokenAdaptor__HealthFactorTooLow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "name": "assetOf", + "outputs": [ + { + "internalType": "contract ERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "name": "assetsUsed", + "outputs": [ + { + "internalType": "contract ERC20[]", + "name": "assets", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "underlying", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountToBorrow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxIterations", + "type": "uint256" + } + ], + "name": "borrowFromAaveV3Morpho", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "identifier", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "isDebt", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "minimumHealthFactor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "morpho", + "outputs": [ + { + "internalType": "contract IMorphoV3", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "tokenToRepay", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountToRepay", + "type": "uint256" + } + ], + "name": "repayAaveV3MorphoDebt", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "revokeApproval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "slippage", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "withdrawableFrom", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "bytecode": { + "object": "0x60c060405234801561001057600080fd5b50604051610f92380380610f9283398101604081905261002f9161007a565b6100388161004e565b6001600160a01b0390911660805260a0526100b4565b670e92596fd6290000811015610077576040516397ed5f4160e01b815260040160405180910390fd5b50565b6000806040838503121561008d57600080fd5b82516001600160a01b03811681146100a457600080fd5b6020939093015192949293505050565b60805160a051610e896101096000396000818160f4015261061c0152600081816101d6015281816102a40152818161057e015281816105f30152818161071e0152818161076f01526107e30152610e896000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063aeffddde1161008c578063d8fbc83311610066578063d8fbc833146101d1578063e170a9bf14610210578063e5afd9b614610223578063fa50e5d21461023657600080fd5b8063aeffddde1461018b578063c9111bd7146101ab578063d3bfe76a146101be57600080fd5b806378415365116100c8578063784153651461014e5780637998a1c41461016157806389353a0914610169578063a6cfba9a1461017857600080fd5b80631caff8b1146100ef5780633e032a3b1461012957806369445c3114610139575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6040516123288152602001610120565b61014c610147366004610a7f565b61024c565b005b61011661015c366004610aec565b610265565b610116610318565b60405160018152602001610120565b61014c610186366004610b39565b610385565b61019e610199366004610aec565b610663565b6040516101209190610b6e565b61014c6101b9366004610bbb565b6106c6565b61014c6101cc366004610c3b565b6106df565b6101f87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610120565b6101f861021e366004610aec565b6106f8565b61014c610231366004610c74565b61070f565b610116610244366004610ca0565b600092915050565b604051633204ed5b60e21b815260040160405180910390fd5b6000808280602001905181019061027c9190610d04565b60405163ccdbe8b160e01b81526001600160a01b0380831660048301523360248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063ccdbe8b190604401602060405180830381865afa1580156102ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103119190610d21565b9392505050565b600060405160200161036a9060208082526026908201527f4d6f7270686f20416176652056332064656274546f6b656e2041646170746f72604082015265205620312e3160d01b606082015260800190565b60405160208183030381529060405280519060200120905090565b600061038f610318565b604080516001600160a01b03871660208201526001910160408051601f19818403018152908290526103c5939291602001610d3a565b6040516020818303038152906040528051906020012090506000306001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561041d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104419190610d04565b6001600160a01b03166309f7abd2836040518263ffffffff1660e01b815260040161046e91815260200190565b602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190610d99565b60405163024eefab60e61b815263ffffffff8216600482015290915030906393bbeac090602401602060405180830381865afa1580156104f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105179190610dbf565b6105445760405163792c47cf60e11b81526001600160a01b03861660048201526024015b60405180910390fd5b604051634cc9040360e11b81526001600160a01b0386811660048301526024820186905230604483018190526064830152608482018590527f0000000000000000000000000000000000000000000000000000000000000000169063999208069060a4016020604051808303816000875af11580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190610d21565b5060006106187f000000000000000000000000000000000000000000000000000000000000000030610807565b90507f000000000000000000000000000000000000000000000000000000000000000081101561065b576040516309ca680760e41b815260040160405180910390fd5b505050505050565b6040805160018082528183019092526060916020808301908036833701905050905061068e826106f8565b816000815181106106a1576106a1610de1565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b604051635f5003c560e11b815260040160405180910390fd5b6106f46001600160a01b0383168260006108b1565b5050565b600080828060200190518101906103119190610d04565b6107436001600160a01b0383167f0000000000000000000000000000000000000000000000000000000000000000836108b1565b60405163173aba7160e21b81526001600160a01b038381166004830152602482018390523060448301527f00000000000000000000000000000000000000000000000000000000000000001690635ceae9c4906064016020604051808303816000875af11580156107b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107dc9190610d21565b506106f4827f000000000000000000000000000000000000000000000000000000000000000061092e565b604051632459428560e11b81526001600160a01b03828116600483015260009182918516906348b2850a90602401606060405180830381865afa158015610852573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108769190610df7565b9050600081604001511161088c576000196108a9565b602081015160408201516108a991670de0b6b3a7640000916109bd565b949350505050565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806109285760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b604482015260640161053b565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa15801561097e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a29190610d21565b11156106f4576106f46001600160a01b0383168260006108b1565b8282028115158415858304851417166109d557600080fd5b0492915050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610a0357600080fd5b813567ffffffffffffffff80821115610a1e57610a1e6109dc565b604051601f8301601f19908116603f01168101908282118183101715610a4657610a466109dc565b81604052838152866020858801011115610a5f57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215610a9457600080fd5b83359250602084013567ffffffffffffffff80821115610ab357600080fd5b610abf878388016109f2565b93506040860135915080821115610ad557600080fd5b50610ae2868287016109f2565b9150509250925092565b600060208284031215610afe57600080fd5b813567ffffffffffffffff811115610b1557600080fd5b6108a9848285016109f2565b6001600160a01b0381168114610b3657600080fd5b50565b600080600060608486031215610b4e57600080fd5b8335610b5981610b21565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b81811015610baf5783516001600160a01b031683529284019291840191600101610b8a565b50909695505050505050565b60008060008060808587031215610bd157600080fd5b843593506020850135610be381610b21565b9250604085013567ffffffffffffffff80821115610c0057600080fd5b610c0c888389016109f2565b93506060870135915080821115610c2257600080fd5b50610c2f878288016109f2565b91505092959194509250565b60008060408385031215610c4e57600080fd5b8235610c5981610b21565b91506020830135610c6981610b21565b809150509250929050565b60008060408385031215610c8757600080fd5b8235610c9281610b21565b946020939093013593505050565b60008060408385031215610cb357600080fd5b823567ffffffffffffffff80821115610ccb57600080fd5b610cd7868387016109f2565b93506020850135915080821115610ced57600080fd5b50610cfa858286016109f2565b9150509250929050565b600060208284031215610d1657600080fd5b815161031181610b21565b600060208284031215610d3357600080fd5b5051919050565b838152600060208415158184015260606040840152835180606085015260005b81811015610d7657858101830151858201608001528201610d5a565b506000608082860101526080601f19601f83011685010192505050949350505050565b600060208284031215610dab57600080fd5b815163ffffffff8116811461031157600080fd5b600060208284031215610dd157600080fd5b8151801515811461031157600080fd5b634e487b7160e01b600052603260045260246000fd5b600060608284031215610e0957600080fd5b6040516060810181811067ffffffffffffffff82111715610e2c57610e2c6109dc565b8060405250825181526020830151602082015260408301516040820152809150509291505056fea2646970667358221220d49b3ebebafe62c6e7cb0efe3e5039da6b768a199f56d22f65591f67cf61607c64736f6c63430008100033", + "sourceMap": "521:5593:201:-:0;;;1800:209;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1864:54;1902:15;1864:37;:54::i;:::-;-1:-1:-1;;;;;1928:27:201;;;;;1965:37;;521:5593;;8743:233:188;2760:7;8847:19;:57;8843:126;;;8925:44;;-1:-1:-1;;;8925:44:188;;;;;;;;;;;8843:126;8743:233;:::o;14:351:258:-;93:6;101;154:2;142:9;133:7;129:23;125:32;122:52;;;170:1;167;160:12;122:52;196:16;;-1:-1:-1;;;;;241:31:258;;231:42;;221:70;;287:1;284;277:12;221:70;355:2;340:18;;;;334:25;310:5;;334:25;;-1:-1:-1;;;14:351:258:o;:::-;521:5593:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "linkReferences": {} + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063aeffddde1161008c578063d8fbc83311610066578063d8fbc833146101d1578063e170a9bf14610210578063e5afd9b614610223578063fa50e5d21461023657600080fd5b8063aeffddde1461018b578063c9111bd7146101ab578063d3bfe76a146101be57600080fd5b806378415365116100c8578063784153651461014e5780637998a1c41461016157806389353a0914610169578063a6cfba9a1461017857600080fd5b80631caff8b1146100ef5780633e032a3b1461012957806369445c3114610139575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6040516123288152602001610120565b61014c610147366004610a7f565b61024c565b005b61011661015c366004610aec565b610265565b610116610318565b60405160018152602001610120565b61014c610186366004610b39565b610385565b61019e610199366004610aec565b610663565b6040516101209190610b6e565b61014c6101b9366004610bbb565b6106c6565b61014c6101cc366004610c3b565b6106df565b6101f87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610120565b6101f861021e366004610aec565b6106f8565b61014c610231366004610c74565b61070f565b610116610244366004610ca0565b600092915050565b604051633204ed5b60e21b815260040160405180910390fd5b6000808280602001905181019061027c9190610d04565b60405163ccdbe8b160e01b81526001600160a01b0380831660048301523360248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063ccdbe8b190604401602060405180830381865afa1580156102ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103119190610d21565b9392505050565b600060405160200161036a9060208082526026908201527f4d6f7270686f20416176652056332064656274546f6b656e2041646170746f72604082015265205620312e3160d01b606082015260800190565b60405160208183030381529060405280519060200120905090565b600061038f610318565b604080516001600160a01b03871660208201526001910160408051601f19818403018152908290526103c5939291602001610d3a565b6040516020818303038152906040528051906020012090506000306001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561041d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104419190610d04565b6001600160a01b03166309f7abd2836040518263ffffffff1660e01b815260040161046e91815260200190565b602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190610d99565b60405163024eefab60e61b815263ffffffff8216600482015290915030906393bbeac090602401602060405180830381865afa1580156104f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105179190610dbf565b6105445760405163792c47cf60e11b81526001600160a01b03861660048201526024015b60405180910390fd5b604051634cc9040360e11b81526001600160a01b0386811660048301526024820186905230604483018190526064830152608482018590527f0000000000000000000000000000000000000000000000000000000000000000169063999208069060a4016020604051808303816000875af11580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190610d21565b5060006106187f000000000000000000000000000000000000000000000000000000000000000030610807565b90507f000000000000000000000000000000000000000000000000000000000000000081101561065b576040516309ca680760e41b815260040160405180910390fd5b505050505050565b6040805160018082528183019092526060916020808301908036833701905050905061068e826106f8565b816000815181106106a1576106a1610de1565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b604051635f5003c560e11b815260040160405180910390fd5b6106f46001600160a01b0383168260006108b1565b5050565b600080828060200190518101906103119190610d04565b6107436001600160a01b0383167f0000000000000000000000000000000000000000000000000000000000000000836108b1565b60405163173aba7160e21b81526001600160a01b038381166004830152602482018390523060448301527f00000000000000000000000000000000000000000000000000000000000000001690635ceae9c4906064016020604051808303816000875af11580156107b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107dc9190610d21565b506106f4827f000000000000000000000000000000000000000000000000000000000000000061092e565b604051632459428560e11b81526001600160a01b03828116600483015260009182918516906348b2850a90602401606060405180830381865afa158015610852573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108769190610df7565b9050600081604001511161088c576000196108a9565b602081015160408201516108a991670de0b6b3a7640000916109bd565b949350505050565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806109285760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b604482015260640161053b565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa15801561097e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a29190610d21565b11156106f4576106f46001600160a01b0383168260006108b1565b8282028115158415858304851417166109d557600080fd5b0492915050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610a0357600080fd5b813567ffffffffffffffff80821115610a1e57610a1e6109dc565b604051601f8301601f19908116603f01168101908282118183101715610a4657610a466109dc565b81604052838152866020858801011115610a5f57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215610a9457600080fd5b83359250602084013567ffffffffffffffff80821115610ab357600080fd5b610abf878388016109f2565b93506040860135915080821115610ad557600080fd5b50610ae2868287016109f2565b9150509250925092565b600060208284031215610afe57600080fd5b813567ffffffffffffffff811115610b1557600080fd5b6108a9848285016109f2565b6001600160a01b0381168114610b3657600080fd5b50565b600080600060608486031215610b4e57600080fd5b8335610b5981610b21565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b81811015610baf5783516001600160a01b031683529284019291840191600101610b8a565b50909695505050505050565b60008060008060808587031215610bd157600080fd5b843593506020850135610be381610b21565b9250604085013567ffffffffffffffff80821115610c0057600080fd5b610c0c888389016109f2565b93506060870135915080821115610c2257600080fd5b50610c2f878288016109f2565b91505092959194509250565b60008060408385031215610c4e57600080fd5b8235610c5981610b21565b91506020830135610c6981610b21565b809150509250929050565b60008060408385031215610c8757600080fd5b8235610c9281610b21565b946020939093013593505050565b60008060408385031215610cb357600080fd5b823567ffffffffffffffff80821115610ccb57600080fd5b610cd7868387016109f2565b93506020850135915080821115610ced57600080fd5b50610cfa858286016109f2565b9150509250929050565b600060208284031215610d1657600080fd5b815161031181610b21565b600060208284031215610d3357600080fd5b5051919050565b838152600060208415158184015260606040840152835180606085015260005b81811015610d7657858101830151858201608001528201610d5a565b506000608082860101526080601f19601f83011685010192505050949350505050565b600060208284031215610dab57600080fd5b815163ffffffff8116811461031157600080fd5b600060208284031215610dd157600080fd5b8151801515811461031157600080fd5b634e487b7160e01b600052603260045260246000fd5b600060608284031215610e0957600080fd5b6040516060810181811067ffffffffffffffff82111715610e2c57610e2c6109dc565b8060405250825181526020830151602082015260408301516040820152809150509291505056fea2646970667358221220d49b3ebebafe62c6e7cb0efe3e5039da6b768a199f56d22f65591f67cf61607c64736f6c63430008100033", + "sourceMap": "521:5593:201:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1749:44;;;;;;;;160:25:258;;;148:2;133:18;1749:44:201;;;;;;;;2415:78:188;;;2481:5;340:42:258;;328:2;313:18;2415:78:188;196:192:258;2784:136:201;;;;;;:::i;:::-;;:::i;:::-;;3535:217;;;;;;:::i;:::-;;:::i;2428:148::-;;;:::i;4087:82::-;;;4158:4;2507:41:258;;2495:2;2480:18;4087:82:201;2367:187:258;4599:925:201;;;;;;:::i;:::-;;:::i;5934:180:188:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3008:147:201:-;;;;;;:::i;:::-;;:::i;9204:107:188:-;;;;;;:::i;:::-;;:::i;1627:33:201:-;;;;;;;;-1:-1:-1;;;;;5100:32:258;;;5082:51;;5070:2;5055:18;1627:33:201;4917:222:258;3829:175:201;;;;;;:::i;:::-;;:::i;5774:338::-;;;;;;:::i;:::-;;:::i;3329:118::-;;;;;;:::i;:::-;3413:7;3329:118;;;;;2784:136;2876:37;;-1:-1:-1;;;2876:37:201;;;;;;;;;;;3535:217;3610:7;3629:18;3661:11;3650:34;;;;;;;;;;;;:::i;:::-;3701:44;;-1:-1:-1;;;3701:44:201;;-1:-1:-1;;;;;6740:15:258;;;3701:44:201;;;6722:34:258;3734:10:201;6772:18:258;;;6765:43;3629:55:201;;-1:-1:-1;3701:6:201;:20;;;;;;6657:18:258;;3701:44:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3694:51;3535:217;-1:-1:-1;;;3535:217:201:o;2428:148::-;2480:7;2516:52;;;;;;7210:2:258;7192:21;;;7249:2;7229:18;;;7222:30;7288:34;7283:2;7268:18;;7261:62;-1:-1:-1;;;7354:2:258;7339:18;;7332:36;7400:3;7385:19;;7008:402;2516:52:201;;;;;;;;;;;;;2506:63;;;;;;2499:70;;2428:148;:::o;4599:925::-;4799:20;4843:12;:10;:12::i;:::-;4863:22;;;-1:-1:-1;;;;;5100:32:258;;4863:22:201;;;5082:51:258;4857:4:201;;5055:18:258;4863:22:201;;;-1:-1:-1;;4863:22:201;;;;;;;;;;4832:54;;;;4863:22;4832:54;;:::i;:::-;;;;;;;;;;;;;4822:65;;;;;;4799:88;;4897:17;4932:4;-1:-1:-1;;;;;4917:30:201;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4917:60:201;;4978:12;4917:74;;;;;;;;;;;;;160:25:258;;148:2;133:18;;14:177;4917:74:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5006:48;;-1:-1:-1;;;5006:48:201;;370:10:258;358:23;;5006:48:201;;;340:42:258;4897:94:201;;-1:-1:-1;5021:4:201;;5006:36;;313:18:258;;5006:48:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5001:142;;5075:68;;-1:-1:-1;;;5075:68:201;;-1:-1:-1;;;;;5100:32:258;;5075:68:201;;;5082:51:258;5055:18;;5075:68:201;;;;;;;;5001:142;5185:86;;-1:-1:-1;;;5185:86:201;;-1:-1:-1;;;;;9683:15:258;;;5185:86:201;;;9665:34:258;9715:18;;;9708:34;;;5235:4:201;9758:18:258;;;9751:43;;;9810:18;;;9803:43;9862:19;;;9855:35;;;5185:6:201;:13;;;;9599:19:258;;5185:86:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5344:20;5367:43;5388:6;5404:4;5367:20;:43::i;:::-;5344:66;;5439:19;5424:12;:34;5420:97;;;5467:50;;-1:-1:-1;;;5467:50:201;;;;;;;;;;;5420:97;4705:819;;;4599:925;;;:::o;5934:180:188:-;6051:14;;;6063:1;6051:14;;;;;;;;;6009:21;;6051:14;;;;;;;;;;;-1:-1:-1;6051:14:188;6042:23;;6087:20;6095:11;6087:7;:20::i;:::-;6075:6;6082:1;6075:9;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;6075:32:188;;;-1:-1:-1;;;;;6075:32:188;;;;;5934:180;;;:::o;3008:147:201:-;3110:38;;-1:-1:-1;;;3110:38:201;;;;;;;;;;;9204:107:188;9275:29;-1:-1:-1;;;;;9275:17:188;;9293:7;9302:1;9275:17;:29::i;:::-;9204:107;;:::o;3829:175:201:-;3902:5;3919:16;3949:11;3938:32;;;;;;;;;;;;:::i;5774:338::-;5865:56;-1:-1:-1;;;;;5865:24:201;;5898:6;5907:13;5865:24;:56::i;:::-;5931:65;;-1:-1:-1;;;5931:65:201;;-1:-1:-1;;;;;10562:15:258;;;5931:65:201;;;10544:34:258;10594:18;;;10587:34;;;5990:4:201;10637:18:258;;;10630:43;5931:6:201;:12;;;;10479:18:258;;5931:65:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6051:54;6075:12;6097:6;6051:23;:54::i;629:358:202:-;780:26;;-1:-1:-1;;;780:26:202;;-1:-1:-1;;;;;5100:32:258;;;780:26:202;;;5082:51:258;714:7:202;;;;780:20;;;;;5055:18:258;;780:26:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;733:73;;857:1;836:13;:18;;;:22;:144;;-1:-1:-1;;836:144:202;;;902:21;;;;925:18;;;;877:67;;885:4;;877:24;:67::i;:::-;817:163;629:358;-1:-1:-1;;;;629:358:202:o;4327:1454:104:-;4438:12;4565:4;4559:11;-1:-1:-1;;;4688:17:104;4681:93;4821:2;4817:1;4798:17;4794:25;4787:37;4901:6;4896:2;4877:17;4873:26;4866:42;5703:2;5700:1;5696:2;5677:17;5674:1;5667:5;5660;5655:51;5224:16;5217:24;5211:2;5193:16;5190:24;5186:1;5182;5176:8;5173:15;5169:46;5166:76;4966:754;4955:765;;;5748:7;5740:34;;;;-1:-1:-1;;;5740:34:104;;11458:2:258;5740:34:104;;;11440:21:258;11497:2;11477:18;;;11470:30;-1:-1:-1;;;11516:18:258;;;11509:44;11570:18;;5740:34:104;11256:338:258;5740:34:104;4428:1353;4327:1454;;;:::o;8158:167:188:-;8244:39;;-1:-1:-1;;;8244:39:188;;8268:4;8244:39;;;6722:34:258;-1:-1:-1;;;;;6792:15:258;;;6772:18;;;6765:43;8286:1:188;;8244:15;;;;;;6657:18:258;;8244:39:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;8240:78;;;8289:29;-1:-1:-1;;;;;8289:17:188;;8307:7;8316:1;8289:17;:29::i;1357:535:221:-;1563:9;;;1694:19;;1687:27;1719:9;;1733;;;1730:16;;1716:31;1683:65;1673:121;;1778:1;1775;1768:12;1673:121;1857:19;;1357:535;-1:-1:-1;;1357:535:221:o;393:127:258:-;454:10;449:3;445:20;442:1;435:31;485:4;482:1;475:15;509:4;506:1;499:15;525:718;567:5;620:3;613:4;605:6;601:17;597:27;587:55;;638:1;635;628:12;587:55;674:6;661:20;700:18;737:2;733;730:10;727:36;;;743:18;;:::i;:::-;818:2;812:9;786:2;872:13;;-1:-1:-1;;868:22:258;;;892:2;864:31;860:40;848:53;;;916:18;;;936:22;;;913:46;910:72;;;962:18;;:::i;:::-;1002:10;998:2;991:22;1037:2;1029:6;1022:18;1083:3;1076:4;1071:2;1063:6;1059:15;1055:26;1052:35;1049:55;;;1100:1;1097;1090:12;1049:55;1164:2;1157:4;1149:6;1145:17;1138:4;1130:6;1126:17;1113:54;1211:1;1204:4;1199:2;1191:6;1187:15;1183:26;1176:37;1231:6;1222:15;;;;;;525:718;;;;:::o;1248:607::-;1343:6;1351;1359;1412:2;1400:9;1391:7;1387:23;1383:32;1380:52;;;1428:1;1425;1418:12;1380:52;1464:9;1451:23;1441:33;;1525:2;1514:9;1510:18;1497:32;1548:18;1589:2;1581:6;1578:14;1575:34;;;1605:1;1602;1595:12;1575:34;1628:49;1669:7;1660:6;1649:9;1645:22;1628:49;:::i;:::-;1618:59;;1730:2;1719:9;1715:18;1702:32;1686:48;;1759:2;1749:8;1746:16;1743:36;;;1775:1;1772;1765:12;1743:36;;1798:51;1841:7;1830:8;1819:9;1815:24;1798:51;:::i;:::-;1788:61;;;1248:607;;;;;:::o;1860:320::-;1928:6;1981:2;1969:9;1960:7;1956:23;1952:32;1949:52;;;1997:1;1994;1987:12;1949:52;2037:9;2024:23;2070:18;2062:6;2059:30;2056:50;;;2102:1;2099;2092:12;2056:50;2125:49;2166:7;2157:6;2146:9;2142:22;2125:49;:::i;2559:131::-;-1:-1:-1;;;;;2634:31:258;;2624:42;;2614:70;;2680:1;2677;2670:12;2614:70;2559:131;:::o;2695:383::-;2772:6;2780;2788;2841:2;2829:9;2820:7;2816:23;2812:32;2809:52;;;2857:1;2854;2847:12;2809:52;2896:9;2883:23;2915:31;2940:5;2915:31;:::i;:::-;2965:5;3017:2;3002:18;;2989:32;;-1:-1:-1;3068:2:258;3053:18;;;3040:32;;2695:383;-1:-1:-1;;;2695:383:258:o;3083:673::-;3269:2;3321:21;;;3391:13;;3294:18;;;3413:22;;;3240:4;;3269:2;3492:15;;;;3466:2;3451:18;;;3240:4;3535:195;3549:6;3546:1;3543:13;3535:195;;;3614:13;;-1:-1:-1;;;;;3610:39:258;3598:52;;3705:15;;;;3670:12;;;;3646:1;3564:9;3535:195;;;-1:-1:-1;3747:3:258;;3083:673;-1:-1:-1;;;;;;3083:673:258:o;3761:743::-;3865:6;3873;3881;3889;3942:3;3930:9;3921:7;3917:23;3913:33;3910:53;;;3959:1;3956;3949:12;3910:53;3995:9;3982:23;3972:33;;4055:2;4044:9;4040:18;4027:32;4068:31;4093:5;4068:31;:::i;:::-;4118:5;-1:-1:-1;4174:2:258;4159:18;;4146:32;4197:18;4227:14;;;4224:34;;;4254:1;4251;4244:12;4224:34;4277:49;4318:7;4309:6;4298:9;4294:22;4277:49;:::i;:::-;4267:59;;4379:2;4368:9;4364:18;4351:32;4335:48;;4408:2;4398:8;4395:16;4392:36;;;4424:1;4421;4414:12;4392:36;;4447:51;4490:7;4479:8;4468:9;4464:24;4447:51;:::i;:::-;4437:61;;;3761:743;;;;;;;:::o;4509:403::-;4592:6;4600;4653:2;4641:9;4632:7;4628:23;4624:32;4621:52;;;4669:1;4666;4659:12;4621:52;4708:9;4695:23;4727:31;4752:5;4727:31;:::i;:::-;4777:5;-1:-1:-1;4834:2:258;4819:18;;4806:32;4847:33;4806:32;4847:33;:::i;:::-;4899:7;4889:17;;;4509:403;;;;;:::o;5367:330::-;5450:6;5458;5511:2;5499:9;5490:7;5486:23;5482:32;5479:52;;;5527:1;5524;5517:12;5479:52;5566:9;5553:23;5585:31;5610:5;5585:31;:::i;:::-;5635:5;5687:2;5672:18;;;;5659:32;;-1:-1:-1;;;5367:330:258:o;5702:539::-;5788:6;5796;5849:2;5837:9;5828:7;5824:23;5820:32;5817:52;;;5865:1;5862;5855:12;5817:52;5905:9;5892:23;5934:18;5975:2;5967:6;5964:14;5961:34;;;5991:1;5988;5981:12;5961:34;6014:49;6055:7;6046:6;6035:9;6031:22;6014:49;:::i;:::-;6004:59;;6116:2;6105:9;6101:18;6088:32;6072:48;;6145:2;6135:8;6132:16;6129:36;;;6161:1;6158;6151:12;6129:36;;6184:51;6227:7;6216:8;6205:9;6201:24;6184:51;:::i;:::-;6174:61;;;5702:539;;;;;:::o;6246:259::-;6324:6;6377:2;6365:9;6356:7;6352:23;6348:32;6345:52;;;6393:1;6390;6383:12;6345:52;6425:9;6419:16;6444:31;6469:5;6444:31;:::i;6819:184::-;6889:6;6942:2;6930:9;6921:7;6917:23;6913:32;6910:52;;;6958:1;6955;6948:12;6910:52;-1:-1:-1;6981:16:258;;6819:184;-1:-1:-1;6819:184:258:o;7623:701::-;7820:6;7809:9;7802:25;7783:4;7846:2;7898:6;7891:14;7884:22;7879:2;7868:9;7864:18;7857:50;7943:2;7938;7927:9;7923:18;7916:30;7975:6;7969:13;8018:6;8013:2;8002:9;7998:18;7991:34;8043:1;8053:141;8067:6;8064:1;8061:13;8053:141;;;8163:14;;;8159:23;;8153:30;8128:17;;;8147:3;8124:27;8117:67;8082:10;;8053:141;;;8057:3;8244:1;8238:3;8229:6;8218:9;8214:22;8210:32;8203:43;8314:3;8307:2;8303:7;8298:2;8290:6;8286:15;8282:29;8271:9;8267:45;8263:55;8255:63;;;;7623:701;;;;;;:::o;8603:280::-;8672:6;8725:2;8713:9;8704:7;8700:23;8696:32;8693:52;;;8741:1;8738;8731:12;8693:52;8773:9;8767:16;8823:10;8816:5;8812:22;8805:5;8802:33;8792:61;;8849:1;8846;8839:12;9086:277;9153:6;9206:2;9194:9;9185:7;9181:23;9177:32;9174:52;;;9222:1;9219;9212:12;9174:52;9254:9;9248:16;9307:5;9300:13;9293:21;9286:5;9283:32;9273:60;;9329:1;9326;9319:12;9901:127;9962:10;9957:3;9953:20;9950:1;9943:31;9993:4;9990:1;9983:15;10017:4;10014:1;10007:15;10684:567;10786:6;10839:2;10827:9;10818:7;10814:23;10810:32;10807:52;;;10855:1;10852;10845:12;10807:52;10888:2;10882:9;10930:2;10922:6;10918:15;10999:6;10987:10;10984:22;10963:18;10951:10;10948:34;10945:62;10942:88;;;11010:18;;:::i;:::-;11050:10;11046:2;11039:22;;11091:9;11085:16;11077:6;11070:32;11156:2;11145:9;11141:18;11135:25;11130:2;11122:6;11118:15;11111:50;11215:2;11204:9;11200:18;11194:25;11189:2;11181:6;11177:15;11170:50;11239:6;11229:16;;;10684:567;;;;:::o", + "linkReferences": {}, + "immutableReferences": { + "66313": [ + { + "start": 470, + "length": 32 + }, + { + "start": 676, + "length": 32 + }, + { + "start": 1406, + "length": 32 + }, + { + "start": 1523, + "length": 32 + }, + { + "start": 1822, + "length": 32 + }, + { + "start": 1903, + "length": 32 + }, + { + "start": 2019, + "length": 32 + } + ], + "66316": [ + { + "start": 244, + "length": 32 + }, + { + "start": 1564, + "length": 32 + } + ] + } + }, + "methodIdentifiers": { + "assetOf(bytes)": "e170a9bf", + "assetsUsed(bytes)": "aeffddde", + "balanceOf(bytes)": "78415365", + "borrowFromAaveV3Morpho(address,uint256,uint256)": "a6cfba9a", + "deposit(uint256,bytes,bytes)": "69445c31", + "identifier()": "7998a1c4", + "isDebt()": "89353a09", + "minimumHealthFactor()": "1caff8b1", + "morpho()": "d8fbc833", + "repayAaveV3MorphoDebt(address,uint256)": "e5afd9b6", + "revokeApproval(address,address)": "d3bfe76a", + "slippage()": "3e032a3b", + "withdraw(uint256,address,bytes,bytes)": "c9111bd7", + "withdrawableFrom(bytes,bytes)": "fa50e5d2" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_morpho\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minHealthFactor\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BaseAdaptor__ConstructorHealthFactorTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__ExternalReceiverBlocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"BaseAdaptor__PricingNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__Slippage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__UserDepositsNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BaseAdaptor__UserWithdrawsNotAllowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"untrackedDebtPosition\",\"type\":\"address\"}],\"name\":\"MorphoAaveV3DebtTokenAdaptor__DebtPositionsMustBeTracked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MorphoAaveV3DebtTokenAdaptor__HealthFactorTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"}],\"name\":\"assetOf\",\"outputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"}],\"name\":\"assetsUsed\",\"outputs\":[{\"internalType\":\"contract ERC20[]\",\"name\":\"assets\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"adaptorData\",\"type\":\"bytes\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"underlying\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountToBorrow\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxIterations\",\"type\":\"uint256\"}],\"name\":\"borrowFromAaveV3Morpho\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"identifier\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isDebt\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumHealthFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"morpho\",\"outputs\":[{\"internalType\":\"contract IMorphoV3\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"tokenToRepay\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountToRepay\",\"type\":\"uint256\"}],\"name\":\"repayAaveV3MorphoDebt\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"revokeApproval\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slippage\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"withdrawableFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"crispymangoes\",\"errors\":{\"MorphoAaveV3DebtTokenAdaptor__DebtPositionsMustBeTracked(address)\":[{\"params\":{\"untrackedDebtPosition\":\"the address of the untracked loan\"}}]},\"kind\":\"dev\",\"methods\":{\"borrowFromAaveV3Morpho(address,uint256,uint256)\":{\"params\":{\"amountToBorrow\":\"the amount of `debtTokenToBorrow` to borrow on Morpho.\",\"underlying\":\"the debtToken to borrow on Morpho\"}},\"identifier()\":{\"details\":\"Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this Identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult.\"},\"repayAaveV3MorphoDebt(address,uint256)\":{\"params\":{\"amountToRepay\":\"the amount of `tokenToRepay` to repay with.\",\"tokenToRepay\":\"the underlying ERC20 token you want to repay, NOT the debtToken.\"}},\"revokeApproval(address,address)\":{\"params\":{\"asset\":\"the ERC20 asset to revoke `spender`s approval for\",\"spender\":\"the address to revoke approval for\"}}},\"title\":\"Morpho Aave V3 debtToken Adaptor\",\"version\":1},\"userdoc\":{\"errors\":{\"BaseAdaptor__ConstructorHealthFactorTooLow()\":[{\"notice\":\"Attempted to set a constructor minimum health factor to a value below `MINIMUM_CONSTRUCTOR_HEALTH_FACTOR()`.\"}],\"BaseAdaptor__ExternalReceiverBlocked()\":[{\"notice\":\"Attempted to specify an external receiver during a Cellar `callOnAdaptor` call.\"}],\"BaseAdaptor__PricingNotSupported(address)\":[{\"notice\":\"Attempted swap used unsupported output asset.\"}],\"BaseAdaptor__Slippage()\":[{\"notice\":\"Attempted swap has bad slippage.\"}],\"BaseAdaptor__UserDepositsNotAllowed()\":[{\"notice\":\"Attempted to deposit to a position where user deposits were not allowed.\"}],\"BaseAdaptor__UserWithdrawsNotAllowed()\":[{\"notice\":\"Attempted to withdraw from a position where user withdraws were not allowed.\"}],\"MorphoAaveV3DebtTokenAdaptor__DebtPositionsMustBeTracked(address)\":[{\"notice\":\"Strategist attempted to open an untracked Morpho loan.\"}],\"MorphoAaveV3DebtTokenAdaptor__HealthFactorTooLow()\":[{\"notice\":\"Attempted borrow would lower Cellar health factor too low.\"}]},\"kind\":\"user\",\"methods\":{\"assetOf(bytes)\":{\"notice\":\"Returns the positions underlying asset.\"},\"assetsUsed(bytes)\":{\"notice\":\"When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup.\"},\"balanceOf(bytes)\":{\"notice\":\"Returns the cellars balance of the positions debt.\"},\"borrowFromAaveV3Morpho(address,uint256,uint256)\":{\"notice\":\"Allows strategists to borrow assets from Morpho.`debtTokenToBorrow` must be the debtToken, NOT the underlying ERC20.\"},\"deposit(uint256,bytes,bytes)\":{\"notice\":\"User deposits are NOT allowed into this position.\"},\"isDebt()\":{\"notice\":\"This adaptor reports values in terms of debt.\"},\"minimumHealthFactor()\":{\"notice\":\"Minimum Health Factor enforced after every borrow.\"},\"morpho()\":{\"notice\":\"The Morpho Aave V3 contract on current network.For mainnet use 0x33333aea097c193e66081E930c33020272b33333.\"},\"repayAaveV3MorphoDebt(address,uint256)\":{\"notice\":\"Allows strategists to repay loan debt on Morpho.\"},\"revokeApproval(address,address)\":{\"notice\":\"Allows strategists to zero out an approval for a given `asset`.\"},\"slippage()\":{\"notice\":\"Max possible slippage when making a swap router swap.\"},\"withdraw(uint256,address,bytes,bytes)\":{\"notice\":\"User withdraws are NOT allowed from this position.\"},\"withdrawableFrom(bytes,bytes)\":{\"notice\":\"This position is a debt position, and user withdraws are not allowed so this position must return 0 for withdrawableFrom.\"}},\"notice\":\"Allows Cellars to interact with Morpho Aave V3 debtToken positions.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/modules/adaptors/Morpho/MorphoAaveV3DebtTokenAdaptor.sol\":\"MorphoAaveV3DebtTokenAdaptor\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/\",\":@balancer/=lib/balancer-v2-monorepo/pkg/\",\":@chainlink/=lib/chainlink/\",\":@ds-test/=lib/forge-std/lib/ds-test/src/\",\":@ensdomains/=node_modules/@ensdomains/\",\":@forge-std/=lib/forge-std/src/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@solmate/=lib/solmate/src/\",\":@uniswap/v3-core/=lib/v3-core/\",\":@uniswap/v3-periphery/=lib/v3-periphery/\",\":@uniswapV3C/=lib/v3-core/contracts/\",\":@uniswapV3P/=lib/v3-periphery/contracts/\",\":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/\",\":balancer-v2-monorepo/=lib/balancer-v2-monorepo/\",\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\":compound-protocol/=lib/compound-protocol/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/src/\",\":v3-core.git/=lib/v3-core.git/contracts/\",\":v3-core/=lib/v3-core/contracts/\",\":v3-periphery.git/=lib/v3-periphery.git/contracts/\",\":v3-periphery/=lib/v3-periphery/contracts/\"]},\"sources\":{\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\":{\"keccak256\":\"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\",\"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\"]},\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\":{\"keccak256\":\"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\",\"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\"]},\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\",\"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol\":{\"keccak256\":\"0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf\",\"dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de\",\"dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929\",\"dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg\"]},\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\",\"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\":{\"keccak256\":\"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\",\"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\",\"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\"]},\"lib/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\",\"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\"]},\"lib/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\",\"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\"]},\"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\":{\"keccak256\":\"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\",\"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\"]},\"src/Registry.sol\":{\"keccak256\":\"0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189\",\"dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK\"]},\"src/base/Cellar.sol\":{\"keccak256\":\"0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058\",\"dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs\"]},\"src/base/ERC20.sol\":{\"keccak256\":\"0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4\",\"dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf\"]},\"src/base/ERC4626.sol\":{\"keccak256\":\"0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469\",\"dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE\"]},\"src/base/Multicall.sol\":{\"keccak256\":\"0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c\",\"dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K\"]},\"src/base/SafeTransferLib.sol\":{\"keccak256\":\"0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a\",\"dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3\"]},\"src/interfaces/IMulticall.sol\":{\"keccak256\":\"0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0\",\"dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5\"]},\"src/interfaces/external/IChainlinkAggregator.sol\":{\"keccak256\":\"0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2\",\"dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs\"]},\"src/interfaces/external/IGravity.sol\":{\"keccak256\":\"0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51\",\"dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c\"]},\"src/interfaces/external/IUniswapV2Router02.sol\":{\"keccak256\":\"0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a\",\"dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo\"]},\"src/interfaces/external/IUniswapV3Router.sol\":{\"keccak256\":\"0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd\",\"dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK\"]},\"src/interfaces/external/Morpho/IMorphoV3.sol\":{\"keccak256\":\"0xb7d9b09efb93ccd8deacb62a899512f2e8d467682158dc73e936c27aedba3dd9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://6ed4d09ea863c00bad9b19e1b8bc1ab8568a5b1c972b2ef4c02901f019d58241\",\"dweb:/ipfs/Qmd4873kMieGZd4K5BuKU6eCPxmczFEQ8BqaGyVbh3YtYE\"]},\"src/interfaces/external/UniswapV3Pool.sol\":{\"keccak256\":\"0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb\",\"urls\":[\"bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9\",\"dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh\"]},\"src/modules/adaptors/BaseAdaptor.sol\":{\"keccak256\":\"0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee\",\"dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd\"]},\"src/modules/adaptors/Morpho/MorphoAaveV3DebtTokenAdaptor.sol\":{\"keccak256\":\"0x141aef427919f12f7fce953ba5ed28616bab4cb8359db03914ee0cde943ba352\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f838a11b43353bf9734526aa4b45b7668ca4cff16361321de6c112026a7e526c\",\"dweb:/ipfs/QmS5ebjUjMHbcqGxd54cUSkweUmZXs5G7TWg7Q28qccffo\"]},\"src/modules/adaptors/Morpho/MorphoAaveV3HealthFactorLogic.sol\":{\"keccak256\":\"0x2e5863d04838373cd7d8e5bb96105bbd170b5b99faaf7aa22b58be42d433ed9f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c246aee962bb5a21a4ee17b87b6b30b1eef98c21facd43724d3e4c972da37188\",\"dweb:/ipfs/QmWH8Aq1V9RUPCxQhdBeACy2RGxznub6J7cKE6hqK55Aoh\"]},\"src/modules/price-router/Extensions/Extension.sol\":{\"keccak256\":\"0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1\",\"dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo\"]},\"src/modules/price-router/PriceRouter.sol\":{\"keccak256\":\"0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66\",\"dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K\"]},\"src/modules/swap-router/SwapRouter.sol\":{\"keccak256\":\"0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818\",\"dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr\"]},\"src/utils/Math.sol\":{\"keccak256\":\"0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312\",\"dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r\"]},\"src/utils/Uint32Array.sol\":{\"keccak256\":\"0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944\",\"dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.16+commit.07a7930e" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_morpho", + "type": "address" + }, + { + "internalType": "uint256", + "name": "minHealthFactor", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__ConstructorHealthFactorTooLow" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__ExternalReceiverBlocked" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "asset", + "type": "address" + } + ], + "type": "error", + "name": "BaseAdaptor__PricingNotSupported" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__Slippage" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__UserDepositsNotAllowed" + }, + { + "inputs": [], + "type": "error", + "name": "BaseAdaptor__UserWithdrawsNotAllowed" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "untrackedDebtPosition", + "type": "address" + } + ], + "type": "error", + "name": "MorphoAaveV3DebtTokenAdaptor__DebtPositionsMustBeTracked" + }, + { + "inputs": [], + "type": "error", + "name": "MorphoAaveV3DebtTokenAdaptor__HealthFactorTooLow" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "stateMutability": "pure", + "type": "function", + "name": "assetOf", + "outputs": [ + { + "internalType": "contract ERC20", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "assetsUsed", + "outputs": [ + { + "internalType": "contract ERC20[]", + "name": "assets", + "type": "address[]" + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "adaptorData", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function", + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "address", + "name": "underlying", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountToBorrow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxIterations", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "borrowFromAaveV3Morpho" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "pure", + "type": "function", + "name": "deposit" + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "identifier", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ] + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "isDebt", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "minimumHealthFactor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "morpho", + "outputs": [ + { + "internalType": "contract IMorphoV3", + "name": "", + "type": "address" + } + ] + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "tokenToRepay", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountToRepay", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "repayAaveV3MorphoDebt" + }, + { + "inputs": [ + { + "internalType": "contract ERC20", + "name": "asset", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "revokeApproval" + }, + { + "inputs": [], + "stateMutability": "pure", + "type": "function", + "name": "slippage", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ] + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "pure", + "type": "function", + "name": "withdraw" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "pure", + "type": "function", + "name": "withdrawableFrom", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "borrowFromAaveV3Morpho(address,uint256,uint256)": { + "params": { + "amountToBorrow": "the amount of `debtTokenToBorrow` to borrow on Morpho.", + "underlying": "the debtToken to borrow on Morpho" + } + }, + "identifier()": { + "details": "Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this Identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult." + }, + "repayAaveV3MorphoDebt(address,uint256)": { + "params": { + "amountToRepay": "the amount of `tokenToRepay` to repay with.", + "tokenToRepay": "the underlying ERC20 token you want to repay, NOT the debtToken." + } + }, + "revokeApproval(address,address)": { + "params": { + "asset": "the ERC20 asset to revoke `spender`s approval for", + "spender": "the address to revoke approval for" + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "assetOf(bytes)": { + "notice": "Returns the positions underlying asset." + }, + "assetsUsed(bytes)": { + "notice": "When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup." + }, + "balanceOf(bytes)": { + "notice": "Returns the cellars balance of the positions debt." + }, + "borrowFromAaveV3Morpho(address,uint256,uint256)": { + "notice": "Allows strategists to borrow assets from Morpho.`debtTokenToBorrow` must be the debtToken, NOT the underlying ERC20." + }, + "deposit(uint256,bytes,bytes)": { + "notice": "User deposits are NOT allowed into this position." + }, + "isDebt()": { + "notice": "This adaptor reports values in terms of debt." + }, + "minimumHealthFactor()": { + "notice": "Minimum Health Factor enforced after every borrow." + }, + "morpho()": { + "notice": "The Morpho Aave V3 contract on current network.For mainnet use 0x33333aea097c193e66081E930c33020272b33333." + }, + "repayAaveV3MorphoDebt(address,uint256)": { + "notice": "Allows strategists to repay loan debt on Morpho." + }, + "revokeApproval(address,address)": { + "notice": "Allows strategists to zero out an approval for a given `asset`." + }, + "slippage()": { + "notice": "Max possible slippage when making a swap router swap." + }, + "withdraw(uint256,address,bytes,bytes)": { + "notice": "User withdraws are NOT allowed from this position." + }, + "withdrawableFrom(bytes,bytes)": { + "notice": "This position is a debt position, and user withdraws are not allowed so this position must return 0 for withdrawableFrom." + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + ":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/", + ":@balancer/=lib/balancer-v2-monorepo/pkg/", + ":@chainlink/=lib/chainlink/", + ":@ds-test/=lib/forge-std/lib/ds-test/src/", + ":@ensdomains/=node_modules/@ensdomains/", + ":@forge-std/=lib/forge-std/src/", + ":@openzeppelin/=lib/openzeppelin-contracts/", + ":@solmate/=lib/solmate/src/", + ":@uniswap/v3-core/=lib/v3-core/", + ":@uniswap/v3-periphery/=lib/v3-periphery/", + ":@uniswapV3C/=lib/v3-core/contracts/", + ":@uniswapV3P/=lib/v3-periphery/contracts/", + ":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/", + ":balancer-v2-monorepo/=lib/balancer-v2-monorepo/", + ":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/", + ":compound-protocol/=lib/compound-protocol/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":eth-gas-reporter/=node_modules/eth-gas-reporter/", + ":forge-std/=lib/forge-std/src/", + ":hardhat/=node_modules/hardhat/", + ":openzeppelin-contracts/=lib/openzeppelin-contracts/", + ":solmate/=lib/solmate/src/", + ":v3-core.git/=lib/v3-core.git/contracts/", + ":v3-core/=lib/v3-core/contracts/", + ":v3-periphery.git/=lib/v3-periphery.git/contracts/", + ":v3-periphery/=lib/v3-periphery/contracts/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/modules/adaptors/Morpho/MorphoAaveV3DebtTokenAdaptor.sol": "MorphoAaveV3DebtTokenAdaptor" + }, + "libraries": {} + }, + "sources": { + "lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol": { + "keccak256": "0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7", + "urls": [ + "bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465", + "dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a" + ], + "license": "MIT" + }, + "lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol": { + "keccak256": "0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2", + "urls": [ + "bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b", + "dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG" + ], + "license": "MIT" + }, + "lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol": { + "keccak256": "0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846", + "urls": [ + "bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7", + "dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/access/Ownable.sol": { + "keccak256": "0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673", + "urls": [ + "bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2", + "dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol": { + "keccak256": "0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da", + "urls": [ + "bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708", + "dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol": { + "keccak256": "0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028", + "urls": [ + "bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf", + "dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Address.sol": { + "keccak256": "0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700", + "urls": [ + "bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de", + "dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Context.sol": { + "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", + "urls": [ + "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", + "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol": { + "keccak256": "0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb", + "urls": [ + "bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929", + "dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg" + ], + "license": "MIT" + }, + "lib/solmate/src/auth/Owned.sol": { + "keccak256": "0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea", + "urls": [ + "bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4", + "dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx" + ], + "license": "AGPL-3.0-only" + }, + "lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol": { + "keccak256": "0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968", + "urls": [ + "bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e", + "dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol": { + "keccak256": "0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634", + "urls": [ + "bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5", + "dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol": { + "keccak256": "0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5", + "urls": [ + "bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7", + "dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol": { + "keccak256": "0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b", + "urls": [ + "bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa", + "dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol": { + "keccak256": "0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd", + "urls": [ + "bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03", + "dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol": { + "keccak256": "0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7", + "urls": [ + "bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047", + "dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol": { + "keccak256": "0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235", + "urls": [ + "bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735", + "dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol": { + "keccak256": "0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43", + "urls": [ + "bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea", + "dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-core/contracts/libraries/FullMath.sol": { + "keccak256": "0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645", + "urls": [ + "bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125", + "dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd" + ], + "license": "MIT" + }, + "lib/v3-core/contracts/libraries/TickMath.sol": { + "keccak256": "0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129", + "urls": [ + "bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c", + "dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS" + ], + "license": "GPL-2.0-or-later" + }, + "lib/v3-periphery/contracts/libraries/OracleLibrary.sol": { + "keccak256": "0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b", + "urls": [ + "bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53", + "dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM" + ], + "license": "GPL-2.0-or-later" + }, + "src/Registry.sol": { + "keccak256": "0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47", + "urls": [ + "bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189", + "dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK" + ], + "license": "Apache-2.0" + }, + "src/base/Cellar.sol": { + "keccak256": "0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47", + "urls": [ + "bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058", + "dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs" + ], + "license": "Apache-2.0" + }, + "src/base/ERC20.sol": { + "keccak256": "0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02", + "urls": [ + "bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4", + "dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf" + ], + "license": "AGPL-3.0-only" + }, + "src/base/ERC4626.sol": { + "keccak256": "0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7", + "urls": [ + "bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469", + "dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE" + ], + "license": "AGPL-3.0-only" + }, + "src/base/Multicall.sol": { + "keccak256": "0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9", + "urls": [ + "bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c", + "dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K" + ], + "license": "GPL-2.0-or-later" + }, + "src/base/SafeTransferLib.sol": { + "keccak256": "0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324", + "urls": [ + "bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a", + "dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3" + ], + "license": "AGPL-3.0-only" + }, + "src/interfaces/IMulticall.sol": { + "keccak256": "0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e", + "urls": [ + "bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0", + "dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5" + ], + "license": "GPL-2.0-or-later" + }, + "src/interfaces/external/IChainlinkAggregator.sol": { + "keccak256": "0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d", + "urls": [ + "bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2", + "dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/IGravity.sol": { + "keccak256": "0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11", + "urls": [ + "bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51", + "dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/IUniswapV2Router02.sol": { + "keccak256": "0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f", + "urls": [ + "bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a", + "dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/IUniswapV3Router.sol": { + "keccak256": "0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355", + "urls": [ + "bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd", + "dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK" + ], + "license": "GPL-2.0-or-later" + }, + "src/interfaces/external/Morpho/IMorphoV3.sol": { + "keccak256": "0xb7d9b09efb93ccd8deacb62a899512f2e8d467682158dc73e936c27aedba3dd9", + "urls": [ + "bzz-raw://6ed4d09ea863c00bad9b19e1b8bc1ab8568a5b1c972b2ef4c02901f019d58241", + "dweb:/ipfs/Qmd4873kMieGZd4K5BuKU6eCPxmczFEQ8BqaGyVbh3YtYE" + ], + "license": "Apache-2.0" + }, + "src/interfaces/external/UniswapV3Pool.sol": { + "keccak256": "0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb", + "urls": [ + "bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9", + "dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh" + ], + "license": null + }, + "src/modules/adaptors/BaseAdaptor.sol": { + "keccak256": "0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c", + "urls": [ + "bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee", + "dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd" + ], + "license": "Apache-2.0" + }, + "src/modules/adaptors/Morpho/MorphoAaveV3DebtTokenAdaptor.sol": { + "keccak256": "0x141aef427919f12f7fce953ba5ed28616bab4cb8359db03914ee0cde943ba352", + "urls": [ + "bzz-raw://f838a11b43353bf9734526aa4b45b7668ca4cff16361321de6c112026a7e526c", + "dweb:/ipfs/QmS5ebjUjMHbcqGxd54cUSkweUmZXs5G7TWg7Q28qccffo" + ], + "license": "Apache-2.0" + }, + "src/modules/adaptors/Morpho/MorphoAaveV3HealthFactorLogic.sol": { + "keccak256": "0x2e5863d04838373cd7d8e5bb96105bbd170b5b99faaf7aa22b58be42d433ed9f", + "urls": [ + "bzz-raw://c246aee962bb5a21a4ee17b87b6b30b1eef98c21facd43724d3e4c972da37188", + "dweb:/ipfs/QmWH8Aq1V9RUPCxQhdBeACy2RGxznub6J7cKE6hqK55Aoh" + ], + "license": "Apache-2.0" + }, + "src/modules/price-router/Extensions/Extension.sol": { + "keccak256": "0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d", + "urls": [ + "bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1", + "dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo" + ], + "license": "Apache-2.0" + }, + "src/modules/price-router/PriceRouter.sol": { + "keccak256": "0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9", + "urls": [ + "bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66", + "dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K" + ], + "license": "Apache-2.0" + }, + "src/modules/swap-router/SwapRouter.sol": { + "keccak256": "0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80", + "urls": [ + "bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818", + "dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr" + ], + "license": "Apache-2.0" + }, + "src/utils/Math.sol": { + "keccak256": "0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f", + "urls": [ + "bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312", + "dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r" + ], + "license": "Apache-2.0" + }, + "src/utils/Uint32Array.sol": { + "keccak256": "0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9", + "urls": [ + "bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944", + "dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3" + ], + "license": "Apache-2.0" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/modules/adaptors/Morpho/MorphoAaveV3DebtTokenAdaptor.sol", + "id": 66591, + "exportedSymbols": { + "BaseAdaptor": [ + 61644 + ], + "Cellar": [ + 44434 + ], + "ERC20": [ + 45747 + ], + "IMorphoV3": [ + 53563 + ], + "Math": [ + 74811 + ], + "MorphoAaveV3DebtTokenAdaptor": [ + 66590 + ], + "MorphoAaveV3HealthFactorLogic": [ + 66644 + ], + "Registry": [ + 41024 + ], + "SafeTransferLib": [ + 46498 + ] + }, + "nodeType": "SourceUnit", + "src": "39:6076:201", + "nodes": [ + { + "id": 66278, + "nodeType": "PragmaDirective", + "src": "39:23:201", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".16" + ] + }, + { + "id": 66285, + "nodeType": "ImportDirective", + "src": "64:115:201", + "nodes": [], + "absolutePath": "src/modules/adaptors/BaseAdaptor.sol", + "file": "src/modules/adaptors/BaseAdaptor.sol", + "nameLocation": "-1:-1:-1", + "scope": 66591, + "sourceUnit": 61645, + "symbolAliases": [ + { + "foreign": { + "id": 66279, + "name": "BaseAdaptor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61644, + "src": "73:11:201", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 66280, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45747, + "src": "86:5:201", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 66281, + "name": "SafeTransferLib", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46498, + "src": "93:15:201", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 66282, + "name": "Cellar", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44434, + "src": "110:6:201", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 66283, + "name": "Registry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 41024, + "src": "118:8:201", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 66284, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74811, + "src": "128:4:201", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 66287, + "nodeType": "ImportDirective", + "src": "180:73:201", + "nodes": [], + "absolutePath": "src/interfaces/external/Morpho/IMorphoV3.sol", + "file": "src/interfaces/external/Morpho/IMorphoV3.sol", + "nameLocation": "-1:-1:-1", + "scope": 66591, + "sourceUnit": 53564, + "symbolAliases": [ + { + "foreign": { + "id": 66286, + "name": "IMorphoV3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 53563, + "src": "189:9:201", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 66289, + "nodeType": "ImportDirective", + "src": "254:110:201", + "nodes": [], + "absolutePath": "src/modules/adaptors/Morpho/MorphoAaveV3HealthFactorLogic.sol", + "file": "src/modules/adaptors/Morpho/MorphoAaveV3HealthFactorLogic.sol", + "nameLocation": "-1:-1:-1", + "scope": 66591, + "sourceUnit": 66645, + "symbolAliases": [ + { + "foreign": { + "id": 66288, + "name": "MorphoAaveV3HealthFactorLogic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66644, + "src": "263:29:201", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "id": 66590, + "nodeType": "ContractDefinition", + "src": "521:5593:201", + "nodes": [ + { + "id": 66298, + "nodeType": "UsingForDirective", + "src": "611:32:201", + "nodes": [], + "global": false, + "libraryName": { + "id": 66295, + "name": "SafeTransferLib", + "nameLocations": [ + "617:15:201" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46498, + "src": "617:15:201" + }, + "typeName": { + "id": 66297, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 66296, + "name": "ERC20", + "nameLocations": [ + "637:5:201" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "637:5:201" + }, + "referencedDeclaration": 45747, + "src": "637:5:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + } + }, + { + "id": 66301, + "nodeType": "UsingForDirective", + "src": "648:23:201", + "nodes": [], + "global": false, + "libraryName": { + "id": 66299, + "name": "Math", + "nameLocations": [ + "654:4:201" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 74811, + "src": "654:4:201" + }, + "typeName": { + "id": 66300, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "663:7:201", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 66304, + "nodeType": "ErrorDefinition", + "src": "1154:57:201", + "nodes": [], + "documentation": { + "id": 66302, + "nodeType": "StructuredDocumentation", + "src": "1066:83:201", + "text": "@notice Attempted borrow would lower Cellar health factor too low." + }, + "errorSelector": "9ca68070", + "name": "MorphoAaveV3DebtTokenAdaptor__HealthFactorTooLow", + "nameLocation": "1160:48:201", + "parameters": { + "id": 66303, + "nodeType": "ParameterList", + "parameters": [], + "src": "1208:2:201" + } + }, + { + "id": 66309, + "nodeType": "ErrorDefinition", + "src": "1373:94:201", + "nodes": [], + "documentation": { + "id": 66305, + "nodeType": "StructuredDocumentation", + "src": "1217:151:201", + "text": " @notice Strategist attempted to open an untracked Morpho loan.\n @param untrackedDebtPosition the address of the untracked loan" + }, + "errorSelector": "f2588f9e", + "name": "MorphoAaveV3DebtTokenAdaptor__DebtPositionsMustBeTracked", + "nameLocation": "1379:56:201", + "parameters": { + "id": 66308, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66307, + "mutability": "mutable", + "name": "untrackedDebtPosition", + "nameLocation": "1444:21:201", + "nodeType": "VariableDeclaration", + "scope": 66309, + "src": "1436:29:201", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 66306, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1436:7:201", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1435:31:201" + } + }, + { + "id": 66313, + "nodeType": "VariableDeclaration", + "src": "1627:33:201", + "nodes": [], + "constant": false, + "documentation": { + "id": 66310, + "nodeType": "StructuredDocumentation", + "src": "1473:149:201", + "text": " @notice The Morpho Aave V3 contract on current network.\n @notice For mainnet use 0x33333aea097c193e66081E930c33020272b33333." + }, + "functionSelector": "d8fbc833", + "mutability": "immutable", + "name": "morpho", + "nameLocation": "1654:6:201", + "scope": 66590, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + }, + "typeName": { + "id": 66312, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 66311, + "name": "IMorphoV3", + "nameLocations": [ + "1627:9:201" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 53563, + "src": "1627:9:201" + }, + "referencedDeclaration": 53563, + "src": "1627:9:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "visibility": "public" + }, + { + "id": 66316, + "nodeType": "VariableDeclaration", + "src": "1749:44:201", + "nodes": [], + "constant": false, + "documentation": { + "id": 66314, + "nodeType": "StructuredDocumentation", + "src": "1667:77:201", + "text": " @notice Minimum Health Factor enforced after every borrow." + }, + "functionSelector": "1caff8b1", + "mutability": "immutable", + "name": "minimumHealthFactor", + "nameLocation": "1774:19:201", + "scope": 66590, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66315, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1749:7:201", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "id": 66338, + "nodeType": "FunctionDefinition", + "src": "1800:209:201", + "nodes": [], + "body": { + "id": 66337, + "nodeType": "Block", + "src": "1854:155:201", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 66324, + "name": "minHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66320, + "src": "1902:15:201", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 66323, + "name": "_verifyConstructorMinimumHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61626, + "src": "1864:37:201", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 66325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1864:54:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 66326, + "nodeType": "ExpressionStatement", + "src": "1864:54:201" + }, + { + "expression": { + "id": 66331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 66327, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66313, + "src": "1928:6:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 66329, + "name": "_morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66318, + "src": "1947:7:201", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 66328, + "name": "IMorphoV3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 53563, + "src": "1937:9:201", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IMorphoV3_$53563_$", + "typeString": "type(contract IMorphoV3)" + } + }, + "id": 66330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1937:18:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "src": "1928:27:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "id": 66332, + "nodeType": "ExpressionStatement", + "src": "1928:27:201" + }, + { + "expression": { + "id": 66335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 66333, + "name": "minimumHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66316, + "src": "1965:19:201", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 66334, + "name": "minHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66320, + "src": "1987:15:201", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1965:37:201", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 66336, + "nodeType": "ExpressionStatement", + "src": "1965:37:201" + } + ] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 66321, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66318, + "mutability": "mutable", + "name": "_morpho", + "nameLocation": "1820:7:201", + "nodeType": "VariableDeclaration", + "scope": 66338, + "src": "1812:15:201", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 66317, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1812:7:201", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 66320, + "mutability": "mutable", + "name": "minHealthFactor", + "nameLocation": "1837:15:201", + "nodeType": "VariableDeclaration", + "scope": 66338, + "src": "1829:23:201", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66319, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1829:7:201", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1811:42:201" + }, + "returnParameters": { + "id": 66322, + "nodeType": "ParameterList", + "parameters": [], + "src": "1854:0:201" + }, + "scope": 66590, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 66353, + "nodeType": "FunctionDefinition", + "src": "2428:148:201", + "nodes": [], + "body": { + "id": 66352, + "nodeType": "Block", + "src": "2489:87:201", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "4d6f7270686f20416176652056332064656274546f6b656e2041646170746f72205620312e31", + "id": 66348, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2527:40:201", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9c65ad04dd6bddd7acf7ad2140a2a4e04fadd2b84fa8c11178dbf5ab2522b57", + "typeString": "literal_string \"Morpho Aave V3 debtToken Adaptor V 1.1\"" + }, + "value": "Morpho Aave V3 debtToken Adaptor V 1.1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a9c65ad04dd6bddd7acf7ad2140a2a4e04fadd2b84fa8c11178dbf5ab2522b57", + "typeString": "literal_string \"Morpho Aave V3 debtToken Adaptor V 1.1\"" + } + ], + "expression": { + "id": 66346, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2516:3:201", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 66347, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2520:6:201", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "2516:10:201", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 66349, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2516:52:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 66345, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2506:9:201", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 66350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2506:63:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 66344, + "id": 66351, + "nodeType": "Return", + "src": "2499:70:201" + } + ] + }, + "baseFunctions": [ + 61410 + ], + "documentation": { + "id": 66339, + "nodeType": "StructuredDocumentation", + "src": "2127:296:201", + "text": " @dev Identifier unique to this adaptor for a shared registry.\n Normally the identifier would just be the address of this contract, but this\n Identifier is needed during Cellar Delegate Call Operations, so getting the address\n of the adaptor is more difficult." + }, + "functionSelector": "7998a1c4", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "identifier", + "nameLocation": "2437:10:201", + "overrides": { + "id": 66341, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2462:8:201" + }, + "parameters": { + "id": 66340, + "nodeType": "ParameterList", + "parameters": [], + "src": "2447:2:201" + }, + "returnParameters": { + "id": 66344, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66343, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 66353, + "src": "2480:7:201", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 66342, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2480:7:201", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2479:9:201" + }, + "scope": 66590, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 66368, + "nodeType": "FunctionDefinition", + "src": "2784:136:201", + "nodes": [], + "body": { + "id": 66367, + "nodeType": "Block", + "src": "2859:61:201", + "nodes": [], + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 66364, + "name": "BaseAdaptor__UserDepositsNotAllowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61382, + "src": "2876:35:201", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 66365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2876:37:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 66366, + "nodeType": "RevertStatement", + "src": "2869:44:201" + } + ] + }, + "baseFunctions": [ + 61454 + ], + "documentation": { + "id": 66354, + "nodeType": "StructuredDocumentation", + "src": "2703:76:201", + "text": " @notice User deposits are NOT allowed into this position." + }, + "functionSelector": "69445c31", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deposit", + "nameLocation": "2793:7:201", + "overrides": { + "id": 66362, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2850:8:201" + }, + "parameters": { + "id": 66361, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66356, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 66368, + "src": "2801:7:201", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66355, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2801:7:201", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 66358, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 66368, + "src": "2810:12:201", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 66357, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2810:5:201", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 66360, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 66368, + "src": "2824:12:201", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 66359, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2824:5:201", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2800:37:201" + }, + "returnParameters": { + "id": 66363, + "nodeType": "ParameterList", + "parameters": [], + "src": "2859:0:201" + }, + "scope": 66590, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 66385, + "nodeType": "FunctionDefinition", + "src": "3008:147:201", + "nodes": [], + "body": { + "id": 66384, + "nodeType": "Block", + "src": "3093:62:201", + "nodes": [], + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 66381, + "name": "BaseAdaptor__UserWithdrawsNotAllowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61385, + "src": "3110:36:201", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 66382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3110:38:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 66383, + "nodeType": "RevertStatement", + "src": "3103:45:201" + } + ] + }, + "baseFunctions": [ + 61466 + ], + "documentation": { + "id": 66369, + "nodeType": "StructuredDocumentation", + "src": "2926:77:201", + "text": " @notice User withdraws are NOT allowed from this position." + }, + "functionSelector": "c9111bd7", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nameLocation": "3017:8:201", + "overrides": { + "id": 66379, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3084:8:201" + }, + "parameters": { + "id": 66378, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66371, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 66385, + "src": "3026:7:201", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66370, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3026:7:201", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 66373, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 66385, + "src": "3035:7:201", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 66372, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3035:7:201", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 66375, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 66385, + "src": "3044:12:201", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 66374, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3044:5:201", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 66377, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 66385, + "src": "3058:12:201", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 66376, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3058:5:201", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3025:46:201" + }, + "returnParameters": { + "id": 66380, + "nodeType": "ParameterList", + "parameters": [], + "src": "3093:0:201" + }, + "scope": 66590, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 66399, + "nodeType": "FunctionDefinition", + "src": "3329:118:201", + "nodes": [], + "body": { + "id": 66398, + "nodeType": "Block", + "src": "3422:25:201", + "nodes": [], + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 66396, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3439:1:201", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 66395, + "id": 66397, + "nodeType": "Return", + "src": "3432:8:201" + } + ] + }, + "baseFunctions": [ + 61484 + ], + "documentation": { + "id": 66386, + "nodeType": "StructuredDocumentation", + "src": "3161:163:201", + "text": " @notice This position is a debt position, and user withdraws are not allowed so\n this position must return 0 for withdrawableFrom." + }, + "functionSelector": "fa50e5d2", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawableFrom", + "nameLocation": "3338:16:201", + "overrides": { + "id": 66392, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3395:8:201" + }, + "parameters": { + "id": 66391, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66388, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 66399, + "src": "3355:12:201", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 66387, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3355:5:201", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 66390, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 66399, + "src": "3369:12:201", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 66389, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3369:5:201", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3354:28:201" + }, + "returnParameters": { + "id": 66395, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66394, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 66399, + "src": "3413:7:201", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66393, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3413:7:201", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3412:9:201" + }, + "scope": 66590, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 66426, + "nodeType": "FunctionDefinition", + "src": "3535:217:201", + "nodes": [], + "body": { + "id": 66425, + "nodeType": "Block", + "src": "3619:133:201", + "nodes": [], + "statements": [ + { + "assignments": [ + 66409 + ], + "declarations": [ + { + "constant": false, + "id": 66409, + "mutability": "mutable", + "name": "underlying", + "nameLocation": "3637:10:201", + "nodeType": "VariableDeclaration", + "scope": 66425, + "src": "3629:18:201", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 66408, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3629:7:201", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 66417, + "initialValue": { + "arguments": [ + { + "id": 66412, + "name": "adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66402, + "src": "3661:11:201", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 66414, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3675:7:201", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66413, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3675:7:201", + "typeDescriptions": {} + } + } + ], + "id": 66415, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3674:9:201", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + } + ], + "expression": { + "id": 66410, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3650:3:201", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 66411, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3654:6:201", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "3650:10:201", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 66416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3650:34:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3629:55:201" + }, + { + "expression": { + "arguments": [ + { + "id": 66420, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66409, + "src": "3722:10:201", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 66421, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3734:3:201", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 66422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3738:6:201", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3734:10:201", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 66418, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66313, + "src": "3701:6:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "id": 66419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3708:13:201", + "memberName": "borrowBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 53448, + "src": "3701:20:201", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 66423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3701:44:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 66407, + "id": 66424, + "nodeType": "Return", + "src": "3694:51:201" + } + ] + }, + "baseFunctions": [ + 61474 + ], + "documentation": { + "id": 66400, + "nodeType": "StructuredDocumentation", + "src": "3453:77:201", + "text": " @notice Returns the cellars balance of the positions debt." + }, + "functionSelector": "78415365", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "3544:9:201", + "overrides": { + "id": 66404, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3592:8:201" + }, + "parameters": { + "id": 66403, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66402, + "mutability": "mutable", + "name": "adaptorData", + "nameLocation": "3567:11:201", + "nodeType": "VariableDeclaration", + "scope": 66426, + "src": "3554:24:201", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 66401, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3554:5:201", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3553:26:201" + }, + "returnParameters": { + "id": 66407, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66406, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 66426, + "src": "3610:7:201", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66405, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3610:7:201", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3609:9:201" + }, + "scope": 66590, + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "id": 66449, + "nodeType": "FunctionDefinition", + "src": "3829:175:201", + "nodes": [], + "body": { + "id": 66448, + "nodeType": "Block", + "src": "3909:95:201", + "nodes": [], + "statements": [ + { + "assignments": [ + 66438 + ], + "declarations": [ + { + "constant": false, + "id": 66438, + "mutability": "mutable", + "name": "underlying", + "nameLocation": "3925:10:201", + "nodeType": "VariableDeclaration", + "scope": 66448, + "src": "3919:16:201", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 66437, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 66436, + "name": "ERC20", + "nameLocations": [ + "3919:5:201" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "3919:5:201" + }, + "referencedDeclaration": 45747, + "src": "3919:5:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + } + ], + "id": 66445, + "initialValue": { + "arguments": [ + { + "id": 66441, + "name": "adaptorData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66429, + "src": "3949:11:201", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 66442, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45747, + "src": "3963:5:201", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$45747_$", + "typeString": "type(contract ERC20)" + } + } + ], + "id": 66443, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3962:7:201", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20_$45747_$", + "typeString": "type(contract ERC20)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_contract$_ERC20_$45747_$", + "typeString": "type(contract ERC20)" + } + ], + "expression": { + "id": 66439, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3938:3:201", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 66440, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3942:6:201", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "3938:10:201", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 66444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3938:32:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3919:51:201" + }, + { + "expression": { + "id": 66446, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66438, + "src": "3987:10:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "functionReturnParameters": 66435, + "id": 66447, + "nodeType": "Return", + "src": "3980:17:201" + } + ] + }, + "baseFunctions": [ + 61493 + ], + "documentation": { + "id": 66427, + "nodeType": "StructuredDocumentation", + "src": "3758:66:201", + "text": " @notice Returns the positions underlying asset." + }, + "functionSelector": "e170a9bf", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "assetOf", + "nameLocation": "3838:7:201", + "overrides": { + "id": 66431, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3884:8:201" + }, + "parameters": { + "id": 66430, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66429, + "mutability": "mutable", + "name": "adaptorData", + "nameLocation": "3859:11:201", + "nodeType": "VariableDeclaration", + "scope": 66449, + "src": "3846:24:201", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 66428, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3846:5:201", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3845:26:201" + }, + "returnParameters": { + "id": 66435, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66434, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 66449, + "src": "3902:5:201", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 66433, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 66432, + "name": "ERC20", + "nameLocations": [ + "3902:5:201" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "3902:5:201" + }, + "referencedDeclaration": 45747, + "src": "3902:5:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + } + ], + "src": "3901:7:201" + }, + "scope": 66590, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 66459, + "nodeType": "FunctionDefinition", + "src": "4087:82:201", + "nodes": [], + "body": { + "id": 66458, + "nodeType": "Block", + "src": "4141:28:201", + "nodes": [], + "statements": [ + { + "expression": { + "hexValue": "74727565", + "id": 66456, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4158:4:201", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 66455, + "id": 66457, + "nodeType": "Return", + "src": "4151:11:201" + } + ] + }, + "baseFunctions": [ + 61527 + ], + "documentation": { + "id": 66450, + "nodeType": "StructuredDocumentation", + "src": "4010:72:201", + "text": " @notice This adaptor reports values in terms of debt." + }, + "functionSelector": "89353a09", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isDebt", + "nameLocation": "4096:6:201", + "overrides": { + "id": 66452, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4117:8:201" + }, + "parameters": { + "id": 66451, + "nodeType": "ParameterList", + "parameters": [], + "src": "4102:2:201" + }, + "returnParameters": { + "id": 66455, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66454, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 66459, + "src": "4135:4:201", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 66453, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4135:4:201", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4134:6:201" + }, + "scope": 66590, + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "id": 66547, + "nodeType": "FunctionDefinition", + "src": "4599:925:201", + "nodes": [], + "body": { + "id": 66546, + "nodeType": "Block", + "src": "4705:819:201", + "nodes": [], + "statements": [ + { + "assignments": [ + 66470 + ], + "declarations": [ + { + "constant": false, + "id": 66470, + "mutability": "mutable", + "name": "positionHash", + "nameLocation": "4807:12:201", + "nodeType": "VariableDeclaration", + "scope": 66546, + "src": "4799:20:201", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 66469, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4799:7:201", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 66483, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 66474, + "name": "identifier", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 66353 + ], + "referencedDeclaration": 66353, + "src": "4843:10:201", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 66475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4843:12:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "hexValue": "74727565", + "id": 66476, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4857:4:201", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "arguments": [ + { + "id": 66479, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66462, + "src": "4874:10:201", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 66477, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4863:3:201", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 66478, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4867:6:201", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "4863:10:201", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 66480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4863:22:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 66472, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4832:3:201", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 66473, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4836:6:201", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "4832:10:201", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 66481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4832:54:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 66471, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4822:9:201", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 66482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4822:65:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4799:88:201" + }, + { + "assignments": [ + 66485 + ], + "declarations": [ + { + "constant": false, + "id": 66485, + "mutability": "mutable", + "name": "positionId", + "nameLocation": "4904:10:201", + "nodeType": "VariableDeclaration", + "scope": 66546, + "src": "4897:17:201", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 66484, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "4897:6:201", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "id": 66497, + "initialValue": { + "arguments": [ + { + "id": 66495, + "name": "positionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66470, + "src": "4978:12:201", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 66489, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4932:4:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590", + "typeString": "contract MorphoAaveV3DebtTokenAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590", + "typeString": "contract MorphoAaveV3DebtTokenAdaptor" + } + ], + "id": 66488, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4924:7:201", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66487, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4924:7:201", + "typeDescriptions": {} + } + }, + "id": 66490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4924:13:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 66486, + "name": "Cellar", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44434, + "src": "4917:6:201", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Cellar_$44434_$", + "typeString": "type(contract Cellar)" + } + }, + "id": 66491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4917:21:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_Cellar_$44434", + "typeString": "contract Cellar" + } + }, + "id": 66492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4939:8:201", + "memberName": "registry", + "nodeType": "MemberAccess", + "referencedDeclaration": 42070, + "src": "4917:30:201", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_Registry_$41024_$", + "typeString": "function () view external returns (contract Registry)" + } + }, + "id": 66493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4917:32:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_Registry_$41024", + "typeString": "contract Registry" + } + }, + "id": 66494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4950:27:201", + "memberName": "getPositionHashToPositionId", + "nodeType": "MemberAccess", + "referencedDeclaration": 40771, + "src": "4917:60:201", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint32_$", + "typeString": "function (bytes32) view external returns (uint32)" + } + }, + "id": 66496, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4917:74:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4897:94:201" + }, + { + "condition": { + "id": 66507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5005:49:201", + "subExpression": { + "arguments": [ + { + "id": 66505, + "name": "positionId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66485, + "src": "5043:10:201", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 66501, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "5021:4:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590", + "typeString": "contract MorphoAaveV3DebtTokenAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590", + "typeString": "contract MorphoAaveV3DebtTokenAdaptor" + } + ], + "id": 66500, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5013:7:201", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66499, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5013:7:201", + "typeDescriptions": {} + } + }, + "id": 66502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5013:13:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 66498, + "name": "Cellar", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44434, + "src": "5006:6:201", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Cellar_$44434_$", + "typeString": "type(contract Cellar)" + } + }, + "id": 66503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5006:21:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_Cellar_$44434", + "typeString": "contract Cellar" + } + }, + "id": 66504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5028:14:201", + "memberName": "isPositionUsed", + "nodeType": "MemberAccess", + "referencedDeclaration": 41300, + "src": "5006:36:201", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view external returns (bool)" + } + }, + "id": 66506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5006:48:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 66512, + "nodeType": "IfStatement", + "src": "5001:142:201", + "trueBody": { + "errorCall": { + "arguments": [ + { + "id": 66509, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66462, + "src": "5132:10:201", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 66508, + "name": "MorphoAaveV3DebtTokenAdaptor__DebtPositionsMustBeTracked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66309, + "src": "5075:56:201", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 66510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5075:68:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 66511, + "nodeType": "RevertStatement", + "src": "5068:75:201" + } + }, + { + "expression": { + "arguments": [ + { + "id": 66516, + "name": "underlying", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66462, + "src": "5199:10:201", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 66517, + "name": "amountToBorrow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66464, + "src": "5211:14:201", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 66520, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "5235:4:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590", + "typeString": "contract MorphoAaveV3DebtTokenAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590", + "typeString": "contract MorphoAaveV3DebtTokenAdaptor" + } + ], + "id": 66519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5227:7:201", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66518, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5227:7:201", + "typeDescriptions": {} + } + }, + "id": 66521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5227:13:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "id": 66524, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "5250:4:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590", + "typeString": "contract MorphoAaveV3DebtTokenAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590", + "typeString": "contract MorphoAaveV3DebtTokenAdaptor" + } + ], + "id": 66523, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5242:7:201", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66522, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5242:7:201", + "typeDescriptions": {} + } + }, + "id": 66525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5242:13:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 66526, + "name": "maxIterations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66466, + "src": "5257:13:201", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 66513, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66313, + "src": "5185:6:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "id": 66515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5192:6:201", + "memberName": "borrow", + "nodeType": "MemberAccess", + "referencedDeclaration": 53499, + "src": "5185:13:201", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,uint256,address,address,uint256) external returns (uint256)" + } + }, + "id": 66527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5185:86:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 66528, + "nodeType": "ExpressionStatement", + "src": "5185:86:201" + }, + { + "assignments": [ + 66530 + ], + "declarations": [ + { + "constant": false, + "id": 66530, + "mutability": "mutable", + "name": "healthFactor", + "nameLocation": "5352:12:201", + "nodeType": "VariableDeclaration", + "scope": 66546, + "src": "5344:20:201", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66529, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5344:7:201", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 66538, + "initialValue": { + "arguments": [ + { + "id": 66532, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66313, + "src": "5388:6:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + { + "arguments": [ + { + "id": 66535, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "5404:4:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590", + "typeString": "contract MorphoAaveV3DebtTokenAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590", + "typeString": "contract MorphoAaveV3DebtTokenAdaptor" + } + ], + "id": 66534, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5396:7:201", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66533, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5396:7:201", + "typeDescriptions": {} + } + }, + "id": 66536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5396:13:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 66531, + "name": "_getUserHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66643, + "src": "5367:20:201", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_contract$_IMorphoV3_$53563_$_t_address_$returns$_t_uint256_$", + "typeString": "function (contract IMorphoV3,address) view returns (uint256)" + } + }, + "id": 66537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5367:43:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5344:66:201" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 66541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 66539, + "name": "healthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66530, + "src": "5424:12:201", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 66540, + "name": "minimumHealthFactor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66316, + "src": "5439:19:201", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5424:34:201", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 66545, + "nodeType": "IfStatement", + "src": "5420:97:201", + "trueBody": { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 66542, + "name": "MorphoAaveV3DebtTokenAdaptor__HealthFactorTooLow", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66304, + "src": "5467:48:201", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 66543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5467:50:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 66544, + "nodeType": "RevertStatement", + "src": "5460:57:201" + } + } + ] + }, + "documentation": { + "id": 66460, + "nodeType": "StructuredDocumentation", + "src": "4292:302:201", + "text": " @notice Allows strategists to borrow assets from Morpho.\n @notice `debtTokenToBorrow` must be the debtToken, NOT the underlying ERC20.\n @param underlying the debtToken to borrow on Morpho\n @param amountToBorrow the amount of `debtTokenToBorrow` to borrow on Morpho." + }, + "functionSelector": "a6cfba9a", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "borrowFromAaveV3Morpho", + "nameLocation": "4608:22:201", + "parameters": { + "id": 66467, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66462, + "mutability": "mutable", + "name": "underlying", + "nameLocation": "4639:10:201", + "nodeType": "VariableDeclaration", + "scope": 66547, + "src": "4631:18:201", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 66461, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4631:7:201", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 66464, + "mutability": "mutable", + "name": "amountToBorrow", + "nameLocation": "4659:14:201", + "nodeType": "VariableDeclaration", + "scope": 66547, + "src": "4651:22:201", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66463, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4651:7:201", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 66466, + "mutability": "mutable", + "name": "maxIterations", + "nameLocation": "4683:13:201", + "nodeType": "VariableDeclaration", + "scope": 66547, + "src": "4675:21:201", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66465, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4675:7:201", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4630:67:201" + }, + "returnParameters": { + "id": 66468, + "nodeType": "ParameterList", + "parameters": [], + "src": "4705:0:201" + }, + "scope": 66590, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 66589, + "nodeType": "FunctionDefinition", + "src": "5774:338:201", + "nodes": [], + "body": { + "id": 66588, + "nodeType": "Block", + "src": "5855:257:201", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 66561, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66313, + "src": "5898:6:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + ], + "id": 66560, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5890:7:201", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66559, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5890:7:201", + "typeDescriptions": {} + } + }, + "id": 66562, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5890:15:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 66563, + "name": "amountToRepay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66553, + "src": "5907:13:201", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 66556, + "name": "tokenToRepay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66551, + "src": "5865:12:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "id": 66558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5878:11:201", + "memberName": "safeApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 46497, + "src": "5865:24:201", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$45747_$", + "typeString": "function (contract ERC20,address,uint256)" + } + }, + "id": 66564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5865:56:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 66565, + "nodeType": "ExpressionStatement", + "src": "5865:56:201" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 66571, + "name": "tokenToRepay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66551, + "src": "5952:12:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + ], + "id": 66570, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5944:7:201", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66569, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5944:7:201", + "typeDescriptions": {} + } + }, + "id": 66572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5944:21:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 66573, + "name": "amountToRepay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66553, + "src": "5967:13:201", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 66576, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "5990:4:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590", + "typeString": "contract MorphoAaveV3DebtTokenAdaptor" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590", + "typeString": "contract MorphoAaveV3DebtTokenAdaptor" + } + ], + "id": 66575, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5982:7:201", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66574, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5982:7:201", + "typeDescriptions": {} + } + }, + "id": 66577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5982:13:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 66566, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66313, + "src": "5931:6:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + }, + "id": 66568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5938:5:201", + "memberName": "repay", + "nodeType": "MemberAccess", + "referencedDeclaration": 53510, + "src": "5931:12:201", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,uint256,address) external returns (uint256)" + } + }, + "id": 66578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5931:65:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 66579, + "nodeType": "ExpressionStatement", + "src": "5931:65:201" + }, + { + "expression": { + "arguments": [ + { + "id": 66581, + "name": "tokenToRepay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66551, + "src": "6075:12:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + { + "arguments": [ + { + "id": 66584, + "name": "morpho", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 66313, + "src": "6097:6:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IMorphoV3_$53563", + "typeString": "contract IMorphoV3" + } + ], + "id": 66583, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6089:7:201", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66582, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6089:7:201", + "typeDescriptions": {} + } + }, + "id": 66585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6089:15:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 66580, + "name": "_revokeExternalApproval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61585, + "src": "6051:23:201", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$returns$__$", + "typeString": "function (contract ERC20,address)" + } + }, + "id": 66586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6051:54:201", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 66587, + "nodeType": "ExpressionStatement", + "src": "6051:54:201" + } + ] + }, + "documentation": { + "id": 66548, + "nodeType": "StructuredDocumentation", + "src": "5530:239:201", + "text": " @notice Allows strategists to repay loan debt on Morpho.\n @param tokenToRepay the underlying ERC20 token you want to repay, NOT the debtToken.\n @param amountToRepay the amount of `tokenToRepay` to repay with." + }, + "functionSelector": "e5afd9b6", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "repayAaveV3MorphoDebt", + "nameLocation": "5783:21:201", + "parameters": { + "id": 66554, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 66551, + "mutability": "mutable", + "name": "tokenToRepay", + "nameLocation": "5811:12:201", + "nodeType": "VariableDeclaration", + "scope": 66589, + "src": "5805:18:201", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + }, + "typeName": { + "id": 66550, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 66549, + "name": "ERC20", + "nameLocations": [ + "5805:5:201" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45747, + "src": "5805:5:201" + }, + "referencedDeclaration": 45747, + "src": "5805:5:201", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$45747", + "typeString": "contract ERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 66553, + "mutability": "mutable", + "name": "amountToRepay", + "nameLocation": "5833:13:201", + "nodeType": "VariableDeclaration", + "scope": 66589, + "src": "5825:21:201", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66552, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5825:7:201", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5804:43:201" + }, + "returnParameters": { + "id": 66555, + "nodeType": "ParameterList", + "parameters": [], + "src": "5855:0:201" + }, + "scope": 66590, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 66291, + "name": "BaseAdaptor", + "nameLocations": [ + "562:11:201" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 61644, + "src": "562:11:201" + }, + "id": 66292, + "nodeType": "InheritanceSpecifier", + "src": "562:11:201" + }, + { + "baseName": { + "id": 66293, + "name": "MorphoAaveV3HealthFactorLogic", + "nameLocations": [ + "575:29:201" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 66644, + "src": "575:29:201" + }, + "id": 66294, + "nodeType": "InheritanceSpecifier", + "src": "575:29:201" + } + ], + "canonicalName": "MorphoAaveV3DebtTokenAdaptor", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 66290, + "nodeType": "StructuredDocumentation", + "src": "366:154:201", + "text": " @title Morpho Aave V3 debtToken Adaptor\n @notice Allows Cellars to interact with Morpho Aave V3 debtToken positions.\n @author crispymangoes" + }, + "fullyImplemented": true, + "linearizedBaseContracts": [ + 66590, + 66644, + 61644 + ], + "name": "MorphoAaveV3DebtTokenAdaptor", + "nameLocation": "530:28:201", + "scope": 66591, + "usedErrors": [ + 61379, + 61382, + 61385, + 61388, + 61393, + 61396, + 66304, + 66309 + ] + } + ], + "license": "Apache-2.0" + }, + "id": 201 +} \ No newline at end of file diff --git a/steward_abi/OneInchAdaptorV1.json b/steward_abi/abi/OneInchAdaptorV1.json similarity index 100% rename from steward_abi/OneInchAdaptorV1.json rename to steward_abi/abi/OneInchAdaptorV1.json diff --git a/steward_abi/SwapWithUniswapAdaptorV1.json b/steward_abi/abi/SwapWithUniswapAdaptorV1.json similarity index 100% rename from steward_abi/SwapWithUniswapAdaptorV1.json rename to steward_abi/abi/SwapWithUniswapAdaptorV1.json diff --git a/steward_abi/UniswapV3AdaptorV1.json b/steward_abi/abi/UniswapV3AdaptorV1.json similarity index 100% rename from steward_abi/UniswapV3AdaptorV1.json rename to steward_abi/abi/UniswapV3AdaptorV1.json diff --git a/steward_abi/UniswapV3AdaptorV2.json b/steward_abi/abi/UniswapV3AdaptorV2.json similarity index 100% rename from steward_abi/UniswapV3AdaptorV2.json rename to steward_abi/abi/UniswapV3AdaptorV2.json diff --git a/steward_abi/VestingSimpleAdaptorV2.json b/steward_abi/abi/VestingSimpleAdaptorV2.json similarity index 100% rename from steward_abi/VestingSimpleAdaptorV2.json rename to steward_abi/abi/VestingSimpleAdaptorV2.json diff --git a/steward_abi/ZeroXAdaptorV1.json b/steward_abi/abi/ZeroXAdaptorV1.json similarity index 100% rename from steward_abi/ZeroXAdaptorV1.json rename to steward_abi/abi/ZeroXAdaptorV1.json diff --git a/steward_abi/src/lib.rs b/steward_abi/src/lib.rs index 6c4974ea..3d99ba2f 100644 --- a/steward_abi/src/lib.rs +++ b/steward_abi/src/lib.rs @@ -15,6 +15,11 @@ pub mod cellar_v2_2; pub mod compound_c_token_adaptor_v2; pub mod f_token_adaptor; pub mod fees_and_reserves_adaptor_v1; +pub mod morpho_aave_v2_a_token_adaptor_v1; +pub mod morpho_aave_v2_debt_token_adaptor_v1; +pub mod morpho_aave_v3_a_token_collateral_adaptor_v1; +pub mod morpho_aave_v3_a_token_p2p_adaptor_v1; +pub mod morpho_aave_v3_debt_token_adaptor_v1; pub mod oneinch_adaptor_v1; pub mod swap_with_uniswap_adaptor_v1; pub mod uniswap_v3_adaptor_v1; diff --git a/steward_abi/src/morpho_aave_v2_a_token_adaptor_v1.rs b/steward_abi/src/morpho_aave_v2_a_token_adaptor_v1.rs new file mode 100644 index 00000000..3c87a318 --- /dev/null +++ b/steward_abi/src/morpho_aave_v2_a_token_adaptor_v1.rs @@ -0,0 +1,812 @@ +pub use morphoaavev2atokenadaptorv1_mod::*; +#[allow(clippy::too_many_arguments)] +mod morphoaavev2atokenadaptorv1_mod { + #![allow(clippy::enum_variant_names)] + #![allow(dead_code)] + #![allow(clippy::type_complexity)] + #![allow(unused_imports)] + use ethers::contract::{ + builders::{ContractCall, Event}, + Contract, Lazy, + }; + use ethers::core::{ + abi::{Abi, Detokenize, InvalidOutputType, Token, Tokenizable}, + types::*, + }; + use ethers::providers::Middleware; + #[doc = "MorphoAaveV2ATokenAdaptorV1 was auto-generated with ethers-rs Abigen. More information at: https://github.com/gakonst/ethers-rs"] + use std::sync::Arc; + pub static MORPHOAAVEV2ATOKENADAPTORV1_ABI: ethers::contract::Lazy = + ethers::contract::Lazy::new(|| { + serde_json :: from_str ("{\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_morpho\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_morphoLens\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minHealthFactor\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"rewardDistributor\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__ConstructorHealthFactorTooLow\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__ExternalReceiverBlocked\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"asset\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"BaseAdaptor__PricingNotSupported\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__Slippage\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__UserDepositsNotAllowed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__UserWithdrawsNotAllowed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"MorphoAaveV2ATokenAdaptor__HealthFactorTooLow\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BORROWING_MASK\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"assetOf\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"assetsUsed\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20[]\",\n \"name\": \"assets\",\n \"type\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimable\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"name\": \"claim\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"assets\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"deposit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IAaveToken\",\n \"name\": \"aToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountToDeposit\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"depositToAaveV2Morpho\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"identifier\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"isBorrowingAny\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"isDebt\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"minimumHealthFactor\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"morpho\",\n \"outputs\": [\n {\n \"internalType\": \"contract IMorphoV2\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"morphoLens\",\n \"outputs\": [\n {\n \"internalType\": \"contract IMorphoLensV2\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"morphoRewardsDistributor\",\n \"outputs\": [\n {\n \"internalType\": \"contract RewardsDistributor\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"asset\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"revokeApproval\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"slippage\",\n \"outputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"\",\n \"type\": \"uint32\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"assets\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IAaveToken\",\n \"name\": \"aToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountToWithdraw\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"withdrawFromAaveV2Morpho\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"withdrawableFrom\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": {\n \"object\": \"0x6101006040523480156200001257600080fd5b50604051620016e1380380620016e18339810160408190526200003591620000b4565b6001600160a01b0381166080526200004d826200006a565b506001600160a01b0392831660a052911660c05260e05262000108565b670e92596fd629000081101562000094576040516397ed5f4160e01b815260040160405180910390fd5b50565b80516001600160a01b0381168114620000af57600080fd5b919050565b60008060008060808587031215620000cb57600080fd5b620000d68562000097565b9350620000e66020860162000097565b925060408501519150620000fd6060860162000097565b905092959194509250565b60805160a05160c05160e051611536620001ab6000396000818161012b01526108ca0152600081816101ad01526108520152600081816102db015281816103cd015281816104e40152818161052f015281816105910152818161064701528181610692015281816106f4015281816107df015281816109e301528181610cdf01528181610d7b0152610e280152600081816101ff015261033a01526115366000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80637998a1c4116100ad578063c9111bd711610071578063c9111bd7146102b0578063d3bfe76a146102c3578063d8fbc833146102d6578063e170a9bf146102fd578063fa50e5d21461031057600080fd5b80637998a1c414610247578063872de8121461024f57806389353a0914610262578063aeffddde14610269578063b505e7a21461028957600080fd5b8063425734d3116100f4578063425734d3146101a85780635528481b146101e75780635b5d4d78146101fa57806369445c3114610221578063784153651461023457600080fd5b80631caff8b1146101265780632f52ebb7146101605780632f93417c146101755780633e032a3b14610198575b600080fd5b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61017361016e366004610fc9565b610323565b005b610188610183366004611090565b6103a9565b6040519015158152602001610157565b6040516123288152602001610157565b6101cf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610157565b6101736101f53660046110ad565b610463565b6101cf7f000000000000000000000000000000000000000000000000000000000000000081565b61017361022f366004611149565b6105ba565b61014d6102423660046111b6565b61071f565b61014d610749565b61017361025d3660046110ad565b6107b3565b6000610188565b61027c6102773660046111b6565b610909565b60405161015791906111f3565b61014d7f555555555555555555555555555555555555555555555555555555555555555581565b6101736102be366004611240565b61096c565b6101736102d13660046112c0565b610a48565b6101cf7f000000000000000000000000000000000000000000000000000000000000000081565b6101cf61030b3660046111b6565b610a61565b61014d61031e3660046112f9565b610adc565b604051630f44fe1d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633d13f874906103739030908690869060040161135d565b600060405180830381600087803b15801561038d57600080fd5b505af11580156103a1573d6000803e3d6000fd5b505050505050565b604051630bc45d1960e41b81526001600160a01b03828116600483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063bc45d19090602401602060405180830381865afa158015610414573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043891906113ba565b7f55555555555555555555555555555555555555555555555555555555555555551615159392505050565b6000826001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c791906113d3565b90506104d38183610b20565b91506105096001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000084610ba1565b604051631e573fb760e31b81526001600160a01b038481166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063f2b9fdb890604401600060405180830381600087803b15801561057357600080fd5b505af1158015610587573d6000803e3d6000fd5b505050506105b5817f0000000000000000000000000000000000000000000000000000000000000000610c22565b505050565b6000828060200190518101906105d091906113d3565b90506000816001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610612573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063691906113d3565b905061066c6001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000087610ba1565b604051631e573fb760e31b81526001600160a01b038381166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063f2b9fdb890604401600060405180830381600087803b1580156106d657600080fd5b505af11580156106ea573d6000803e3d6000fd5b50505050610718817f0000000000000000000000000000000000000000000000000000000000000000610c22565b5050505050565b6000808280602001905181019061073691906113d3565b90506107428133610cb1565b9392505050565b60006040516020016107989060208082526023908201527f4d6f7270686f20416176652056322061546f6b656e2041646170746f7220562060408201526218971960e91b606082015260800190565b60405160208183030381529060405280519060200120905090565b604051631a4ca37b60e21b81526001600160a01b038381166004830152602482018390523060448301527f000000000000000000000000000000000000000000000000000000000000000016906369328dec90606401600060405180830381600087803b15801561082357600080fd5b505af1158015610837573d6000803e3d6000fd5b5050604051630e397f9360e31b8152306004820152600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691506371cbfc9890602401602060405180830381865afa1580156108a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c691906113ba565b90507f00000000000000000000000000000000000000000000000000000000000000008110156105b557604051630d32445160e21b815260040160405180910390fd5b6040805160018082528183019092526060916020808301908036833701905050905061093482610a61565b81600081518110610947576109476113f0565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b61097583610ecc565b61097e306103a9565b1561099c57604051635f5003c560e11b815260040160405180910390fd5b6000828060200190518101906109b291906113d3565b604051631a4ca37b60e21b81526001600160a01b0380831660048301526024820188905286811660448301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906369328dec90606401600060405180830381600087803b158015610a2957600080fd5b505af1158015610a3d573d6000803e3d6000fd5b505050505050505050565b610a5d6001600160a01b038316826000610ba1565b5050565b60008082806020019051810190610a7891906113d3565b9050806001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ab8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074291906113d3565b6000610ae7336103a9565b15610af457506000610b1a565b600083806020019051810190610b0a91906113d3565b9050610b168133610cb1565b9150505b92915050565b60006000198203610b9a576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9391906113ba565b9050610b1a565b5080610b1a565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610c1c5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b604482015260640160405180910390fd5b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa158015610c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9691906113ba565b1115610a5d57610a5d6001600160a01b038316826000610ba1565b6040516339407b4160e21b81526001600160a01b0383811660048301528281166024830152600091829182917f00000000000000000000000000000000000000000000000000000000000000009091169063e501ed04906044016040805180830381865afa158015610d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4b9190611406565b909250905060008215610dff5760405163854f7ebb60e01b81526001600160a01b038781166004830152610dfc917f00000000000000000000000000000000000000000000000000000000000000009091169063854f7ebb90602401602060405180830381865afa158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de891906113ba565b84906b033b2e3c9fd0803ce8000000610f63565b90505b8115610ec357604051631987357f60e21b81526001600160a01b038781166004830152610eb6917f00000000000000000000000000000000000000000000000000000000000000009091169063661cd5fc90602401606060405180830381865afa158015610e71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e959190611446565b6020015183906001600160701b03166b033b2e3c9fd0803ce8000000610f63565b610ec090826114bd565b90505b95945050505050565b6001600160a01b0381163014801590610f425750306001600160a01b0316634c4602da6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4291906114de565b15610f60576040516307de9b5160e21b815260040160405180910390fd5b50565b828202811515841585830485141716610f7b57600080fd5b0492915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610fc157610fc1610f82565b604052919050565b60008060408385031215610fdc57600080fd5b8235915060208084013567ffffffffffffffff80821115610ffc57600080fd5b818601915086601f83011261101057600080fd5b81358181111561102257611022610f82565b8060051b9150611033848301610f98565b818152918301840191848101908984111561104d57600080fd5b938501935b8385101561106b57843582529385019390850190611052565b8096505050505050509250929050565b6001600160a01b0381168114610f6057600080fd5b6000602082840312156110a257600080fd5b81356107428161107b565b600080604083850312156110c057600080fd5b82356110cb8161107b565b946020939093013593505050565b600082601f8301126110ea57600080fd5b813567ffffffffffffffff81111561110457611104610f82565b611117601f8201601f1916602001610f98565b81815284602083860101111561112c57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561115e57600080fd5b83359250602084013567ffffffffffffffff8082111561117d57600080fd5b611189878388016110d9565b9350604086013591508082111561119f57600080fd5b506111ac868287016110d9565b9150509250925092565b6000602082840312156111c857600080fd5b813567ffffffffffffffff8111156111df57600080fd5b6111eb848285016110d9565b949350505050565b6020808252825182820181905260009190848201906040850190845b818110156112345783516001600160a01b03168352928401929184019160010161120f565b50909695505050505050565b6000806000806080858703121561125657600080fd5b8435935060208501356112688161107b565b9250604085013567ffffffffffffffff8082111561128557600080fd5b611291888389016110d9565b935060608701359150808211156112a757600080fd5b506112b4878288016110d9565b91505092959194509250565b600080604083850312156112d357600080fd5b82356112de8161107b565b915060208301356112ee8161107b565b809150509250929050565b6000806040838503121561130c57600080fd5b823567ffffffffffffffff8082111561132457600080fd5b611330868387016110d9565b9350602085013591508082111561134657600080fd5b50611353858286016110d9565b9150509250929050565b6001600160a01b038416815260208082018490526060604083018190528351908301819052600091848101916080850190845b818110156113ac57845183529383019391830191600101611390565b509098975050505050505050565b6000602082840312156113cc57600080fd5b5051919050565b6000602082840312156113e557600080fd5b81516107428161107b565b634e487b7160e01b600052603260045260246000fd5b6000806040838503121561141957600080fd5b505080516020909101519092909150565b80516001600160701b038116811461144157600080fd5b919050565b60006060828403121561145857600080fd5b6040516060810181811067ffffffffffffffff8211171561147b5761147b610f82565b604052825163ffffffff8116811461149257600080fd5b81526114a06020840161142a565b60208201526114b16040840161142a565b60408201529392505050565b80820180821115610b1a57634e487b7160e01b600052601160045260246000fd5b6000602082840312156114f057600080fd5b8151801515811461074257600080fdfea26469706673582212208d0b9e9929cd445f957cd709018304e40085baf90a6dc5e1569d164efc0f8c9664736f6c63430008100033\",\n \"sourceMap\": \"621:8489:197:-:0;;;2235:383;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;629:72:203;;;;2424:54:197::1;2462:15:::0;2424:37:::1;:54::i;:::-;-1:-1:-1::0;;;;;;2488:27:197;;::::1;;::::0;2525:39;::::1;;::::0;2574:37:::1;::::0;621:8489;;8743:233:188;2760:7;8847:19;:57;8843:126;;;8925:44;;-1:-1:-1;;;8925:44:188;;;;;;;;;;;8843:126;8743:233;:::o;14:177:258:-;93:13;;-1:-1:-1;;;;;135:31:258;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:440::-;293:6;301;309;317;370:3;358:9;349:7;345:23;341:33;338:53;;;387:1;384;377:12;338:53;410:40;440:9;410:40;:::i;:::-;400:50;;469:49;514:2;503:9;499:18;469:49;:::i;:::-;459:59;;558:2;547:9;543:18;537:25;527:35;;581:49;626:2;615:9;611:18;581:49;:::i;:::-;571:59;;196:440;;;;;;;:::o;:::-;621:8489:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\",\n \"linkReferences\": {}\n },\n \"deployedBytecode\": {\n \"object\": \"0x608060405234801561001057600080fd5b50600436106101215760003560e01c80637998a1c4116100ad578063c9111bd711610071578063c9111bd7146102b0578063d3bfe76a146102c3578063d8fbc833146102d6578063e170a9bf146102fd578063fa50e5d21461031057600080fd5b80637998a1c414610247578063872de8121461024f57806389353a0914610262578063aeffddde14610269578063b505e7a21461028957600080fd5b8063425734d3116100f4578063425734d3146101a85780635528481b146101e75780635b5d4d78146101fa57806369445c3114610221578063784153651461023457600080fd5b80631caff8b1146101265780632f52ebb7146101605780632f93417c146101755780633e032a3b14610198575b600080fd5b61014d7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61017361016e366004610fc9565b610323565b005b610188610183366004611090565b6103a9565b6040519015158152602001610157565b6040516123288152602001610157565b6101cf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610157565b6101736101f53660046110ad565b610463565b6101cf7f000000000000000000000000000000000000000000000000000000000000000081565b61017361022f366004611149565b6105ba565b61014d6102423660046111b6565b61071f565b61014d610749565b61017361025d3660046110ad565b6107b3565b6000610188565b61027c6102773660046111b6565b610909565b60405161015791906111f3565b61014d7f555555555555555555555555555555555555555555555555555555555555555581565b6101736102be366004611240565b61096c565b6101736102d13660046112c0565b610a48565b6101cf7f000000000000000000000000000000000000000000000000000000000000000081565b6101cf61030b3660046111b6565b610a61565b61014d61031e3660046112f9565b610adc565b604051630f44fe1d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633d13f874906103739030908690869060040161135d565b600060405180830381600087803b15801561038d57600080fd5b505af11580156103a1573d6000803e3d6000fd5b505050505050565b604051630bc45d1960e41b81526001600160a01b03828116600483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063bc45d19090602401602060405180830381865afa158015610414573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043891906113ba565b7f55555555555555555555555555555555555555555555555555555555555555551615159392505050565b6000826001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104c791906113d3565b90506104d38183610b20565b91506105096001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000084610ba1565b604051631e573fb760e31b81526001600160a01b038481166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063f2b9fdb890604401600060405180830381600087803b15801561057357600080fd5b505af1158015610587573d6000803e3d6000fd5b505050506105b5817f0000000000000000000000000000000000000000000000000000000000000000610c22565b505050565b6000828060200190518101906105d091906113d3565b90506000816001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610612573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063691906113d3565b905061066c6001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000087610ba1565b604051631e573fb760e31b81526001600160a01b038381166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063f2b9fdb890604401600060405180830381600087803b1580156106d657600080fd5b505af11580156106ea573d6000803e3d6000fd5b50505050610718817f0000000000000000000000000000000000000000000000000000000000000000610c22565b5050505050565b6000808280602001905181019061073691906113d3565b90506107428133610cb1565b9392505050565b60006040516020016107989060208082526023908201527f4d6f7270686f20416176652056322061546f6b656e2041646170746f7220562060408201526218971960e91b606082015260800190565b60405160208183030381529060405280519060200120905090565b604051631a4ca37b60e21b81526001600160a01b038381166004830152602482018390523060448301527f000000000000000000000000000000000000000000000000000000000000000016906369328dec90606401600060405180830381600087803b15801561082357600080fd5b505af1158015610837573d6000803e3d6000fd5b5050604051630e397f9360e31b8152306004820152600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691506371cbfc9890602401602060405180830381865afa1580156108a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c691906113ba565b90507f00000000000000000000000000000000000000000000000000000000000000008110156105b557604051630d32445160e21b815260040160405180910390fd5b6040805160018082528183019092526060916020808301908036833701905050905061093482610a61565b81600081518110610947576109476113f0565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b61097583610ecc565b61097e306103a9565b1561099c57604051635f5003c560e11b815260040160405180910390fd5b6000828060200190518101906109b291906113d3565b604051631a4ca37b60e21b81526001600160a01b0380831660048301526024820188905286811660448301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906369328dec90606401600060405180830381600087803b158015610a2957600080fd5b505af1158015610a3d573d6000803e3d6000fd5b505050505050505050565b610a5d6001600160a01b038316826000610ba1565b5050565b60008082806020019051810190610a7891906113d3565b9050806001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ab8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074291906113d3565b6000610ae7336103a9565b15610af457506000610b1a565b600083806020019051810190610b0a91906113d3565b9050610b168133610cb1565b9150505b92915050565b60006000198203610b9a576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9391906113ba565b9050610b1a565b5080610b1a565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d1160016000511416171691505080610c1c5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b604482015260640160405180910390fd5b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa158015610c72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9691906113ba565b1115610a5d57610a5d6001600160a01b038316826000610ba1565b6040516339407b4160e21b81526001600160a01b0383811660048301528281166024830152600091829182917f00000000000000000000000000000000000000000000000000000000000000009091169063e501ed04906044016040805180830381865afa158015610d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4b9190611406565b909250905060008215610dff5760405163854f7ebb60e01b81526001600160a01b038781166004830152610dfc917f00000000000000000000000000000000000000000000000000000000000000009091169063854f7ebb90602401602060405180830381865afa158015610dc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de891906113ba565b84906b033b2e3c9fd0803ce8000000610f63565b90505b8115610ec357604051631987357f60e21b81526001600160a01b038781166004830152610eb6917f00000000000000000000000000000000000000000000000000000000000000009091169063661cd5fc90602401606060405180830381865afa158015610e71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e959190611446565b6020015183906001600160701b03166b033b2e3c9fd0803ce8000000610f63565b610ec090826114bd565b90505b95945050505050565b6001600160a01b0381163014801590610f425750306001600160a01b0316634c4602da6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4291906114de565b15610f60576040516307de9b5160e21b815260040160405180910390fd5b50565b828202811515841585830485141716610f7b57600080fd5b0492915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610fc157610fc1610f82565b604052919050565b60008060408385031215610fdc57600080fd5b8235915060208084013567ffffffffffffffff80821115610ffc57600080fd5b818601915086601f83011261101057600080fd5b81358181111561102257611022610f82565b8060051b9150611033848301610f98565b818152918301840191848101908984111561104d57600080fd5b938501935b8385101561106b57843582529385019390850190611052565b8096505050505050509250929050565b6001600160a01b0381168114610f6057600080fd5b6000602082840312156110a257600080fd5b81356107428161107b565b600080604083850312156110c057600080fd5b82356110cb8161107b565b946020939093013593505050565b600082601f8301126110ea57600080fd5b813567ffffffffffffffff81111561110457611104610f82565b611117601f8201601f1916602001610f98565b81815284602083860101111561112c57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121561115e57600080fd5b83359250602084013567ffffffffffffffff8082111561117d57600080fd5b611189878388016110d9565b9350604086013591508082111561119f57600080fd5b506111ac868287016110d9565b9150509250925092565b6000602082840312156111c857600080fd5b813567ffffffffffffffff8111156111df57600080fd5b6111eb848285016110d9565b949350505050565b6020808252825182820181905260009190848201906040850190845b818110156112345783516001600160a01b03168352928401929184019160010161120f565b50909695505050505050565b6000806000806080858703121561125657600080fd5b8435935060208501356112688161107b565b9250604085013567ffffffffffffffff8082111561128557600080fd5b611291888389016110d9565b935060608701359150808211156112a757600080fd5b506112b4878288016110d9565b91505092959194509250565b600080604083850312156112d357600080fd5b82356112de8161107b565b915060208301356112ee8161107b565b809150509250929050565b6000806040838503121561130c57600080fd5b823567ffffffffffffffff8082111561132457600080fd5b611330868387016110d9565b9350602085013591508082111561134657600080fd5b50611353858286016110d9565b9150509250929050565b6001600160a01b038416815260208082018490526060604083018190528351908301819052600091848101916080850190845b818110156113ac57845183529383019391830191600101611390565b509098975050505050505050565b6000602082840312156113cc57600080fd5b5051919050565b6000602082840312156113e557600080fd5b81516107428161107b565b634e487b7160e01b600052603260045260246000fd5b6000806040838503121561141957600080fd5b505080516020909101519092909150565b80516001600160701b038116811461144157600080fd5b919050565b60006060828403121561145857600080fd5b6040516060810181811067ffffffffffffffff8211171561147b5761147b610f82565b604052825163ffffffff8116811461149257600080fd5b81526114a06020840161142a565b60208201526114b16040840161142a565b60408201529392505050565b80820180821115610b1a57634e487b7160e01b600052601160045260246000fd5b6000602082840312156114f057600080fd5b8151801515811461074257600080fdfea26469706673582212208d0b9e9929cd445f957cd709018304e40085baf90a6dc5e1569d164efc0f8c9664736f6c63430008100033\",\n \"sourceMap\": \"621:8489:197:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2184:44;;;;;;;;160:25:258;;;148:2;133:18;2184:44:197;;;;;;;;902:145:203;;;;;;:::i;:::-;;:::i;:::-;;8930:178:197;;;;;;:::i;:::-;;:::i;:::-;;;2180:14:258;;2173:22;2155:41;;2143:2;2128:18;8930:178:197;2015:187:258;2415:78:188;;;2481:5;2351:42:258;;2339:2;2324:18;2415:78:188;2207:192:258;1976:41:197;;;;;;;;-1:-1:-1;;;;;2591:32:258;;;2573:51;;2561:2;2546:18;1976:41:197;2404:226:258;6801:458:197;;;;;;:::i;:::-;;:::i;505:60:203:-;;;;;3649:482:197;;;;;;:::i;:::-;;:::i;5732:211::-;;;;;;:::i;:::-;;:::i;3037:145::-;;;:::i;7491:413::-;;;;;;:::i;:::-;;:::i;6320:83::-;6368:4;6320:83;;5934:180:188;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1359:107:197:-;;1400:66;1359:107;;4507:497;;;;;;:::i;:::-;;:::i;9204:107:188:-;;;;;;:::i;:::-;;:::i;1777:33:197:-;;;;;6027:209;;;;;;:::i;:::-;;:::i;5215:427::-;;;;;;:::i;:::-;;:::i;902:145:203:-;977:63;;-1:-1:-1;;;977:63:203;;-1:-1:-1;;;;;977:24:203;:30;;;;:63;;1016:4;;1023:9;;1034:5;;977:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;902:145;;:::o;8930:178:197:-;9027:24;;-1:-1:-1;;;9027:24:197;;-1:-1:-1;;;;;2591:32:258;;;9027:24:197;;;2573:51:258;8989:4:197;;;;9027:6;:18;;;;2546::258;;9027:24:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1400:66;9068:28;:33;;;8930:178;-1:-1:-1;;;8930:178:197:o;6801:458::-;6893:16;6918:6;-1:-1:-1;;;;;6918:31:197;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6893:59;;6980:42;6994:10;7006:15;6980:13;:42::i;:::-;6962:60;-1:-1:-1;7032:56:197;-1:-1:-1;;;;;7032:22:197;;7063:6;6962:60;7032:22;:56::i;:::-;7098:47;;-1:-1:-1;;;7098:47:197;;-1:-1:-1;;;;;9344:32:258;;;7098:47:197;;;9326:51:258;9393:18;;;9386:34;;;7098:6:197;:13;;;;9299:18:258;;7098:47:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7200:52;7224:10;7244:6;7200:23;:52::i;:::-;6883:376;6801:458;;:::o;3649:482::-;3785:17;3816:11;3805:37;;;;;;;;;;;;:::i;:::-;3785:57;;3852:16;3877:6;-1:-1:-1;;;;;3877:31:197;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3852:59;-1:-1:-1;3921:47:197;-1:-1:-1;;;;;3921:22:197;;3952:6;3961;3921:22;:47::i;:::-;3979:38;;-1:-1:-1;;;3979:38:197;;-1:-1:-1;;;;;9344:32:258;;;3979:38:197;;;9326:51:258;9393:18;;;9386:34;;;3979:6:197;:13;;;;9299:18:258;;3979:38:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4072:52;4096:10;4116:6;4072:23;:52::i;:::-;3738:393;;3649:482;;;:::o;5732:211::-;5807:7;5826:14;5854:11;5843:34;;;;;;;;;;;;:::i;:::-;5826:51;;5894:42;5917:6;5925:10;5894:22;:42::i;:::-;5887:49;5732:211;-1:-1:-1;;;5732:211:197:o;3037:145::-;3089:7;3125:49;;;;;;10173:2:258;10155:21;;;10212:2;10192:18;;;10185:30;10251:34;10246:2;10231:18;;10224:62;-1:-1:-1;;;10317:2:258;10302:18;;10295:33;10360:3;10345:19;;9971:399;3125:49:197;;;;;;;;;;;;;3115:60;;;;;;3108:67;;3037:145;:::o;7491:413::-;7587:65;;-1:-1:-1;;;7587:65:197;;-1:-1:-1;;;;;10633:15:258;;;7587:65:197;;;10615:34:258;10665:18;;;10658:34;;;7646:4:197;10708:18:258;;;10701:43;7587:6:197;:15;;;;10550:18:258;;7587:65:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7748:45:197;;-1:-1:-1;;;7748:45:197;;7787:4;7748:45;;;2573:51:258;7725:20:197;;-1:-1:-1;7748:10:197;-1:-1:-1;;;;;7748:30:197;;-1:-1:-1;7748:30:197;;2546:18:258;;7748:45:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7725:68;;7822:19;7807:12;:34;7803:94;;;7850:47;;-1:-1:-1;;;7850:47:197;;;;;;;;;;;5934:180:188;6051:14;;;6063:1;6051:14;;;;;;;;;6009:21;;6051:14;;;;;;;;;;;-1:-1:-1;6051:14:188;6042:23;;6087:20;6095:11;6087:7;:20::i;:::-;6075:6;6082:1;6075:9;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;6075:32:188;;;-1:-1:-1;;;;;6075:32:188;;;;;5934:180;;;:::o;4507:497:197:-;4665:32;4688:8;4665:22;:32::i;:::-;4767:29;4790:4;4767:14;:29::i;:::-;4763:80;;;4805:38;;-1:-1:-1;;;4805:38:197;;;;;;;;;;;4763:80;4854:14;4882:11;4871:34;;;;;;;;;;;;:::i;:::-;4956:41;;-1:-1:-1;;;4956:41:197;;-1:-1:-1;;;;;10633:15:258;;;4956:41:197;;;10615:34:258;10665:18;;;10658:34;;;10728:15;;;10708:18;;;10701:43;4854:51:197;;-1:-1:-1;4956:6:197;:15;;;;;;10550:18:258;;4956:41:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4615:389;4507:497;;;;:::o;9204:107:188:-;9275:29;-1:-1:-1;;;;;9275:17:188;;9293:7;9302:1;9275:17;:29::i;:::-;9204:107;;:::o;6027:209:197:-;6100:5;6117:16;6147:11;6136:37;;;;;;;;;;;;:::i;:::-;6117:56;;6196:5;-1:-1:-1;;;;;6196:30:197;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5215:427::-;5311:7;5446:26;5461:10;5446:14;:26::i;:::-;5442:194;;;-1:-1:-1;5481:1:197;5474:8;;5442:194;5511:14;5539:11;5528:34;;;;;;;;;;;;:::i;:::-;5511:51;;5583:42;5606:6;5614:10;5583:22;:42::i;:::-;5576:49;;;5442:194;5215:427;;;;:::o;7816:207:188:-;7899:7;-1:-1:-1;;7922:6:188;:27;7918:98;;7958:30;;-1:-1:-1;;;7958:30:188;;7982:4;7958:30;;;2573:51:258;-1:-1:-1;;;;;7958:15:188;;;;;2546:18:258;;7958:30:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7951:37;;;;7918:98;-1:-1:-1;8010:6:188;8003:13;;4327:1454:104;4438:12;4565:4;4559:11;-1:-1:-1;;;4688:17:104;4681:93;4821:2;4817:1;4798:17;4794:25;4787:37;4901:6;4896:2;4877:17;4873:26;4866:42;5703:2;5700:1;5696:2;5677:17;5674:1;5667:5;5660;5655:51;5224:16;5217:24;5211:2;5193:16;5190:24;5186:1;5182;5176:8;5173:15;5169:46;5166:76;4966:754;4955:765;;;5748:7;5740:34;;;;-1:-1:-1;;;5740:34:104;;11278:2:258;5740:34:104;;;11260:21:258;11317:2;11297:18;;;11290:30;-1:-1:-1;;;11336:18:258;;;11329:44;11390:18;;5740:34:104;;;;;;;;4428:1353;4327:1454;;;:::o;8158:167:188:-;8244:39;;-1:-1:-1;;;8244:39:188;;8268:4;8244:39;;;11631:34:258;-1:-1:-1;;;;;11701:15:258;;;11681:18;;;11674:43;8286:1:188;;8244:15;;;;;;11566:18:258;;8244:39:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;8240:78;;;8289:29;-1:-1:-1;;;;;8289:17:188;;8307:7;8316:1;8289:17;:29::i;8135:557:197:-;8276:41;;-1:-1:-1;;;8276:41:197;;-1:-1:-1;;;;;11649:15:258;;;8276:41:197;;;11631:34:258;11701:15;;;11681:18;;;11674:43;-1:-1:-1;;;;;;8276:6:197;:24;;;;;;11566:18:258;;8276:41:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8242:75;;-1:-1:-1;8242:75:197;-1:-1:-1;8328:27:197;8441:9;;8437:93;;8491:32;;-1:-1:-1;;;8491:32:197;;-1:-1:-1;;;;;2591:32:258;;;8491::197;;;2573:51:258;8474:56:197;;8491:6;:21;;;;;;2546:18:258;;8491:32:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8474:5;;8525:4;8474:16;:56::i;:::-;8452:78;;8437:93;8544:10;;8540:109;;8597:29;;-1:-1:-1;;;8597:29:197;;-1:-1:-1;;;;;2591:32:258;;;8597:29:197;;;2573:51:258;8579:70:197;;8597:6;:18;;;;;;2546::258;;8597:29:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;;8579:6;;-1:-1:-1;;;;;8579:70:197;8644:4;8579:17;:70::i;:::-;8556:93;;;;:::i;:::-;;;8540:109;8666:19;8135:557;-1:-1:-1;;;;;8135:557:197:o;8425:218:188:-;-1:-1:-1;;;;;8503:25:188;;8523:4;8503:25;;;;:74;;;8547:4;-1:-1:-1;;;;;8532:43:188;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8499:137;;;8598:38;;-1:-1:-1;;;8598:38:188;;;;;;;;;;;8499:137;8425:218;:::o;1357:535:221:-;1563:9;;;1694:19;;1687:27;1719:9;;1733;;;1730:16;;1716:31;1683:65;1673:121;;1778:1;1775;1768:12;1673:121;1857:19;;1357:535;-1:-1:-1;;1357:535:221:o;196:127:258:-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:275;399:2;393:9;464:2;445:13;;-1:-1:-1;;441:27:258;429:40;;499:18;484:34;;520:22;;;481:62;478:88;;;546:18;;:::i;:::-;582:2;575:22;328:275;;-1:-1:-1;328:275:258:o;608:1014::-;701:6;709;762:2;750:9;741:7;737:23;733:32;730:52;;;778:1;775;768:12;730:52;814:9;801:23;791:33;;843:2;896;885:9;881:18;868:32;919:18;960:2;952:6;949:14;946:34;;;976:1;973;966:12;946:34;1014:6;1003:9;999:22;989:32;;1059:7;1052:4;1048:2;1044:13;1040:27;1030:55;;1081:1;1078;1071:12;1030:55;1117:2;1104:16;1139:2;1135;1132:10;1129:36;;;1145:18;;:::i;:::-;1191:2;1188:1;1184:10;1174:20;;1214:28;1238:2;1234;1230:11;1214:28;:::i;:::-;1276:15;;;1346:11;;;1342:20;;;1307:12;;;;1374:19;;;1371:39;;;1406:1;1403;1396:12;1371:39;1430:11;;;;1450:142;1466:6;1461:3;1458:15;1450:142;;;1532:17;;1520:30;;1483:12;;;;1570;;;;1450:142;;;1611:5;1601:15;;;;;;;;608:1014;;;;;:::o;1627:131::-;-1:-1:-1;;;;;1702:31:258;;1692:42;;1682:70;;1748:1;1745;1738:12;1763:247;1822:6;1875:2;1863:9;1854:7;1850:23;1846:32;1843:52;;;1891:1;1888;1881:12;1843:52;1930:9;1917:23;1949:31;1974:5;1949:31;:::i;2635:335::-;2723:6;2731;2784:2;2772:9;2763:7;2759:23;2755:32;2752:52;;;2800:1;2797;2790:12;2752:52;2839:9;2826:23;2858:31;2883:5;2858:31;:::i;:::-;2908:5;2960:2;2945:18;;;;2932:32;;-1:-1:-1;;;2635:335:258:o;3211:530::-;3253:5;3306:3;3299:4;3291:6;3287:17;3283:27;3273:55;;3324:1;3321;3314:12;3273:55;3360:6;3347:20;3386:18;3382:2;3379:26;3376:52;;;3408:18;;:::i;:::-;3452:55;3495:2;3476:13;;-1:-1:-1;;3472:27:258;3501:4;3468:38;3452:55;:::i;:::-;3532:2;3523:7;3516:19;3578:3;3571:4;3566:2;3558:6;3554:15;3550:26;3547:35;3544:55;;;3595:1;3592;3585:12;3544:55;3660:2;3653:4;3645:6;3641:17;3634:4;3625:7;3621:18;3608:55;3708:1;3683:16;;;3701:4;3679:27;3672:38;;;;3687:7;3211:530;-1:-1:-1;;;3211:530:258:o;3746:607::-;3841:6;3849;3857;3910:2;3898:9;3889:7;3885:23;3881:32;3878:52;;;3926:1;3923;3916:12;3878:52;3962:9;3949:23;3939:33;;4023:2;4012:9;4008:18;3995:32;4046:18;4087:2;4079:6;4076:14;4073:34;;;4103:1;4100;4093:12;4073:34;4126:49;4167:7;4158:6;4147:9;4143:22;4126:49;:::i;:::-;4116:59;;4228:2;4217:9;4213:18;4200:32;4184:48;;4257:2;4247:8;4244:16;4241:36;;;4273:1;4270;4263:12;4241:36;;4296:51;4339:7;4328:8;4317:9;4313:24;4296:51;:::i;:::-;4286:61;;;3746:607;;;;;:::o;4358:320::-;4426:6;4479:2;4467:9;4458:7;4454:23;4450:32;4447:52;;;4495:1;4492;4485:12;4447:52;4535:9;4522:23;4568:18;4560:6;4557:30;4554:50;;;4600:1;4597;4590:12;4554:50;4623:49;4664:7;4655:6;4644:9;4640:22;4623:49;:::i;:::-;4613:59;4358:320;-1:-1:-1;;;;4358:320:258:o;4865:673::-;5051:2;5103:21;;;5173:13;;5076:18;;;5195:22;;;5022:4;;5051:2;5274:15;;;;5248:2;5233:18;;;5022:4;5317:195;5331:6;5328:1;5325:13;5317:195;;;5396:13;;-1:-1:-1;;;;;5392:39:258;5380:52;;5487:15;;;;5452:12;;;;5428:1;5346:9;5317:195;;;-1:-1:-1;5529:3:258;;4865:673;-1:-1:-1;;;;;;4865:673:258:o;5543:743::-;5647:6;5655;5663;5671;5724:3;5712:9;5703:7;5699:23;5695:33;5692:53;;;5741:1;5738;5731:12;5692:53;5777:9;5764:23;5754:33;;5837:2;5826:9;5822:18;5809:32;5850:31;5875:5;5850:31;:::i;:::-;5900:5;-1:-1:-1;5956:2:258;5941:18;;5928:32;5979:18;6009:14;;;6006:34;;;6036:1;6033;6026:12;6006:34;6059:49;6100:7;6091:6;6080:9;6076:22;6059:49;:::i;:::-;6049:59;;6161:2;6150:9;6146:18;6133:32;6117:48;;6190:2;6180:8;6177:16;6174:36;;;6206:1;6203;6196:12;6174:36;;6229:51;6272:7;6261:8;6250:9;6246:24;6229:51;:::i;:::-;6219:61;;;5543:743;;;;;;;:::o;6291:403::-;6374:6;6382;6435:2;6423:9;6414:7;6410:23;6406:32;6403:52;;;6451:1;6448;6441:12;6403:52;6490:9;6477:23;6509:31;6534:5;6509:31;:::i;:::-;6559:5;-1:-1:-1;6616:2:258;6601:18;;6588:32;6629:33;6588:32;6629:33;:::i;:::-;6681:7;6671:17;;;6291:403;;;;;:::o;7149:539::-;7235:6;7243;7296:2;7284:9;7275:7;7271:23;7267:32;7264:52;;;7312:1;7309;7302:12;7264:52;7352:9;7339:23;7381:18;7422:2;7414:6;7411:14;7408:34;;;7438:1;7435;7428:12;7408:34;7461:49;7502:7;7493:6;7482:9;7478:22;7461:49;:::i;:::-;7451:59;;7563:2;7552:9;7548:18;7535:32;7519:48;;7592:2;7582:8;7579:16;7576:36;;;7608:1;7605;7598:12;7576:36;;7631:51;7674:7;7663:8;7652:9;7648:24;7631:51;:::i;:::-;7621:61;;;7149:539;;;;;:::o;7693:801::-;-1:-1:-1;;;;;7969:32:258;;7951:51;;8021:2;8039:18;;;8032:34;;;7939:2;8097;8082:18;;8075:30;;;8154:13;;7924:18;;;8176:22;;;7891:4;;8256:15;;;;8229:3;8214:19;;;7891:4;8299:169;8313:6;8310:1;8307:13;8299:169;;;8374:13;;8362:26;;8443:15;;;;8408:12;;;;8335:1;8328:9;8299:169;;;-1:-1:-1;8485:3:258;;7693:801;-1:-1:-1;;;;;;;;7693:801:258:o;8707:184::-;8777:6;8830:2;8818:9;8809:7;8805:23;8801:32;8798:52;;;8846:1;8843;8836:12;8798:52;-1:-1:-1;8869:16:258;;8707:184;-1:-1:-1;8707:184:258:o;8896:251::-;8966:6;9019:2;9007:9;8998:7;8994:23;8990:32;8987:52;;;9035:1;9032;9025:12;8987:52;9067:9;9061:16;9086:31;9111:5;9086:31;:::i;10944:127::-;11005:10;11000:3;10996:20;10993:1;10986:31;11036:4;11033:1;11026:15;11060:4;11057:1;11050:15;11728:245;11807:6;11815;11868:2;11856:9;11847:7;11843:23;11839:32;11836:52;;;11884:1;11881;11874:12;11836:52;-1:-1:-1;;11907:16:258;;11963:2;11948:18;;;11942:25;11907:16;;11942:25;;-1:-1:-1;11728:245:258:o;11978:188::-;12057:13;;-1:-1:-1;;;;;12099:42:258;;12089:53;;12079:81;;12156:1;12153;12146:12;12079:81;11978:188;;;:::o;12171:710::-;12271:6;12324:2;12312:9;12303:7;12299:23;12295:32;12292:52;;;12340:1;12337;12330:12;12292:52;12373:2;12367:9;12415:2;12407:6;12403:15;12484:6;12472:10;12469:22;12448:18;12436:10;12433:34;12430:62;12427:88;;;12495:18;;:::i;:::-;12531:2;12524:22;12568:16;;12624:10;12613:22;;12603:33;;12593:61;;12650:1;12647;12640:12;12593:61;12663:21;;12717:49;12762:2;12747:18;;12717:49;:::i;:::-;12712:2;12704:6;12700:15;12693:74;12800:49;12845:2;12834:9;12830:18;12800:49;:::i;:::-;12795:2;12783:15;;12776:74;12787:6;12171:710;-1:-1:-1;;;12171:710:258:o;12886:222::-;12951:9;;;12972:10;;;12969:133;;;13024:10;13019:3;13015:20;13012:1;13005:31;13059:4;13056:1;13049:15;13087:4;13084:1;13077:15;13113:277;13180:6;13233:2;13221:9;13212:7;13208:23;13204:32;13201:52;;;13249:1;13246;13239:12;13201:52;13281:9;13275:16;13334:5;13327:13;13320:21;13313:5;13310:32;13300:60;;13356:1;13353;13346:12\",\n \"linkReferences\": {},\n \"immutableReferences\": {\n \"64681\": [\n {\n \"start\": 731,\n \"length\": 32\n },\n {\n \"start\": 973,\n \"length\": 32\n },\n {\n \"start\": 1252,\n \"length\": 32\n },\n {\n \"start\": 1327,\n \"length\": 32\n },\n {\n \"start\": 1425,\n \"length\": 32\n },\n {\n \"start\": 1607,\n \"length\": 32\n },\n {\n \"start\": 1682,\n \"length\": 32\n },\n {\n \"start\": 1780,\n \"length\": 32\n },\n {\n \"start\": 2015,\n \"length\": 32\n },\n {\n \"start\": 2531,\n \"length\": 32\n },\n {\n \"start\": 3295,\n \"length\": 32\n },\n {\n \"start\": 3451,\n \"length\": 32\n },\n {\n \"start\": 3624,\n \"length\": 32\n }\n ],\n \"64685\": [\n {\n \"start\": 429,\n \"length\": 32\n },\n {\n \"start\": 2130,\n \"length\": 32\n }\n ],\n \"64688\": [\n {\n \"start\": 299,\n \"length\": 32\n },\n {\n \"start\": 2250,\n \"length\": 32\n }\n ],\n \"66662\": [\n {\n \"start\": 511,\n \"length\": 32\n },\n {\n \"start\": 826,\n \"length\": 32\n }\n ]\n }\n },\n \"methodIdentifiers\": {\n \"BORROWING_MASK()\": \"b505e7a2\",\n \"assetOf(bytes)\": \"e170a9bf\",\n \"assetsUsed(bytes)\": \"aeffddde\",\n \"balanceOf(bytes)\": \"78415365\",\n \"claim(uint256,bytes32[])\": \"2f52ebb7\",\n \"deposit(uint256,bytes,bytes)\": \"69445c31\",\n \"depositToAaveV2Morpho(address,uint256)\": \"5528481b\",\n \"identifier()\": \"7998a1c4\",\n \"isBorrowingAny(address)\": \"2f93417c\",\n \"isDebt()\": \"89353a09\",\n \"minimumHealthFactor()\": \"1caff8b1\",\n \"morpho()\": \"d8fbc833\",\n \"morphoLens()\": \"425734d3\",\n \"morphoRewardsDistributor()\": \"5b5d4d78\",\n \"revokeApproval(address,address)\": \"d3bfe76a\",\n \"slippage()\": \"3e032a3b\",\n \"withdraw(uint256,address,bytes,bytes)\": \"c9111bd7\",\n \"withdrawFromAaveV2Morpho(address,uint256)\": \"872de812\",\n \"withdrawableFrom(bytes,bytes)\": \"fa50e5d2\"\n },\n \"rawMetadata\": \"{\\\"compiler\\\":{\\\"version\\\":\\\"0.8.16+commit.07a7930e\\\"},\\\"language\\\":\\\"Solidity\\\",\\\"output\\\":{\\\"abi\\\":[{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"_morpho\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"_morphoLens\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"minHealthFactor\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"rewardDistributor\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"constructor\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__ConstructorHealthFactorTooLow\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__ExternalReceiverBlocked\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"BaseAdaptor__PricingNotSupported\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__Slippage\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__UserDepositsNotAllowed\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__UserWithdrawsNotAllowed\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"MorphoAaveV2ATokenAdaptor__HealthFactorTooLow\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BORROWING_MASK\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"bytes32\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes32\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"assetOf\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract ERC20\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"assetsUsed\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract ERC20[]\\\",\\\"name\\\":\\\"assets\\\",\\\"type\\\":\\\"address[]\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"balanceOf\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"claimable\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"bytes32[]\\\",\\\"name\\\":\\\"proof\\\",\\\"type\\\":\\\"bytes32[]\\\"}],\\\"name\\\":\\\"claim\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"assets\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"deposit\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"contract IAaveToken\\\",\\\"name\\\":\\\"aToken\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"amountToDeposit\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"depositToAaveV2Morpho\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"identifier\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"bytes32\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes32\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"user\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"isBorrowingAny\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"bool\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bool\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"isDebt\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"bool\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bool\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"minimumHealthFactor\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"morpho\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract IMorphoV2\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"morphoLens\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract IMorphoLensV2\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"morphoRewardsDistributor\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract RewardsDistributor\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"contract ERC20\\\",\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"spender\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"revokeApproval\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"slippage\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint32\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint32\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"assets\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"receiver\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"withdraw\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"contract IAaveToken\\\",\\\"name\\\":\\\"aToken\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"amountToWithdraw\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"withdrawFromAaveV2Morpho\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"withdrawableFrom\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"}],\\\"devdoc\\\":{\\\"author\\\":\\\"crispymangoes\\\",\\\"kind\\\":\\\"dev\\\",\\\"methods\\\":{\\\"deposit(uint256,bytes,bytes)\\\":{\\\"details\\\":\\\"configurationData is not used for deposits bc it only influences user withdraws\\\",\\\"params\\\":{\\\"adaptorData\\\":\\\"adaptor data containing the abi encoded aToken\\\",\\\"assets\\\":\\\"the amount of assets to lend on Morpho\\\"}},\\\"depositToAaveV2Morpho(address,uint256)\\\":{\\\"details\\\":\\\"Uses `_maxAvailable` helper function, see BaseAdaptor.sol\\\",\\\"params\\\":{\\\"aToken\\\":\\\"the aToken to lend on Morpho\\\",\\\"amountToDeposit\\\":\\\"the amount of `tokenToDeposit` to lend on Morpho.\\\"}},\\\"identifier()\\\":{\\\"details\\\":\\\"Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this Identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult.\\\"},\\\"isBorrowingAny(address)\\\":{\\\"details\\\":\\\"Returns if a user has been borrowing from any market.\\\",\\\"params\\\":{\\\"user\\\":\\\"The address to check if it is borrowing or not.\\\"},\\\"returns\\\":{\\\"_0\\\":\\\"True if the user has been borrowing on any market, false otherwise.\\\"}},\\\"revokeApproval(address,address)\\\":{\\\"params\\\":{\\\"asset\\\":\\\"the ERC20 asset to revoke `spender`s approval for\\\",\\\"spender\\\":\\\"the address to revoke approval for\\\"}},\\\"withdraw(uint256,address,bytes,bytes)\\\":{\\\"details\\\":\\\"Important to verify that external receivers are allowed if receiver is not Cellar address.\\\",\\\"params\\\":{\\\"adaptorData\\\":\\\"adaptor data containing the abi encoded aToken\\\",\\\"assets\\\":\\\"the amount of assets to withdraw from Morpho\\\",\\\"receiver\\\":\\\"the address to send withdrawn assets to\\\"}},\\\"withdrawFromAaveV2Morpho(address,uint256)\\\":{\\\"params\\\":{\\\"aToken\\\":\\\"the atoken to withdraw from Morpho.\\\",\\\"amountToWithdraw\\\":\\\"the amount of `tokenToWithdraw` to withdraw from Morpho\\\"}},\\\"withdrawableFrom(bytes,bytes)\\\":{\\\"params\\\":{\\\"adaptorData\\\":\\\"the abi encoded aToken address\\\"}}},\\\"title\\\":\\\"Morpho Aave V2 aToken Adaptor\\\",\\\"version\\\":1},\\\"userdoc\\\":{\\\"errors\\\":{\\\"BaseAdaptor__ConstructorHealthFactorTooLow()\\\":[{\\\"notice\\\":\\\"Attempted to set a constructor minimum health factor to a value below `MINIMUM_CONSTRUCTOR_HEALTH_FACTOR()`.\\\"}],\\\"BaseAdaptor__ExternalReceiverBlocked()\\\":[{\\\"notice\\\":\\\"Attempted to specify an external receiver during a Cellar `callOnAdaptor` call.\\\"}],\\\"BaseAdaptor__PricingNotSupported(address)\\\":[{\\\"notice\\\":\\\"Attempted swap used unsupported output asset.\\\"}],\\\"BaseAdaptor__Slippage()\\\":[{\\\"notice\\\":\\\"Attempted swap has bad slippage.\\\"}],\\\"BaseAdaptor__UserDepositsNotAllowed()\\\":[{\\\"notice\\\":\\\"Attempted to deposit to a position where user deposits were not allowed.\\\"}],\\\"BaseAdaptor__UserWithdrawsNotAllowed()\\\":[{\\\"notice\\\":\\\"Attempted to withdraw from a position where user withdraws were not allowed.\\\"}],\\\"MorphoAaveV2ATokenAdaptor__HealthFactorTooLow()\\\":[{\\\"notice\\\":\\\"Attempted withdraw would lower Cellar health factor too low.\\\"}]},\\\"kind\\\":\\\"user\\\",\\\"methods\\\":{\\\"BORROWING_MASK()\\\":{\\\"notice\\\":\\\"Bit mask used to determine if a cellar has any open borrow positions by getting the cellar's userMarkets, and performing an AND operation with the borrow mask.\\\"},\\\"assetOf(bytes)\\\":{\\\"notice\\\":\\\"Returns the positions aToken underlying asset.\\\"},\\\"assetsUsed(bytes)\\\":{\\\"notice\\\":\\\"When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup.\\\"},\\\"balanceOf(bytes)\\\":{\\\"notice\\\":\\\"Returns the cellars balance of the positions aToken.\\\"},\\\"claim(uint256,bytes32[])\\\":{\\\"notice\\\":\\\"Allows cellars to claim Morpho Rewards.\\\"},\\\"deposit(uint256,bytes,bytes)\\\":{\\\"notice\\\":\\\"Cellar must approve Morpho to spend its assets, then call supply to lend its assets.\\\"},\\\"depositToAaveV2Morpho(address,uint256)\\\":{\\\"notice\\\":\\\"Allows strategists to lend assets on Morpho.\\\"},\\\"isDebt()\\\":{\\\"notice\\\":\\\"This adaptor returns collateral, and not debt.\\\"},\\\"minimumHealthFactor()\\\":{\\\"notice\\\":\\\"Minimum Health Factor enforced after every aToken withdraw.Overwrites strategist set minimums if they are lower.\\\"},\\\"morpho()\\\":{\\\"notice\\\":\\\"The Morpho Aave V2 contract on current network.For mainnet use 0x777777c9898D384F785Ee44Acfe945efDFf5f3E0.\\\"},\\\"morphoLens()\\\":{\\\"notice\\\":\\\"The Morpho Aave V2 Lens contract on current network.For mainnet use 0x507fA343d0A90786d86C7cd885f5C49263A91FF4.\\\"},\\\"morphoRewardsDistributor()\\\":{\\\"notice\\\":\\\"The Morpho Aave V3 rewards handler contract on current network.For mainnet use 0x3B14E5C73e0A56D607A8688098326fD4b4292135.\\\"},\\\"revokeApproval(address,address)\\\":{\\\"notice\\\":\\\"Allows strategists to zero out an approval for a given `asset`.\\\"},\\\"slippage()\\\":{\\\"notice\\\":\\\"Max possible slippage when making a swap router swap.\\\"},\\\"withdraw(uint256,address,bytes,bytes)\\\":{\\\"notice\\\":\\\"Cellars must withdraw from Morpho\\\"},\\\"withdrawFromAaveV2Morpho(address,uint256)\\\":{\\\"notice\\\":\\\"Allows strategists to withdraw assets from Morpho.\\\"},\\\"withdrawableFrom(bytes,bytes)\\\":{\\\"notice\\\":\\\"Checks if Cellar has open borrows, and if so returns zero. Otherwise returns balanceOf in underlying.\\\"}},\\\"notice\\\":\\\"Allows Cellars to interact with Morpho Aave V2 positions.\\\",\\\"version\\\":1}},\\\"settings\\\":{\\\"compilationTarget\\\":{\\\"src/modules/adaptors/Morpho/MorphoAaveV2ATokenAdaptor.sol\\\":\\\"MorphoAaveV2ATokenAdaptor\\\"},\\\"evmVersion\\\":\\\"london\\\",\\\"libraries\\\":{},\\\"metadata\\\":{\\\"bytecodeHash\\\":\\\"ipfs\\\"},\\\"optimizer\\\":{\\\"enabled\\\":true,\\\"runs\\\":200},\\\"remappings\\\":[\\\":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/\\\",\\\":@balancer/=lib/balancer-v2-monorepo/pkg/\\\",\\\":@chainlink/=lib/chainlink/\\\",\\\":@ds-test/=lib/forge-std/lib/ds-test/src/\\\",\\\":@ensdomains/=node_modules/@ensdomains/\\\",\\\":@forge-std/=lib/forge-std/src/\\\",\\\":@openzeppelin/=lib/openzeppelin-contracts/\\\",\\\":@solmate/=lib/solmate/src/\\\",\\\":@uniswap/v3-core/=lib/v3-core/\\\",\\\":@uniswap/v3-periphery/=lib/v3-periphery/\\\",\\\":@uniswapV3C/=lib/v3-core/contracts/\\\",\\\":@uniswapV3P/=lib/v3-periphery/contracts/\\\",\\\":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/\\\",\\\":balancer-v2-monorepo/=lib/balancer-v2-monorepo/\\\",\\\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\\\",\\\":compound-protocol/=lib/compound-protocol/\\\",\\\":ds-test/=lib/forge-std/lib/ds-test/src/\\\",\\\":eth-gas-reporter/=node_modules/eth-gas-reporter/\\\",\\\":forge-std/=lib/forge-std/src/\\\",\\\":hardhat/=node_modules/hardhat/\\\",\\\":openzeppelin-contracts/=lib/openzeppelin-contracts/\\\",\\\":solmate/=lib/solmate/src/\\\",\\\":v3-core.git/=lib/v3-core.git/contracts/\\\",\\\":v3-core/=lib/v3-core/contracts/\\\",\\\":v3-periphery.git/=lib/v3-periphery.git/contracts/\\\",\\\":v3-periphery/=lib/v3-periphery/contracts/\\\"]},\\\"sources\\\":{\\\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\\\":{\\\"keccak256\\\":\\\"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\\\",\\\"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\\\"]},\\\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\\\":{\\\"keccak256\\\":\\\"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\\\",\\\"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\\\"]},\\\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\\\":{\\\"keccak256\\\":\\\"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\\\",\\\"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\\\"]},\\\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\\\":{\\\"keccak256\\\":\\\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\\\",\\\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\\\"]},\\\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\\\":{\\\"keccak256\\\":\\\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\\\",\\\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\\\"]},\\\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\\\":{\\\"keccak256\\\":\\\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\\\",\\\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\\\"]},\\\"lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol\\\":{\\\"keccak256\\\":\\\"0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf\\\",\\\"dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e\\\"]},\\\"lib/openzeppelin-contracts/contracts/utils/Address.sol\\\":{\\\"keccak256\\\":\\\"0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de\\\",\\\"dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V\\\"]},\\\"lib/openzeppelin-contracts/contracts/utils/Context.sol\\\":{\\\"keccak256\\\":\\\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\\\",\\\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\\\"]},\\\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\\\":{\\\"keccak256\\\":\\\"0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929\\\",\\\"dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg\\\"]},\\\"lib/solmate/src/auth/Owned.sol\\\":{\\\"keccak256\\\":\\\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\\\",\\\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\\\"]},\\\"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\\\":{\\\"keccak256\\\":\\\"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\\\",\\\"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\\\":{\\\"keccak256\\\":\\\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\\\",\\\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\\\":{\\\"keccak256\\\":\\\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\\\",\\\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\\\":{\\\"keccak256\\\":\\\"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\\\",\\\"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\\\":{\\\"keccak256\\\":\\\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\\\",\\\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\\\":{\\\"keccak256\\\":\\\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\\\",\\\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\\\":{\\\"keccak256\\\":\\\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\\\",\\\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\\\":{\\\"keccak256\\\":\\\"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\\\",\\\"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\\\"]},\\\"lib/v3-core/contracts/libraries/FullMath.sol\\\":{\\\"keccak256\\\":\\\"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\\\",\\\"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\\\"]},\\\"lib/v3-core/contracts/libraries/TickMath.sol\\\":{\\\"keccak256\\\":\\\"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\\\",\\\"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\\\"]},\\\"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\\\":{\\\"keccak256\\\":\\\"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\\\",\\\"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\\\"]},\\\"src/Registry.sol\\\":{\\\"keccak256\\\":\\\"0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189\\\",\\\"dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK\\\"]},\\\"src/base/Cellar.sol\\\":{\\\"keccak256\\\":\\\"0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058\\\",\\\"dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs\\\"]},\\\"src/base/ERC20.sol\\\":{\\\"keccak256\\\":\\\"0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4\\\",\\\"dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf\\\"]},\\\"src/base/ERC4626.sol\\\":{\\\"keccak256\\\":\\\"0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469\\\",\\\"dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE\\\"]},\\\"src/base/Multicall.sol\\\":{\\\"keccak256\\\":\\\"0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c\\\",\\\"dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K\\\"]},\\\"src/base/SafeTransferLib.sol\\\":{\\\"keccak256\\\":\\\"0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a\\\",\\\"dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3\\\"]},\\\"src/interfaces/IMulticall.sol\\\":{\\\"keccak256\\\":\\\"0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0\\\",\\\"dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5\\\"]},\\\"src/interfaces/external/IAaveToken.sol\\\":{\\\"keccak256\\\":\\\"0x77cd64637e4c0fd379b2d4d826bcd9f64fc706a291ce77d023f693d1eb8e45d8\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://e87630603401ff3374cb610b765e46a3a235ef294fab212cf3116a35db7c4d58\\\",\\\"dweb:/ipfs/Qma8awSuYptmpBsWUMz9NZBogVRtVQwXF5cvfsVWpNKhc3\\\"]},\\\"src/interfaces/external/IChainlinkAggregator.sol\\\":{\\\"keccak256\\\":\\\"0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2\\\",\\\"dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs\\\"]},\\\"src/interfaces/external/IGravity.sol\\\":{\\\"keccak256\\\":\\\"0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51\\\",\\\"dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c\\\"]},\\\"src/interfaces/external/IUniswapV2Router02.sol\\\":{\\\"keccak256\\\":\\\"0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a\\\",\\\"dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo\\\"]},\\\"src/interfaces/external/IUniswapV3Router.sol\\\":{\\\"keccak256\\\":\\\"0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd\\\",\\\"dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK\\\"]},\\\"src/interfaces/external/Morpho/IMorphoLensV2.sol\\\":{\\\"keccak256\\\":\\\"0xc9232e163c278ff37fe6a81cadc4af59ac41e31017f39366b21a1b4ed03eadf7\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://cc3be8463c92906e52d6fcffba065fd9777568003adfeef344e03d0654064e9b\\\",\\\"dweb:/ipfs/Qme8DZoU8xHEQMxCFnVCgZw4ZrybPyFd4Ji47Attb8xQqN\\\"]},\\\"src/interfaces/external/Morpho/IMorphoV2.sol\\\":{\\\"keccak256\\\":\\\"0x7ff7eb9e520c6ed3290af890a22c77c6ba6cd5f2394f258a2b34eb7f6af5ad66\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://709aa0c2a2d7ed82e09c2765462a851bfc17aab125f735e12bd5ee1ad9e7e21f\\\",\\\"dweb:/ipfs/QmWHZuwxwSu6J9crczNc8araaSLwZpbKDJKFUN2uj7AJq9\\\"]},\\\"src/interfaces/external/UniswapV3Pool.sol\\\":{\\\"keccak256\\\":\\\"0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb\\\",\\\"urls\\\":[\\\"bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9\\\",\\\"dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh\\\"]},\\\"src/modules/adaptors/BaseAdaptor.sol\\\":{\\\"keccak256\\\":\\\"0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee\\\",\\\"dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd\\\"]},\\\"src/modules/adaptors/Morpho/MorphoAaveV2ATokenAdaptor.sol\\\":{\\\"keccak256\\\":\\\"0x87be01824e5d787ac65c6f7929447fa9b1d62118ad0bb6a7253a918b2bdba8a0\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://4640f6aaa9709bbb4727f6e436e01b709c2db3fc623374604daaf8210ea5aaaf\\\",\\\"dweb:/ipfs/QmZyhTLXZo264ajSRK5o8G2mUMoRxwaXZE1gGgxwNe6Caz\\\"]},\\\"src/modules/adaptors/Morpho/MorphoRewardHandler.sol\\\":{\\\"keccak256\\\":\\\"0xc1461e49dacbb75fe03a4aa08a58bec9639416d57fed6c6595ade2f343520480\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://b2cc897411f203e04233ee37d60e70bed92f310df63beb5adede89009c8cfc54\\\",\\\"dweb:/ipfs/QmSgJ6xXXqRLTcmyDf5uPtd5FqLvEmuK4QQ5LBXuk5dbhp\\\"]},\\\"src/modules/price-router/Extensions/Extension.sol\\\":{\\\"keccak256\\\":\\\"0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1\\\",\\\"dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo\\\"]},\\\"src/modules/price-router/PriceRouter.sol\\\":{\\\"keccak256\\\":\\\"0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66\\\",\\\"dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K\\\"]},\\\"src/modules/swap-router/SwapRouter.sol\\\":{\\\"keccak256\\\":\\\"0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818\\\",\\\"dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr\\\"]},\\\"src/utils/Math.sol\\\":{\\\"keccak256\\\":\\\"0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312\\\",\\\"dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r\\\"]},\\\"src/utils/Uint32Array.sol\\\":{\\\"keccak256\\\":\\\"0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944\\\",\\\"dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3\\\"]}},\\\"version\\\":1}\",\n \"metadata\": {\n \"compiler\": {\n \"version\": \"0.8.16+commit.07a7930e\"\n },\n \"language\": \"Solidity\",\n \"output\": {\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_morpho\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_morphoLens\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minHealthFactor\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"rewardDistributor\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__ConstructorHealthFactorTooLow\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__ExternalReceiverBlocked\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"asset\",\n \"type\": \"address\"\n }\n ],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__PricingNotSupported\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__Slippage\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__UserDepositsNotAllowed\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__UserWithdrawsNotAllowed\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"MorphoAaveV2ATokenAdaptor__HealthFactorTooLow\"\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"BORROWING_MASK\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"assetOf\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"assetsUsed\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20[]\",\n \"name\": \"assets\",\n \"type\": \"address[]\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimable\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"claim\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"assets\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"deposit\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IAaveToken\",\n \"name\": \"aToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountToDeposit\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"depositToAaveV2Morpho\"\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"identifier\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"user\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"isBorrowingAny\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"isDebt\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"minimumHealthFactor\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"morpho\",\n \"outputs\": [\n {\n \"internalType\": \"contract IMorphoV2\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"morphoLens\",\n \"outputs\": [\n {\n \"internalType\": \"contract IMorphoLensV2\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"morphoRewardsDistributor\",\n \"outputs\": [\n {\n \"internalType\": \"contract RewardsDistributor\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"asset\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"revokeApproval\"\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"slippage\",\n \"outputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"\",\n \"type\": \"uint32\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"assets\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"withdraw\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IAaveToken\",\n \"name\": \"aToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountToWithdraw\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"withdrawFromAaveV2Morpho\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"withdrawableFrom\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ]\n }\n ],\n \"devdoc\": {\n \"kind\": \"dev\",\n \"methods\": {\n \"deposit(uint256,bytes,bytes)\": {\n \"details\": \"configurationData is not used for deposits bc it only influences user withdraws\",\n \"params\": {\n \"adaptorData\": \"adaptor data containing the abi encoded aToken\",\n \"assets\": \"the amount of assets to lend on Morpho\"\n }\n },\n \"depositToAaveV2Morpho(address,uint256)\": {\n \"details\": \"Uses `_maxAvailable` helper function, see BaseAdaptor.sol\",\n \"params\": {\n \"aToken\": \"the aToken to lend on Morpho\",\n \"amountToDeposit\": \"the amount of `tokenToDeposit` to lend on Morpho.\"\n }\n },\n \"identifier()\": {\n \"details\": \"Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this Identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult.\"\n },\n \"isBorrowingAny(address)\": {\n \"details\": \"Returns if a user has been borrowing from any market.\",\n \"params\": {\n \"user\": \"The address to check if it is borrowing or not.\"\n },\n \"returns\": {\n \"_0\": \"True if the user has been borrowing on any market, false otherwise.\"\n }\n },\n \"revokeApproval(address,address)\": {\n \"params\": {\n \"asset\": \"the ERC20 asset to revoke `spender`s approval for\",\n \"spender\": \"the address to revoke approval for\"\n }\n },\n \"withdraw(uint256,address,bytes,bytes)\": {\n \"details\": \"Important to verify that external receivers are allowed if receiver is not Cellar address.\",\n \"params\": {\n \"adaptorData\": \"adaptor data containing the abi encoded aToken\",\n \"assets\": \"the amount of assets to withdraw from Morpho\",\n \"receiver\": \"the address to send withdrawn assets to\"\n }\n },\n \"withdrawFromAaveV2Morpho(address,uint256)\": {\n \"params\": {\n \"aToken\": \"the atoken to withdraw from Morpho.\",\n \"amountToWithdraw\": \"the amount of `tokenToWithdraw` to withdraw from Morpho\"\n }\n },\n \"withdrawableFrom(bytes,bytes)\": {\n \"params\": {\n \"adaptorData\": \"the abi encoded aToken address\"\n }\n }\n },\n \"version\": 1\n },\n \"userdoc\": {\n \"kind\": \"user\",\n \"methods\": {\n \"BORROWING_MASK()\": {\n \"notice\": \"Bit mask used to determine if a cellar has any open borrow positions by getting the cellar's userMarkets, and performing an AND operation with the borrow mask.\"\n },\n \"assetOf(bytes)\": {\n \"notice\": \"Returns the positions aToken underlying asset.\"\n },\n \"assetsUsed(bytes)\": {\n \"notice\": \"When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup.\"\n },\n \"balanceOf(bytes)\": {\n \"notice\": \"Returns the cellars balance of the positions aToken.\"\n },\n \"claim(uint256,bytes32[])\": {\n \"notice\": \"Allows cellars to claim Morpho Rewards.\"\n },\n \"deposit(uint256,bytes,bytes)\": {\n \"notice\": \"Cellar must approve Morpho to spend its assets, then call supply to lend its assets.\"\n },\n \"depositToAaveV2Morpho(address,uint256)\": {\n \"notice\": \"Allows strategists to lend assets on Morpho.\"\n },\n \"isDebt()\": {\n \"notice\": \"This adaptor returns collateral, and not debt.\"\n },\n \"minimumHealthFactor()\": {\n \"notice\": \"Minimum Health Factor enforced after every aToken withdraw.Overwrites strategist set minimums if they are lower.\"\n },\n \"morpho()\": {\n \"notice\": \"The Morpho Aave V2 contract on current network.For mainnet use 0x777777c9898D384F785Ee44Acfe945efDFf5f3E0.\"\n },\n \"morphoLens()\": {\n \"notice\": \"The Morpho Aave V2 Lens contract on current network.For mainnet use 0x507fA343d0A90786d86C7cd885f5C49263A91FF4.\"\n },\n \"morphoRewardsDistributor()\": {\n \"notice\": \"The Morpho Aave V3 rewards handler contract on current network.For mainnet use 0x3B14E5C73e0A56D607A8688098326fD4b4292135.\"\n },\n \"revokeApproval(address,address)\": {\n \"notice\": \"Allows strategists to zero out an approval for a given `asset`.\"\n },\n \"slippage()\": {\n \"notice\": \"Max possible slippage when making a swap router swap.\"\n },\n \"withdraw(uint256,address,bytes,bytes)\": {\n \"notice\": \"Cellars must withdraw from Morpho\"\n },\n \"withdrawFromAaveV2Morpho(address,uint256)\": {\n \"notice\": \"Allows strategists to withdraw assets from Morpho.\"\n },\n \"withdrawableFrom(bytes,bytes)\": {\n \"notice\": \"Checks if Cellar has open borrows, and if so returns zero. Otherwise returns balanceOf in underlying.\"\n }\n },\n \"version\": 1\n }\n },\n \"settings\": {\n \"remappings\": [\n \":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/\",\n \":@balancer/=lib/balancer-v2-monorepo/pkg/\",\n \":@chainlink/=lib/chainlink/\",\n \":@ds-test/=lib/forge-std/lib/ds-test/src/\",\n \":@ensdomains/=node_modules/@ensdomains/\",\n \":@forge-std/=lib/forge-std/src/\",\n \":@openzeppelin/=lib/openzeppelin-contracts/\",\n \":@solmate/=lib/solmate/src/\",\n \":@uniswap/v3-core/=lib/v3-core/\",\n \":@uniswap/v3-periphery/=lib/v3-periphery/\",\n \":@uniswapV3C/=lib/v3-core/contracts/\",\n \":@uniswapV3P/=lib/v3-periphery/contracts/\",\n \":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/\",\n \":balancer-v2-monorepo/=lib/balancer-v2-monorepo/\",\n \":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\n \":compound-protocol/=lib/compound-protocol/\",\n \":ds-test/=lib/forge-std/lib/ds-test/src/\",\n \":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\n \":forge-std/=lib/forge-std/src/\",\n \":hardhat/=node_modules/hardhat/\",\n \":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\n \":solmate/=lib/solmate/src/\",\n \":v3-core.git/=lib/v3-core.git/contracts/\",\n \":v3-core/=lib/v3-core/contracts/\",\n \":v3-periphery.git/=lib/v3-periphery.git/contracts/\",\n \":v3-periphery/=lib/v3-periphery/contracts/\"\n ],\n \"optimizer\": {\n \"enabled\": true,\n \"runs\": 200\n },\n \"metadata\": {\n \"bytecodeHash\": \"ipfs\"\n },\n \"compilationTarget\": {\n \"src/modules/adaptors/Morpho/MorphoAaveV2ATokenAdaptor.sol\": \"MorphoAaveV2ATokenAdaptor\"\n },\n \"libraries\": {}\n },\n \"sources\": {\n \"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\": {\n \"keccak256\": \"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\",\n \"urls\": [\n \"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\",\n \"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\": {\n \"keccak256\": \"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\",\n \"urls\": [\n \"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\",\n \"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\": {\n \"keccak256\": \"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\",\n \"urls\": [\n \"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\",\n \"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\": {\n \"keccak256\": \"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\n \"urls\": [\n \"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\n \"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\": {\n \"keccak256\": \"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\n \"urls\": [\n \"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\n \"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\": {\n \"keccak256\": \"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\n \"urls\": [\n \"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\n \"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol\": {\n \"keccak256\": \"0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028\",\n \"urls\": [\n \"bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf\",\n \"dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/utils/Address.sol\": {\n \"keccak256\": \"0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700\",\n \"urls\": [\n \"bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de\",\n \"dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/utils/Context.sol\": {\n \"keccak256\": \"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\n \"urls\": [\n \"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\n \"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\": {\n \"keccak256\": \"0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb\",\n \"urls\": [\n \"bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929\",\n \"dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/solmate/src/auth/Owned.sol\": {\n \"keccak256\": \"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\n \"urls\": [\n \"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\n \"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\": {\n \"keccak256\": \"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\",\n \"urls\": [\n \"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\",\n \"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\": {\n \"keccak256\": \"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\n \"urls\": [\n \"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\n \"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\": {\n \"keccak256\": \"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\n \"urls\": [\n \"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\n \"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\": {\n \"keccak256\": \"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\",\n \"urls\": [\n \"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\",\n \"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\": {\n \"keccak256\": \"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\n \"urls\": [\n \"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\n \"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\": {\n \"keccak256\": \"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\n \"urls\": [\n \"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\n \"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\": {\n \"keccak256\": \"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\n \"urls\": [\n \"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\n \"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\": {\n \"keccak256\": \"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\",\n \"urls\": [\n \"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\",\n \"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/libraries/FullMath.sol\": {\n \"keccak256\": \"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\",\n \"urls\": [\n \"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\",\n \"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/v3-core/contracts/libraries/TickMath.sol\": {\n \"keccak256\": \"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\",\n \"urls\": [\n \"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\",\n \"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\": {\n \"keccak256\": \"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\",\n \"urls\": [\n \"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\",\n \"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/Registry.sol\": {\n \"keccak256\": \"0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47\",\n \"urls\": [\n \"bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189\",\n \"dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/base/Cellar.sol\": {\n \"keccak256\": \"0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47\",\n \"urls\": [\n \"bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058\",\n \"dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/base/ERC20.sol\": {\n \"keccak256\": \"0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02\",\n \"urls\": [\n \"bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4\",\n \"dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"src/base/ERC4626.sol\": {\n \"keccak256\": \"0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7\",\n \"urls\": [\n \"bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469\",\n \"dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"src/base/Multicall.sol\": {\n \"keccak256\": \"0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9\",\n \"urls\": [\n \"bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c\",\n \"dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/base/SafeTransferLib.sol\": {\n \"keccak256\": \"0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324\",\n \"urls\": [\n \"bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a\",\n \"dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"src/interfaces/IMulticall.sol\": {\n \"keccak256\": \"0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e\",\n \"urls\": [\n \"bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0\",\n \"dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/interfaces/external/IAaveToken.sol\": {\n \"keccak256\": \"0x77cd64637e4c0fd379b2d4d826bcd9f64fc706a291ce77d023f693d1eb8e45d8\",\n \"urls\": [\n \"bzz-raw://e87630603401ff3374cb610b765e46a3a235ef294fab212cf3116a35db7c4d58\",\n \"dweb:/ipfs/Qma8awSuYptmpBsWUMz9NZBogVRtVQwXF5cvfsVWpNKhc3\"\n ],\n \"license\": \"MIT\"\n },\n \"src/interfaces/external/IChainlinkAggregator.sol\": {\n \"keccak256\": \"0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d\",\n \"urls\": [\n \"bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2\",\n \"dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/IGravity.sol\": {\n \"keccak256\": \"0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11\",\n \"urls\": [\n \"bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51\",\n \"dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/IUniswapV2Router02.sol\": {\n \"keccak256\": \"0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f\",\n \"urls\": [\n \"bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a\",\n \"dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/IUniswapV3Router.sol\": {\n \"keccak256\": \"0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355\",\n \"urls\": [\n \"bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd\",\n \"dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/interfaces/external/Morpho/IMorphoLensV2.sol\": {\n \"keccak256\": \"0xc9232e163c278ff37fe6a81cadc4af59ac41e31017f39366b21a1b4ed03eadf7\",\n \"urls\": [\n \"bzz-raw://cc3be8463c92906e52d6fcffba065fd9777568003adfeef344e03d0654064e9b\",\n \"dweb:/ipfs/Qme8DZoU8xHEQMxCFnVCgZw4ZrybPyFd4Ji47Attb8xQqN\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/Morpho/IMorphoV2.sol\": {\n \"keccak256\": \"0x7ff7eb9e520c6ed3290af890a22c77c6ba6cd5f2394f258a2b34eb7f6af5ad66\",\n \"urls\": [\n \"bzz-raw://709aa0c2a2d7ed82e09c2765462a851bfc17aab125f735e12bd5ee1ad9e7e21f\",\n \"dweb:/ipfs/QmWHZuwxwSu6J9crczNc8araaSLwZpbKDJKFUN2uj7AJq9\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/UniswapV3Pool.sol\": {\n \"keccak256\": \"0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb\",\n \"urls\": [\n \"bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9\",\n \"dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh\"\n ],\n \"license\": null\n },\n \"src/modules/adaptors/BaseAdaptor.sol\": {\n \"keccak256\": \"0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c\",\n \"urls\": [\n \"bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee\",\n \"dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/adaptors/Morpho/MorphoAaveV2ATokenAdaptor.sol\": {\n \"keccak256\": \"0x87be01824e5d787ac65c6f7929447fa9b1d62118ad0bb6a7253a918b2bdba8a0\",\n \"urls\": [\n \"bzz-raw://4640f6aaa9709bbb4727f6e436e01b709c2db3fc623374604daaf8210ea5aaaf\",\n \"dweb:/ipfs/QmZyhTLXZo264ajSRK5o8G2mUMoRxwaXZE1gGgxwNe6Caz\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/adaptors/Morpho/MorphoRewardHandler.sol\": {\n \"keccak256\": \"0xc1461e49dacbb75fe03a4aa08a58bec9639416d57fed6c6595ade2f343520480\",\n \"urls\": [\n \"bzz-raw://b2cc897411f203e04233ee37d60e70bed92f310df63beb5adede89009c8cfc54\",\n \"dweb:/ipfs/QmSgJ6xXXqRLTcmyDf5uPtd5FqLvEmuK4QQ5LBXuk5dbhp\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/price-router/Extensions/Extension.sol\": {\n \"keccak256\": \"0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d\",\n \"urls\": [\n \"bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1\",\n \"dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/price-router/PriceRouter.sol\": {\n \"keccak256\": \"0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9\",\n \"urls\": [\n \"bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66\",\n \"dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/swap-router/SwapRouter.sol\": {\n \"keccak256\": \"0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80\",\n \"urls\": [\n \"bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818\",\n \"dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/utils/Math.sol\": {\n \"keccak256\": \"0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f\",\n \"urls\": [\n \"bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312\",\n \"dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/utils/Uint32Array.sol\": {\n \"keccak256\": \"0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9\",\n \"urls\": [\n \"bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944\",\n \"dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3\"\n ],\n \"license\": \"Apache-2.0\"\n }\n },\n \"version\": 1\n },\n \"ast\": {\n \"absolutePath\": \"src/modules/adaptors/Morpho/MorphoAaveV2ATokenAdaptor.sol\",\n \"id\": 65118,\n \"exportedSymbols\": {\n \"BaseAdaptor\": [\n 61644\n ],\n \"ERC20\": [\n 45747\n ],\n \"IAaveToken\": [\n 49523\n ],\n \"IMorphoLensV2\": [\n 53305\n ],\n \"IMorphoV2\": [\n 53396\n ],\n \"Math\": [\n 74811\n ],\n \"MorphoAaveV2ATokenAdaptor\": [\n 65117\n ],\n \"MorphoRewardHandler\": [\n 66696\n ],\n \"SafeTransferLib\": [\n 46498\n ]\n },\n \"nodeType\": \"SourceUnit\",\n \"src\": \"39:9072:197\",\n \"nodes\": [\n {\n \"id\": 64645,\n \"nodeType\": \"PragmaDirective\",\n \"src\": \"39:23:197\",\n \"nodes\": [],\n \"literals\": [\n \"solidity\",\n \"0.8\",\n \".16\"\n ]\n },\n {\n \"id\": 64650,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"64:97:197\",\n \"nodes\": [],\n \"absolutePath\": \"src/modules/adaptors/BaseAdaptor.sol\",\n \"file\": \"src/modules/adaptors/BaseAdaptor.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 65118,\n \"sourceUnit\": 61645,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 64646,\n \"name\": \"BaseAdaptor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61644,\n \"src\": \"73:11:197\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 64647,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 45747,\n \"src\": \"86:5:197\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 64648,\n \"name\": \"SafeTransferLib\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 46498,\n \"src\": \"93:15:197\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 64649,\n \"name\": \"Math\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 74811,\n \"src\": \"110:4:197\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 64652,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"162:73:197\",\n \"nodes\": [],\n \"absolutePath\": \"src/interfaces/external/Morpho/IMorphoV2.sol\",\n \"file\": \"src/interfaces/external/Morpho/IMorphoV2.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 65118,\n \"sourceUnit\": 53397,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 64651,\n \"name\": \"IMorphoV2\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53396,\n \"src\": \"171:9:197\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 64654,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"236:81:197\",\n \"nodes\": [],\n \"absolutePath\": \"src/interfaces/external/Morpho/IMorphoLensV2.sol\",\n \"file\": \"src/interfaces/external/Morpho/IMorphoLensV2.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 65118,\n \"sourceUnit\": 53306,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 64653,\n \"name\": \"IMorphoLensV2\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53305,\n \"src\": \"245:13:197\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 64656,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"318:90:197\",\n \"nodes\": [],\n \"absolutePath\": \"src/modules/adaptors/Morpho/MorphoRewardHandler.sol\",\n \"file\": \"src/modules/adaptors/Morpho/MorphoRewardHandler.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 65118,\n \"sourceUnit\": 66697,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 64655,\n \"name\": \"MorphoRewardHandler\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66696,\n \"src\": \"327:19:197\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 64658,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"409:68:197\",\n \"nodes\": [],\n \"absolutePath\": \"src/interfaces/external/IAaveToken.sol\",\n \"file\": \"src/interfaces/external/IAaveToken.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 65118,\n \"sourceUnit\": 49524,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 64657,\n \"name\": \"IAaveToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 49523,\n \"src\": \"418:10:197\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 65117,\n \"nodeType\": \"ContractDefinition\",\n \"src\": \"621:8489:197\",\n \"nodes\": [\n {\n \"id\": 64667,\n \"nodeType\": \"UsingForDirective\",\n \"src\": \"698:32:197\",\n \"nodes\": [],\n \"global\": false,\n \"libraryName\": {\n \"id\": 64664,\n \"name\": \"SafeTransferLib\",\n \"nameLocations\": [\n \"704:15:197\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 46498,\n \"src\": \"704:15:197\"\n },\n \"typeName\": {\n \"id\": 64666,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 64665,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"724:5:197\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"724:5:197\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"724:5:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n }\n },\n {\n \"id\": 64670,\n \"nodeType\": \"UsingForDirective\",\n \"src\": \"735:23:197\",\n \"nodes\": [],\n \"global\": false,\n \"libraryName\": {\n \"id\": 64668,\n \"name\": \"Math\",\n \"nameLocations\": [\n \"741:4:197\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 74811,\n \"src\": \"741:4:197\"\n },\n \"typeName\": {\n \"id\": 64669,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"750:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n },\n {\n \"id\": 64674,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"1359:107:197\",\n \"nodes\": [],\n \"constant\": true,\n \"documentation\": {\n \"id\": 64671,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"1138:216:197\",\n \"text\": \" @notice Bit mask used to determine if a cellar has any open borrow positions\\n by getting the cellar's userMarkets, and performing an AND operation\\n with the borrow mask.\"\n },\n \"functionSelector\": \"b505e7a2\",\n \"mutability\": \"constant\",\n \"name\": \"BORROWING_MASK\",\n \"nameLocation\": \"1383:14:197\",\n \"scope\": 65117,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n \"typeName\": {\n \"id\": 64672,\n \"name\": \"bytes32\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1359:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"value\": {\n \"hexValue\": \"307835353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535\",\n \"id\": 64673,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"1400:66:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_38597363079105398474523661669562635951089994888546854679819194669304376546645_by_1\",\n \"typeString\": \"int_const 3859...(69 digits omitted)...6645\"\n },\n \"value\": \"0x5555555555555555555555555555555555555555555555555555555555555555\"\n },\n \"visibility\": \"public\"\n },\n {\n \"id\": 64677,\n \"nodeType\": \"ErrorDefinition\",\n \"src\": \"1563:54:197\",\n \"nodes\": [],\n \"documentation\": {\n \"id\": 64675,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"1473:85:197\",\n \"text\": \"@notice Attempted withdraw would lower Cellar health factor too low.\"\n },\n \"errorSelector\": \"34c91144\",\n \"name\": \"MorphoAaveV2ATokenAdaptor__HealthFactorTooLow\",\n \"nameLocation\": \"1569:45:197\",\n \"parameters\": {\n \"id\": 64676,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"1614:2:197\"\n }\n },\n {\n \"id\": 64681,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"1777:33:197\",\n \"nodes\": [],\n \"constant\": false,\n \"documentation\": {\n \"id\": 64678,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"1623:149:197\",\n \"text\": \" @notice The Morpho Aave V2 contract on current network.\\n @notice For mainnet use 0x777777c9898D384F785Ee44Acfe945efDFf5f3E0.\"\n },\n \"functionSelector\": \"d8fbc833\",\n \"mutability\": \"immutable\",\n \"name\": \"morpho\",\n \"nameLocation\": \"1804:6:197\",\n \"scope\": 65117,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n },\n \"typeName\": {\n \"id\": 64680,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 64679,\n \"name\": \"IMorphoV2\",\n \"nameLocations\": [\n \"1777:9:197\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 53396,\n \"src\": \"1777:9:197\"\n },\n \"referencedDeclaration\": 53396,\n \"src\": \"1777:9:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n },\n \"visibility\": \"public\"\n },\n {\n \"id\": 64685,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"1976:41:197\",\n \"nodes\": [],\n \"constant\": false,\n \"documentation\": {\n \"id\": 64682,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"1817:154:197\",\n \"text\": \" @notice The Morpho Aave V2 Lens contract on current network.\\n @notice For mainnet use 0x507fA343d0A90786d86C7cd885f5C49263A91FF4.\"\n },\n \"functionSelector\": \"425734d3\",\n \"mutability\": \"immutable\",\n \"name\": \"morphoLens\",\n \"nameLocation\": \"2007:10:197\",\n \"scope\": 65117,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoLensV2_$53305\",\n \"typeString\": \"contract IMorphoLensV2\"\n },\n \"typeName\": {\n \"id\": 64684,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 64683,\n \"name\": \"IMorphoLensV2\",\n \"nameLocations\": [\n \"1976:13:197\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 53305,\n \"src\": \"1976:13:197\"\n },\n \"referencedDeclaration\": 53305,\n \"src\": \"1976:13:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoLensV2_$53305\",\n \"typeString\": \"contract IMorphoLensV2\"\n }\n },\n \"visibility\": \"public\"\n },\n {\n \"id\": 64688,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"2184:44:197\",\n \"nodes\": [],\n \"constant\": false,\n \"documentation\": {\n \"id\": 64686,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"2024:155:197\",\n \"text\": \" @notice Minimum Health Factor enforced after every aToken withdraw.\\n @notice Overwrites strategist set minimums if they are lower.\"\n },\n \"functionSelector\": \"1caff8b1\",\n \"mutability\": \"immutable\",\n \"name\": \"minimumHealthFactor\",\n \"nameLocation\": \"2209:19:197\",\n \"scope\": 65117,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 64687,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2184:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"public\"\n },\n {\n \"id\": 64723,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"2235:383:197\",\n \"nodes\": [],\n \"body\": {\n \"id\": 64722,\n \"nodeType\": \"Block\",\n \"src\": \"2414:204:197\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 64703,\n \"name\": \"minHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64694,\n \"src\": \"2462:15:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"id\": 64702,\n \"name\": \"_verifyConstructorMinimumHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61626,\n \"src\": \"2424:37:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_pure$_t_uint256_$returns$__$\",\n \"typeString\": \"function (uint256) pure\"\n }\n },\n \"id\": 64704,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"2424:54:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 64705,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"2424:54:197\"\n },\n {\n \"expression\": {\n \"id\": 64710,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 64706,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64681,\n \"src\": \"2488:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"id\": 64708,\n \"name\": \"_morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64690,\n \"src\": \"2507:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 64707,\n \"name\": \"IMorphoV2\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53396,\n \"src\": \"2497:9:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IMorphoV2_$53396_$\",\n \"typeString\": \"type(contract IMorphoV2)\"\n }\n },\n \"id\": 64709,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"2497:18:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n },\n \"src\": \"2488:27:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n },\n \"id\": 64711,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"2488:27:197\"\n },\n {\n \"expression\": {\n \"id\": 64716,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 64712,\n \"name\": \"morphoLens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64685,\n \"src\": \"2525:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoLensV2_$53305\",\n \"typeString\": \"contract IMorphoLensV2\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"id\": 64714,\n \"name\": \"_morphoLens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64692,\n \"src\": \"2552:11:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 64713,\n \"name\": \"IMorphoLensV2\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53305,\n \"src\": \"2538:13:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IMorphoLensV2_$53305_$\",\n \"typeString\": \"type(contract IMorphoLensV2)\"\n }\n },\n \"id\": 64715,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"2538:26:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoLensV2_$53305\",\n \"typeString\": \"contract IMorphoLensV2\"\n }\n },\n \"src\": \"2525:39:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoLensV2_$53305\",\n \"typeString\": \"contract IMorphoLensV2\"\n }\n },\n \"id\": 64717,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"2525:39:197\"\n },\n {\n \"expression\": {\n \"id\": 64720,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 64718,\n \"name\": \"minimumHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64688,\n \"src\": \"2574:19:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"id\": 64719,\n \"name\": \"minHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64694,\n \"src\": \"2596:15:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"2574:37:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 64721,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"2574:37:197\"\n }\n ]\n },\n \"implemented\": true,\n \"kind\": \"constructor\",\n \"modifiers\": [\n {\n \"arguments\": [\n {\n \"id\": 64699,\n \"name\": \"rewardDistributor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64696,\n \"src\": \"2395:17:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"id\": 64700,\n \"kind\": \"baseConstructorSpecifier\",\n \"modifierName\": {\n \"id\": 64698,\n \"name\": \"MorphoRewardHandler\",\n \"nameLocations\": [\n \"2375:19:197\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 66696,\n \"src\": \"2375:19:197\"\n },\n \"nodeType\": \"ModifierInvocation\",\n \"src\": \"2375:38:197\"\n }\n ],\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"parameters\": {\n \"id\": 64697,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 64690,\n \"mutability\": \"mutable\",\n \"name\": \"_morpho\",\n \"nameLocation\": \"2264:7:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64723,\n \"src\": \"2256:15:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 64689,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2256:7:197\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 64692,\n \"mutability\": \"mutable\",\n \"name\": \"_morphoLens\",\n \"nameLocation\": \"2289:11:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64723,\n \"src\": \"2281:19:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 64691,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2281:7:197\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 64694,\n \"mutability\": \"mutable\",\n \"name\": \"minHealthFactor\",\n \"nameLocation\": \"2318:15:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64723,\n \"src\": \"2310:23:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 64693,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2310:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 64696,\n \"mutability\": \"mutable\",\n \"name\": \"rewardDistributor\",\n \"nameLocation\": \"2351:17:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64723,\n \"src\": \"2343:25:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 64695,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2343:7:197\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"2246:128:197\"\n },\n \"returnParameters\": {\n \"id\": 64701,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"2414:0:197\"\n },\n \"scope\": 65117,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 64738,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"3037:145:197\",\n \"nodes\": [],\n \"body\": {\n \"id\": 64737,\n \"nodeType\": \"Block\",\n \"src\": \"3098:84:197\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"hexValue\": \"4d6f7270686f20416176652056322061546f6b656e2041646170746f72205620312e32\",\n \"id\": 64733,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"string\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"3136:37:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_stringliteral_4a2dae23e3b1312ed6fe4ce495c0cac8d7bd6b8de028aee507b4286973db6b81\",\n \"typeString\": \"literal_string \\\"Morpho Aave V2 aToken Adaptor V 1.2\\\"\"\n },\n \"value\": \"Morpho Aave V2 aToken Adaptor V 1.2\"\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_stringliteral_4a2dae23e3b1312ed6fe4ce495c0cac8d7bd6b8de028aee507b4286973db6b81\",\n \"typeString\": \"literal_string \\\"Morpho Aave V2 aToken Adaptor V 1.2\\\"\"\n }\n ],\n \"expression\": {\n \"id\": 64731,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"3125:3:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 64732,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"3129:6:197\",\n \"memberName\": \"encode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"3125:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$\",\n \"typeString\": \"function () pure returns (bytes memory)\"\n }\n },\n \"id\": 64734,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3125:49:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n ],\n \"id\": 64730,\n \"name\": \"keccak256\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -8,\n \"src\": \"3115:9:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$\",\n \"typeString\": \"function (bytes memory) pure returns (bytes32)\"\n }\n },\n \"id\": 64735,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3115:60:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"functionReturnParameters\": 64729,\n \"id\": 64736,\n \"nodeType\": \"Return\",\n \"src\": \"3108:67:197\"\n }\n ]\n },\n \"baseFunctions\": [\n 61410\n ],\n \"documentation\": {\n \"id\": 64724,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"2736:296:197\",\n \"text\": \" @dev Identifier unique to this adaptor for a shared registry.\\n Normally the identifier would just be the address of this contract, but this\\n Identifier is needed during Cellar Delegate Call Operations, so getting the address\\n of the adaptor is more difficult.\"\n },\n \"functionSelector\": \"7998a1c4\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"identifier\",\n \"nameLocation\": \"3046:10:197\",\n \"overrides\": {\n \"id\": 64726,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"3071:8:197\"\n },\n \"parameters\": {\n \"id\": 64725,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"3056:2:197\"\n },\n \"returnParameters\": {\n \"id\": 64729,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 64728,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64738,\n \"src\": \"3089:7:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n \"typeName\": {\n \"id\": 64727,\n \"name\": \"bytes32\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3089:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"3088:9:197\"\n },\n \"scope\": 65117,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 64797,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"3649:482:197\",\n \"nodes\": [],\n \"body\": {\n \"id\": 64796,\n \"nodeType\": \"Block\",\n \"src\": \"3738:393:197\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 64751\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 64751,\n \"mutability\": \"mutable\",\n \"name\": \"aToken\",\n \"nameLocation\": \"3796:6:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64796,\n \"src\": \"3785:17:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n },\n \"typeName\": {\n \"id\": 64750,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 64749,\n \"name\": \"IAaveToken\",\n \"nameLocations\": [\n \"3785:10:197\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 49523,\n \"src\": \"3785:10:197\"\n },\n \"referencedDeclaration\": 49523,\n \"src\": \"3785:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 64758,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 64754,\n \"name\": \"adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64743,\n \"src\": \"3816:11:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 64755,\n \"name\": \"IAaveToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 49523,\n \"src\": \"3830:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IAaveToken_$49523_$\",\n \"typeString\": \"type(contract IAaveToken)\"\n }\n }\n ],\n \"id\": 64756,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"3829:12:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IAaveToken_$49523_$\",\n \"typeString\": \"type(contract IAaveToken)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_contract$_IAaveToken_$49523_$\",\n \"typeString\": \"type(contract IAaveToken)\"\n }\n ],\n \"expression\": {\n \"id\": 64752,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"3805:3:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 64753,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"3809:6:197\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"3805:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 64757,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3805:37:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"3785:57:197\"\n },\n {\n \"assignments\": [\n 64761\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 64761,\n \"mutability\": \"mutable\",\n \"name\": \"underlying\",\n \"nameLocation\": \"3858:10:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64796,\n \"src\": \"3852:16:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 64760,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 64759,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"3852:5:197\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"3852:5:197\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"3852:5:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 64767,\n \"initialValue\": {\n \"arguments\": [\n {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"expression\": {\n \"id\": 64763,\n \"name\": \"aToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64751,\n \"src\": \"3877:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n },\n \"id\": 64764,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"3884:24:197\",\n \"memberName\": \"UNDERLYING_ASSET_ADDRESS\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 49522,\n \"src\": \"3877:31:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$__$returns$_t_address_$\",\n \"typeString\": \"function () view external returns (address)\"\n }\n },\n \"id\": 64765,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3877:33:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 64762,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 45747,\n \"src\": \"3871:5:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n },\n \"id\": 64766,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3871:40:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"3852:59:197\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 64773,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64681,\n \"src\": \"3952:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n ],\n \"id\": 64772,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"3944:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 64771,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3944:7:197\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 64774,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3944:15:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 64775,\n \"name\": \"assets\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64741,\n \"src\": \"3961:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 64768,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64761,\n \"src\": \"3921:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 64770,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"3932:11:197\",\n \"memberName\": \"safeApprove\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 46497,\n \"src\": \"3921:22:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"function (contract ERC20,address,uint256)\"\n }\n },\n \"id\": 64776,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3921:47:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 64777,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"3921:47:197\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 64783,\n \"name\": \"aToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64751,\n \"src\": \"4001:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n ],\n \"id\": 64782,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"3993:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 64781,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3993:7:197\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 64784,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3993:15:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 64785,\n \"name\": \"assets\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64741,\n \"src\": \"4010:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 64778,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64681,\n \"src\": \"3979:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n },\n \"id\": 64780,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"3986:6:197\",\n \"memberName\": \"supply\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53372,\n \"src\": \"3979:13:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$\",\n \"typeString\": \"function (address,uint256) external\"\n }\n },\n \"id\": 64786,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3979:38:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 64787,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"3979:38:197\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 64789,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64761,\n \"src\": \"4096:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 64792,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64681,\n \"src\": \"4116:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n ],\n \"id\": 64791,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"4108:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 64790,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4108:7:197\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 64793,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4108:15:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 64788,\n \"name\": \"_revokeExternalApproval\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61585,\n \"src\": \"4072:23:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$returns$__$\",\n \"typeString\": \"function (contract ERC20,address)\"\n }\n },\n \"id\": 64794,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4072:52:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 64795,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"4072:52:197\"\n }\n ]\n },\n \"baseFunctions\": [\n 61454\n ],\n \"documentation\": {\n \"id\": 64739,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"3308:336:197\",\n \"text\": \" @notice Cellar must approve Morpho to spend its assets, then call supply to lend its assets.\\n @param assets the amount of assets to lend on Morpho\\n @param adaptorData adaptor data containing the abi encoded aToken\\n @dev configurationData is not used for deposits bc it only influences user withdraws\"\n },\n \"functionSelector\": \"69445c31\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"deposit\",\n \"nameLocation\": \"3658:7:197\",\n \"overrides\": {\n \"id\": 64747,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"3729:8:197\"\n },\n \"parameters\": {\n \"id\": 64746,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 64741,\n \"mutability\": \"mutable\",\n \"name\": \"assets\",\n \"nameLocation\": \"3674:6:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64797,\n \"src\": \"3666:14:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 64740,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3666:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 64743,\n \"mutability\": \"mutable\",\n \"name\": \"adaptorData\",\n \"nameLocation\": \"3695:11:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64797,\n \"src\": \"3682:24:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 64742,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3682:5:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 64745,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64797,\n \"src\": \"3708:12:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 64744,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3708:5:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"3665:56:197\"\n },\n \"returnParameters\": {\n \"id\": 64748,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"3738:0:197\"\n },\n \"scope\": 65117,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 64843,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"4507:497:197\",\n \"nodes\": [],\n \"body\": {\n \"id\": 64842,\n \"nodeType\": \"Block\",\n \"src\": \"4615:389:197\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 64811,\n \"name\": \"receiver\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64802,\n \"src\": \"4688:8:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 64810,\n \"name\": \"_externalReceiverCheck\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61611,\n \"src\": \"4665:22:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_view$_t_address_$returns$__$\",\n \"typeString\": \"function (address) view\"\n }\n },\n \"id\": 64812,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4665:32:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 64813,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"4665:32:197\"\n },\n {\n \"condition\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 64817,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"4790:4:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV2ATokenAdaptor_$65117\",\n \"typeString\": \"contract MorphoAaveV2ATokenAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV2ATokenAdaptor_$65117\",\n \"typeString\": \"contract MorphoAaveV2ATokenAdaptor\"\n }\n ],\n \"id\": 64816,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"4782:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 64815,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4782:7:197\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 64818,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4782:13:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 64814,\n \"name\": \"isBorrowingAny\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65116,\n \"src\": \"4767:14:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_view$_t_address_$returns$_t_bool_$\",\n \"typeString\": \"function (address) view returns (bool)\"\n }\n },\n \"id\": 64819,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4767:29:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 64823,\n \"nodeType\": \"IfStatement\",\n \"src\": \"4763:80:197\",\n \"trueBody\": {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 64820,\n \"name\": \"BaseAdaptor__UserWithdrawsNotAllowed\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61385,\n \"src\": \"4805:36:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 64821,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4805:38:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 64822,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"4798:45:197\"\n }\n },\n {\n \"assignments\": [\n 64825\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 64825,\n \"mutability\": \"mutable\",\n \"name\": \"aToken\",\n \"nameLocation\": \"4862:6:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64842,\n \"src\": \"4854:14:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 64824,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4854:7:197\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 64833,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 64828,\n \"name\": \"adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64804,\n \"src\": \"4882:11:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 64830,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"4896:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 64829,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4896:7:197\",\n \"typeDescriptions\": {}\n }\n }\n ],\n \"id\": 64831,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"4895:9:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n ],\n \"expression\": {\n \"id\": 64826,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"4871:3:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 64827,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"4875:6:197\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"4871:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 64832,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4871:34:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address_payable\",\n \"typeString\": \"address payable\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"4854:51:197\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 64837,\n \"name\": \"aToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64825,\n \"src\": \"4972:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 64838,\n \"name\": \"assets\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64800,\n \"src\": \"4980:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n {\n \"id\": 64839,\n \"name\": \"receiver\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64802,\n \"src\": \"4988:8:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 64834,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64681,\n \"src\": \"4956:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n },\n \"id\": 64836,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"4963:8:197\",\n \"memberName\": \"withdraw\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53395,\n \"src\": \"4956:15:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$\",\n \"typeString\": \"function (address,uint256,address) external\"\n }\n },\n \"id\": 64840,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4956:41:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 64841,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"4956:41:197\"\n }\n ]\n },\n \"baseFunctions\": [\n 61466\n ],\n \"documentation\": {\n \"id\": 64798,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"4137:365:197\",\n \"text\": \" @notice Cellars must withdraw from Morpho\\n @dev Important to verify that external receivers are allowed if receiver is not Cellar address.\\n @param assets the amount of assets to withdraw from Morpho\\n @param receiver the address to send withdrawn assets to\\n @param adaptorData adaptor data containing the abi encoded aToken\"\n },\n \"functionSelector\": \"c9111bd7\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"withdraw\",\n \"nameLocation\": \"4516:8:197\",\n \"overrides\": {\n \"id\": 64808,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"4606:8:197\"\n },\n \"parameters\": {\n \"id\": 64807,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 64800,\n \"mutability\": \"mutable\",\n \"name\": \"assets\",\n \"nameLocation\": \"4533:6:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64843,\n \"src\": \"4525:14:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 64799,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4525:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 64802,\n \"mutability\": \"mutable\",\n \"name\": \"receiver\",\n \"nameLocation\": \"4549:8:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64843,\n \"src\": \"4541:16:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 64801,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4541:7:197\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 64804,\n \"mutability\": \"mutable\",\n \"name\": \"adaptorData\",\n \"nameLocation\": \"4572:11:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64843,\n \"src\": \"4559:24:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 64803,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4559:5:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 64806,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64843,\n \"src\": \"4585:12:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 64805,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4585:5:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"4524:74:197\"\n },\n \"returnParameters\": {\n \"id\": 64809,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"4615:0:197\"\n },\n \"scope\": 65117,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 64879,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"5215:427:197\",\n \"nodes\": [],\n \"body\": {\n \"id\": 64878,\n \"nodeType\": \"Block\",\n \"src\": \"5320:322:197\",\n \"nodes\": [],\n \"statements\": [\n {\n \"condition\": {\n \"arguments\": [\n {\n \"expression\": {\n \"id\": 64855,\n \"name\": \"msg\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -15,\n \"src\": \"5461:3:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_message\",\n \"typeString\": \"msg\"\n }\n },\n \"id\": 64856,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"5465:6:197\",\n \"memberName\": \"sender\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"5461:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 64854,\n \"name\": \"isBorrowingAny\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65116,\n \"src\": \"5446:14:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_view$_t_address_$returns$_t_bool_$\",\n \"typeString\": \"function (address) view returns (bool)\"\n }\n },\n \"id\": 64857,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5446:26:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"falseBody\": {\n \"id\": 64876,\n \"nodeType\": \"Block\",\n \"src\": \"5497:139:197\",\n \"statements\": [\n {\n \"assignments\": [\n 64861\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 64861,\n \"mutability\": \"mutable\",\n \"name\": \"aToken\",\n \"nameLocation\": \"5519:6:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64876,\n \"src\": \"5511:14:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 64860,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5511:7:197\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 64869,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 64864,\n \"name\": \"adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64846,\n \"src\": \"5539:11:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 64866,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"5553:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 64865,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5553:7:197\",\n \"typeDescriptions\": {}\n }\n }\n ],\n \"id\": 64867,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"5552:9:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n ],\n \"expression\": {\n \"id\": 64862,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"5528:3:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 64863,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"5532:6:197\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"5528:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 64868,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5528:34:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address_payable\",\n \"typeString\": \"address payable\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"5511:51:197\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 64871,\n \"name\": \"aToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64861,\n \"src\": \"5606:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"expression\": {\n \"id\": 64872,\n \"name\": \"msg\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -15,\n \"src\": \"5614:3:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_message\",\n \"typeString\": \"msg\"\n }\n },\n \"id\": 64873,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"5618:6:197\",\n \"memberName\": \"sender\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"5614:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 64870,\n \"name\": \"_balanceOfInUnderlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65094,\n \"src\": \"5583:22:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address,address) view returns (uint256)\"\n }\n },\n \"id\": 64874,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5583:42:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"functionReturnParameters\": 64853,\n \"id\": 64875,\n \"nodeType\": \"Return\",\n \"src\": \"5576:49:197\"\n }\n ]\n },\n \"id\": 64877,\n \"nodeType\": \"IfStatement\",\n \"src\": \"5442:194:197\",\n \"trueBody\": {\n \"expression\": {\n \"hexValue\": \"30\",\n \"id\": 64858,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"5481:1:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n },\n \"value\": \"0\"\n },\n \"functionReturnParameters\": 64853,\n \"id\": 64859,\n \"nodeType\": \"Return\",\n \"src\": \"5474:8:197\"\n }\n }\n ]\n },\n \"baseFunctions\": [\n 61484\n ],\n \"documentation\": {\n \"id\": 64844,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"5010:200:197\",\n \"text\": \" @notice Checks if Cellar has open borrows, and if so returns zero.\\n Otherwise returns balanceOf in underlying.\\n @param adaptorData the abi encoded aToken address\"\n },\n \"functionSelector\": \"fa50e5d2\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"withdrawableFrom\",\n \"nameLocation\": \"5224:16:197\",\n \"overrides\": {\n \"id\": 64850,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"5293:8:197\"\n },\n \"parameters\": {\n \"id\": 64849,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 64846,\n \"mutability\": \"mutable\",\n \"name\": \"adaptorData\",\n \"nameLocation\": \"5254:11:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64879,\n \"src\": \"5241:24:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 64845,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5241:5:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 64848,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64879,\n \"src\": \"5267:12:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 64847,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5267:5:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"5240:40:197\"\n },\n \"returnParameters\": {\n \"id\": 64853,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 64852,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64879,\n \"src\": \"5311:7:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 64851,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5311:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"5310:9:197\"\n },\n \"scope\": 65117,\n \"stateMutability\": \"view\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 64905,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"5732:211:197\",\n \"nodes\": [],\n \"body\": {\n \"id\": 64904,\n \"nodeType\": \"Block\",\n \"src\": \"5816:127:197\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 64889\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 64889,\n \"mutability\": \"mutable\",\n \"name\": \"aToken\",\n \"nameLocation\": \"5834:6:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64904,\n \"src\": \"5826:14:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 64888,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5826:7:197\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 64897,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 64892,\n \"name\": \"adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64882,\n \"src\": \"5854:11:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 64894,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"5868:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 64893,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5868:7:197\",\n \"typeDescriptions\": {}\n }\n }\n ],\n \"id\": 64895,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"5867:9:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n ],\n \"expression\": {\n \"id\": 64890,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"5843:3:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 64891,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"5847:6:197\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"5843:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 64896,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5843:34:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address_payable\",\n \"typeString\": \"address payable\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"5826:51:197\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 64899,\n \"name\": \"aToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64889,\n \"src\": \"5917:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"expression\": {\n \"id\": 64900,\n \"name\": \"msg\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -15,\n \"src\": \"5925:3:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_message\",\n \"typeString\": \"msg\"\n }\n },\n \"id\": 64901,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"5929:6:197\",\n \"memberName\": \"sender\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"5925:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 64898,\n \"name\": \"_balanceOfInUnderlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65094,\n \"src\": \"5894:22:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address,address) view returns (uint256)\"\n }\n },\n \"id\": 64902,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5894:42:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"functionReturnParameters\": 64887,\n \"id\": 64903,\n \"nodeType\": \"Return\",\n \"src\": \"5887:49:197\"\n }\n ]\n },\n \"baseFunctions\": [\n 61474\n ],\n \"documentation\": {\n \"id\": 64880,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"5648:79:197\",\n \"text\": \" @notice Returns the cellars balance of the positions aToken.\"\n },\n \"functionSelector\": \"78415365\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"balanceOf\",\n \"nameLocation\": \"5741:9:197\",\n \"overrides\": {\n \"id\": 64884,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"5789:8:197\"\n },\n \"parameters\": {\n \"id\": 64883,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 64882,\n \"mutability\": \"mutable\",\n \"name\": \"adaptorData\",\n \"nameLocation\": \"5764:11:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64905,\n \"src\": \"5751:24:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 64881,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5751:5:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"5750:26:197\"\n },\n \"returnParameters\": {\n \"id\": 64887,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 64886,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64905,\n \"src\": \"5807:7:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 64885,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5807:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"5806:9:197\"\n },\n \"scope\": 65117,\n \"stateMutability\": \"view\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 64932,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"6027:209:197\",\n \"nodes\": [],\n \"body\": {\n \"id\": 64931,\n \"nodeType\": \"Block\",\n \"src\": \"6107:129:197\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 64917\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 64917,\n \"mutability\": \"mutable\",\n \"name\": \"token\",\n \"nameLocation\": \"6128:5:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64931,\n \"src\": \"6117:16:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n },\n \"typeName\": {\n \"id\": 64916,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 64915,\n \"name\": \"IAaveToken\",\n \"nameLocations\": [\n \"6117:10:197\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 49523,\n \"src\": \"6117:10:197\"\n },\n \"referencedDeclaration\": 49523,\n \"src\": \"6117:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 64924,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 64920,\n \"name\": \"adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64908,\n \"src\": \"6147:11:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 64921,\n \"name\": \"IAaveToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 49523,\n \"src\": \"6161:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IAaveToken_$49523_$\",\n \"typeString\": \"type(contract IAaveToken)\"\n }\n }\n ],\n \"id\": 64922,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"6160:12:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IAaveToken_$49523_$\",\n \"typeString\": \"type(contract IAaveToken)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_contract$_IAaveToken_$49523_$\",\n \"typeString\": \"type(contract IAaveToken)\"\n }\n ],\n \"expression\": {\n \"id\": 64918,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"6136:3:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 64919,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"6140:6:197\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"6136:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 64923,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6136:37:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"6117:56:197\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"expression\": {\n \"id\": 64926,\n \"name\": \"token\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64917,\n \"src\": \"6196:5:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n },\n \"id\": 64927,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"6202:24:197\",\n \"memberName\": \"UNDERLYING_ASSET_ADDRESS\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 49522,\n \"src\": \"6196:30:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$__$returns$_t_address_$\",\n \"typeString\": \"function () view external returns (address)\"\n }\n },\n \"id\": 64928,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6196:32:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 64925,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 45747,\n \"src\": \"6190:5:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n },\n \"id\": 64929,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6190:39:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"functionReturnParameters\": 64914,\n \"id\": 64930,\n \"nodeType\": \"Return\",\n \"src\": \"6183:46:197\"\n }\n ]\n },\n \"baseFunctions\": [\n 61493\n ],\n \"documentation\": {\n \"id\": 64906,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"5949:73:197\",\n \"text\": \" @notice Returns the positions aToken underlying asset.\"\n },\n \"functionSelector\": \"e170a9bf\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"assetOf\",\n \"nameLocation\": \"6036:7:197\",\n \"overrides\": {\n \"id\": 64910,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"6082:8:197\"\n },\n \"parameters\": {\n \"id\": 64909,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 64908,\n \"mutability\": \"mutable\",\n \"name\": \"adaptorData\",\n \"nameLocation\": \"6057:11:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64932,\n \"src\": \"6044:24:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 64907,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6044:5:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"6043:26:197\"\n },\n \"returnParameters\": {\n \"id\": 64914,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 64913,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64932,\n \"src\": \"6100:5:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 64912,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 64911,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"6100:5:197\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"6100:5:197\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"6100:5:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"6099:7:197\"\n },\n \"scope\": 65117,\n \"stateMutability\": \"view\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 64942,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"6320:83:197\",\n \"nodes\": [],\n \"body\": {\n \"id\": 64941,\n \"nodeType\": \"Block\",\n \"src\": \"6374:29:197\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"hexValue\": \"66616c7365\",\n \"id\": 64939,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"bool\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"6391:5:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"value\": \"false\"\n },\n \"functionReturnParameters\": 64938,\n \"id\": 64940,\n \"nodeType\": \"Return\",\n \"src\": \"6384:12:197\"\n }\n ]\n },\n \"baseFunctions\": [\n 61527\n ],\n \"documentation\": {\n \"id\": 64933,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"6242:73:197\",\n \"text\": \" @notice This adaptor returns collateral, and not debt.\"\n },\n \"functionSelector\": \"89353a09\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"isDebt\",\n \"nameLocation\": \"6329:6:197\",\n \"overrides\": {\n \"id\": 64935,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"6350:8:197\"\n },\n \"parameters\": {\n \"id\": 64934,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"6335:2:197\"\n },\n \"returnParameters\": {\n \"id\": 64938,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 64937,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64942,\n \"src\": \"6368:4:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"typeName\": {\n \"id\": 64936,\n \"name\": \"bool\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6368:4:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"6367:6:197\"\n },\n \"scope\": 65117,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 64996,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"6801:458:197\",\n \"nodes\": [],\n \"body\": {\n \"id\": 64995,\n \"nodeType\": \"Block\",\n \"src\": \"6883:376:197\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 64953\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 64953,\n \"mutability\": \"mutable\",\n \"name\": \"underlying\",\n \"nameLocation\": \"6899:10:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64995,\n \"src\": \"6893:16:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 64952,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 64951,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"6893:5:197\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"6893:5:197\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"6893:5:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 64959,\n \"initialValue\": {\n \"arguments\": [\n {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"expression\": {\n \"id\": 64955,\n \"name\": \"aToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64946,\n \"src\": \"6918:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n },\n \"id\": 64956,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"6925:24:197\",\n \"memberName\": \"UNDERLYING_ASSET_ADDRESS\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 49522,\n \"src\": \"6918:31:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$__$returns$_t_address_$\",\n \"typeString\": \"function () view external returns (address)\"\n }\n },\n \"id\": 64957,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6918:33:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 64954,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 45747,\n \"src\": \"6912:5:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n },\n \"id\": 64958,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6912:40:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"6893:59:197\"\n },\n {\n \"expression\": {\n \"id\": 64965,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 64960,\n \"name\": \"amountToDeposit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64948,\n \"src\": \"6962:15:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"id\": 64962,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64953,\n \"src\": \"6994:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n {\n \"id\": 64963,\n \"name\": \"amountToDeposit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64948,\n \"src\": \"7006:15:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"id\": 64961,\n \"name\": \"_maxAvailable\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61557,\n \"src\": \"6980:13:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_view$_t_contract$_ERC20_$45747_$_t_uint256_$returns$_t_uint256_$\",\n \"typeString\": \"function (contract ERC20,uint256) view returns (uint256)\"\n }\n },\n \"id\": 64964,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6980:42:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"6962:60:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 64966,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"6962:60:197\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 64972,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64681,\n \"src\": \"7063:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n ],\n \"id\": 64971,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"7055:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 64970,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"7055:7:197\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 64973,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7055:15:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 64974,\n \"name\": \"amountToDeposit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64948,\n \"src\": \"7072:15:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 64967,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64953,\n \"src\": \"7032:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 64969,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"7043:11:197\",\n \"memberName\": \"safeApprove\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 46497,\n \"src\": \"7032:22:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"function (contract ERC20,address,uint256)\"\n }\n },\n \"id\": 64975,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7032:56:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 64976,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"7032:56:197\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 64982,\n \"name\": \"aToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64946,\n \"src\": \"7120:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n ],\n \"id\": 64981,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"7112:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 64980,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"7112:7:197\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 64983,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7112:15:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 64984,\n \"name\": \"amountToDeposit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64948,\n \"src\": \"7129:15:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 64977,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64681,\n \"src\": \"7098:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n },\n \"id\": 64979,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"7105:6:197\",\n \"memberName\": \"supply\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53372,\n \"src\": \"7098:13:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$\",\n \"typeString\": \"function (address,uint256) external\"\n }\n },\n \"id\": 64985,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7098:47:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 64986,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"7098:47:197\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 64988,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64953,\n \"src\": \"7224:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 64991,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64681,\n \"src\": \"7244:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n ],\n \"id\": 64990,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"7236:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 64989,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"7236:7:197\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 64992,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7236:15:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 64987,\n \"name\": \"_revokeExternalApproval\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61585,\n \"src\": \"7200:23:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$returns$__$\",\n \"typeString\": \"function (contract ERC20,address)\"\n }\n },\n \"id\": 64993,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7200:52:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 64994,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"7200:52:197\"\n }\n ]\n },\n \"documentation\": {\n \"id\": 64943,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"6525:271:197\",\n \"text\": \" @notice Allows strategists to lend assets on Morpho.\\n @dev Uses `_maxAvailable` helper function, see BaseAdaptor.sol\\n @param aToken the aToken to lend on Morpho\\n @param amountToDeposit the amount of `tokenToDeposit` to lend on Morpho.\"\n },\n \"functionSelector\": \"5528481b\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"depositToAaveV2Morpho\",\n \"nameLocation\": \"6810:21:197\",\n \"parameters\": {\n \"id\": 64949,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 64946,\n \"mutability\": \"mutable\",\n \"name\": \"aToken\",\n \"nameLocation\": \"6843:6:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64996,\n \"src\": \"6832:17:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n },\n \"typeName\": {\n \"id\": 64945,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 64944,\n \"name\": \"IAaveToken\",\n \"nameLocations\": [\n \"6832:10:197\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 49523,\n \"src\": \"6832:10:197\"\n },\n \"referencedDeclaration\": 49523,\n \"src\": \"6832:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 64948,\n \"mutability\": \"mutable\",\n \"name\": \"amountToDeposit\",\n \"nameLocation\": \"6859:15:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 64996,\n \"src\": \"6851:23:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 64947,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6851:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"6831:44:197\"\n },\n \"returnParameters\": {\n \"id\": 64950,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"6883:0:197\"\n },\n \"scope\": 65117,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65037,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"7491:413:197\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65036,\n \"nodeType\": \"Block\",\n \"src\": \"7577:327:197\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 65010,\n \"name\": \"aToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65000,\n \"src\": \"7611:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n ],\n \"id\": 65009,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"7603:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65008,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"7603:7:197\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65011,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7603:15:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 65012,\n \"name\": \"amountToWithdraw\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65002,\n \"src\": \"7620:16:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 65015,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"7646:4:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV2ATokenAdaptor_$65117\",\n \"typeString\": \"contract MorphoAaveV2ATokenAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV2ATokenAdaptor_$65117\",\n \"typeString\": \"contract MorphoAaveV2ATokenAdaptor\"\n }\n ],\n \"id\": 65014,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"7638:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65013,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"7638:7:197\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65016,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7638:13:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 65005,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64681,\n \"src\": \"7587:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n },\n \"id\": 65007,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"7594:8:197\",\n \"memberName\": \"withdraw\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53395,\n \"src\": \"7587:15:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$\",\n \"typeString\": \"function (address,uint256,address) external\"\n }\n },\n \"id\": 65017,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7587:65:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 65018,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"7587:65:197\"\n },\n {\n \"assignments\": [\n 65020\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65020,\n \"mutability\": \"mutable\",\n \"name\": \"healthFactor\",\n \"nameLocation\": \"7733:12:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65036,\n \"src\": \"7725:20:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65019,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"7725:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65028,\n \"initialValue\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 65025,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"7787:4:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV2ATokenAdaptor_$65117\",\n \"typeString\": \"contract MorphoAaveV2ATokenAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV2ATokenAdaptor_$65117\",\n \"typeString\": \"contract MorphoAaveV2ATokenAdaptor\"\n }\n ],\n \"id\": 65024,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"7779:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65023,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"7779:7:197\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65026,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7779:13:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 65021,\n \"name\": \"morphoLens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64685,\n \"src\": \"7748:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoLensV2_$53305\",\n \"typeString\": \"contract IMorphoLensV2\"\n }\n },\n \"id\": 65022,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"7759:19:197\",\n \"memberName\": \"getUserHealthFactor\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53304,\n \"src\": \"7748:30:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address) view external returns (uint256)\"\n }\n },\n \"id\": 65027,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7748:45:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"7725:68:197\"\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 65031,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 65029,\n \"name\": \"healthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65020,\n \"src\": \"7807:12:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"<\",\n \"rightExpression\": {\n \"id\": 65030,\n \"name\": \"minimumHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64688,\n \"src\": \"7822:19:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"7807:34:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 65035,\n \"nodeType\": \"IfStatement\",\n \"src\": \"7803:94:197\",\n \"trueBody\": {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 65032,\n \"name\": \"MorphoAaveV2ATokenAdaptor__HealthFactorTooLow\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64677,\n \"src\": \"7850:45:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 65033,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7850:47:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 65034,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"7843:54:197\"\n }\n }\n ]\n },\n \"documentation\": {\n \"id\": 64997,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"7265:221:197\",\n \"text\": \" @notice Allows strategists to withdraw assets from Morpho.\\n @param aToken the atoken to withdraw from Morpho.\\n @param amountToWithdraw the amount of `tokenToWithdraw` to withdraw from Morpho\"\n },\n \"functionSelector\": \"872de812\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"withdrawFromAaveV2Morpho\",\n \"nameLocation\": \"7500:24:197\",\n \"parameters\": {\n \"id\": 65003,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65000,\n \"mutability\": \"mutable\",\n \"name\": \"aToken\",\n \"nameLocation\": \"7536:6:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65037,\n \"src\": \"7525:17:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n },\n \"typeName\": {\n \"id\": 64999,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 64998,\n \"name\": \"IAaveToken\",\n \"nameLocations\": [\n \"7525:10:197\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 49523,\n \"src\": \"7525:10:197\"\n },\n \"referencedDeclaration\": 49523,\n \"src\": \"7525:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65002,\n \"mutability\": \"mutable\",\n \"name\": \"amountToWithdraw\",\n \"nameLocation\": \"7552:16:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65037,\n \"src\": \"7544:24:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65001,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"7544:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"7524:45:197\"\n },\n \"returnParameters\": {\n \"id\": 65004,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"7577:0:197\"\n },\n \"scope\": 65117,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65094,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"8135:557:197\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65093,\n \"nodeType\": \"Block\",\n \"src\": \"8232:460:197\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 65048,\n 65050\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65048,\n \"mutability\": \"mutable\",\n \"name\": \"inP2P\",\n \"nameLocation\": \"8251:5:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65093,\n \"src\": \"8243:13:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65047,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"8243:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65050,\n \"mutability\": \"mutable\",\n \"name\": \"onPool\",\n \"nameLocation\": \"8266:6:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65093,\n \"src\": \"8258:14:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65049,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"8258:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65056,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 65053,\n \"name\": \"poolToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65040,\n \"src\": \"8301:9:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 65054,\n \"name\": \"user\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65042,\n \"src\": \"8312:4:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 65051,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64681,\n \"src\": \"8276:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n },\n \"id\": 65052,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"8283:17:197\",\n \"memberName\": \"supplyBalanceInOf\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53343,\n \"src\": \"8276:24:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$\",\n \"typeString\": \"function (address,address) view external returns (uint256,uint256)\"\n }\n },\n \"id\": 65055,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"8276:41:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$_t_uint256_$_t_uint256_$\",\n \"typeString\": \"tuple(uint256,uint256)\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"8242:75:197\"\n },\n {\n \"assignments\": [\n 65058\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65058,\n \"mutability\": \"mutable\",\n \"name\": \"balanceInUnderlying\",\n \"nameLocation\": \"8336:19:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65093,\n \"src\": \"8328:27:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65057,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"8328:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65059,\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"8328:27:197\"\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 65062,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 65060,\n \"name\": \"inP2P\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65048,\n \"src\": \"8441:5:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \">\",\n \"rightExpression\": {\n \"hexValue\": \"30\",\n \"id\": 65061,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"8449:1:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n },\n \"value\": \"0\"\n },\n \"src\": \"8441:9:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 65074,\n \"nodeType\": \"IfStatement\",\n \"src\": \"8437:93:197\",\n \"trueBody\": {\n \"expression\": {\n \"id\": 65072,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 65063,\n \"name\": \"balanceInUnderlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65058,\n \"src\": \"8452:19:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 65068,\n \"name\": \"poolToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65040,\n \"src\": \"8513:9:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 65066,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64681,\n \"src\": \"8491:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n },\n \"id\": 65067,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"8498:14:197\",\n \"memberName\": \"p2pSupplyIndex\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53358,\n \"src\": \"8491:21:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address) view external returns (uint256)\"\n }\n },\n \"id\": 65069,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"8491:32:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n {\n \"hexValue\": \"31653237\",\n \"id\": 65070,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"8525:4:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_1000000000000000000000000000_by_1\",\n \"typeString\": \"int_const 1000000000000000000000000000\"\n },\n \"value\": \"1e27\"\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n {\n \"typeIdentifier\": \"t_rational_1000000000000000000000000000_by_1\",\n \"typeString\": \"int_const 1000000000000000000000000000\"\n }\n ],\n \"expression\": {\n \"id\": 65064,\n \"name\": \"inP2P\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65048,\n \"src\": \"8474:5:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 65065,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"8480:10:197\",\n \"memberName\": \"mulDivDown\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 74797,\n \"src\": \"8474:16:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$\",\n \"typeString\": \"function (uint256,uint256,uint256) pure returns (uint256)\"\n }\n },\n \"id\": 65071,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"8474:56:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"8452:78:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 65073,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"8452:78:197\"\n }\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 65077,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 65075,\n \"name\": \"onPool\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65050,\n \"src\": \"8544:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \">\",\n \"rightExpression\": {\n \"hexValue\": \"30\",\n \"id\": 65076,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"8553:1:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n },\n \"value\": \"0\"\n },\n \"src\": \"8544:10:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 65090,\n \"nodeType\": \"IfStatement\",\n \"src\": \"8540:109:197\",\n \"trueBody\": {\n \"expression\": {\n \"id\": 65088,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 65078,\n \"name\": \"balanceInUnderlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65058,\n \"src\": \"8556:19:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"+=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 65083,\n \"name\": \"poolToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65040,\n \"src\": \"8616:9:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 65081,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64681,\n \"src\": \"8597:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n },\n \"id\": 65082,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"8604:11:197\",\n \"memberName\": \"poolIndexes\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53351,\n \"src\": \"8597:18:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$returns$_t_struct$_PoolIndexes_$53314_memory_ptr_$\",\n \"typeString\": \"function (address) view external returns (struct IMorphoV2.PoolIndexes memory)\"\n }\n },\n \"id\": 65084,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"8597:29:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_PoolIndexes_$53314_memory_ptr\",\n \"typeString\": \"struct IMorphoV2.PoolIndexes memory\"\n }\n },\n \"id\": 65085,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"8627:15:197\",\n \"memberName\": \"poolSupplyIndex\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53311,\n \"src\": \"8597:45:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint112\",\n \"typeString\": \"uint112\"\n }\n },\n {\n \"hexValue\": \"31653237\",\n \"id\": 65086,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"8644:4:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_1000000000000000000000000000_by_1\",\n \"typeString\": \"int_const 1000000000000000000000000000\"\n },\n \"value\": \"1e27\"\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint112\",\n \"typeString\": \"uint112\"\n },\n {\n \"typeIdentifier\": \"t_rational_1000000000000000000000000000_by_1\",\n \"typeString\": \"int_const 1000000000000000000000000000\"\n }\n ],\n \"expression\": {\n \"id\": 65079,\n \"name\": \"onPool\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65050,\n \"src\": \"8579:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 65080,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"8586:10:197\",\n \"memberName\": \"mulDivDown\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 74797,\n \"src\": \"8579:17:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$\",\n \"typeString\": \"function (uint256,uint256,uint256) pure returns (uint256)\"\n }\n },\n \"id\": 65087,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"8579:70:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"8556:93:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 65089,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"8556:93:197\"\n }\n },\n {\n \"expression\": {\n \"id\": 65091,\n \"name\": \"balanceInUnderlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65058,\n \"src\": \"8666:19:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"functionReturnParameters\": 65046,\n \"id\": 65092,\n \"nodeType\": \"Return\",\n \"src\": \"8659:26:197\"\n }\n ]\n },\n \"documentation\": {\n \"id\": 65038,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"7910:220:197\",\n \"text\": \" @notice Returns the balance in underlying of collateral.\\n @param poolToken the Aave V2 a Token user has supplied as collateral\\n @param user the address of the user to query their balance of\"\n },\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"_balanceOfInUnderlying\",\n \"nameLocation\": \"8144:22:197\",\n \"parameters\": {\n \"id\": 65043,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65040,\n \"mutability\": \"mutable\",\n \"name\": \"poolToken\",\n \"nameLocation\": \"8175:9:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65094,\n \"src\": \"8167:17:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 65039,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"8167:7:197\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65042,\n \"mutability\": \"mutable\",\n \"name\": \"user\",\n \"nameLocation\": \"8194:4:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65094,\n \"src\": \"8186:12:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 65041,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"8186:7:197\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"8166:33:197\"\n },\n \"returnParameters\": {\n \"id\": 65046,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65045,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65094,\n \"src\": \"8223:7:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65044,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"8223:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"8222:9:197\"\n },\n \"scope\": 65117,\n \"stateMutability\": \"view\",\n \"virtual\": false,\n \"visibility\": \"internal\"\n },\n {\n \"id\": 65116,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"8930:178:197\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65115,\n \"nodeType\": \"Block\",\n \"src\": \"8995:113:197\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 65103\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65103,\n \"mutability\": \"mutable\",\n \"name\": \"userMarkets\",\n \"nameLocation\": \"9013:11:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65115,\n \"src\": \"9005:19:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n \"typeName\": {\n \"id\": 65102,\n \"name\": \"bytes32\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"9005:7:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65108,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 65106,\n \"name\": \"user\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65097,\n \"src\": \"9046:4:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 65104,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64681,\n \"src\": \"9027:6:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n },\n \"id\": 65105,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"9034:11:197\",\n \"memberName\": \"userMarkets\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53321,\n \"src\": \"9027:18:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$returns$_t_bytes32_$\",\n \"typeString\": \"function (address) view external returns (bytes32)\"\n }\n },\n \"id\": 65107,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"9027:24:197\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"9005:46:197\"\n },\n {\n \"expression\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n \"id\": 65113,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n \"id\": 65111,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 65109,\n \"name\": \"userMarkets\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65103,\n \"src\": \"9068:11:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"&\",\n \"rightExpression\": {\n \"id\": 65110,\n \"name\": \"BORROWING_MASK\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 64674,\n \"src\": \"9082:14:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"src\": \"9068:28:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"!=\",\n \"rightExpression\": {\n \"hexValue\": \"30\",\n \"id\": 65112,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"9100:1:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n },\n \"value\": \"0\"\n },\n \"src\": \"9068:33:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"functionReturnParameters\": 65101,\n \"id\": 65114,\n \"nodeType\": \"Return\",\n \"src\": \"9061:40:197\"\n }\n ]\n },\n \"documentation\": {\n \"id\": 65095,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"8698:227:197\",\n \"text\": \" @dev Returns if a user has been borrowing from any market.\\n @param user The address to check if it is borrowing or not.\\n @return True if the user has been borrowing on any market, false otherwise.\"\n },\n \"functionSelector\": \"2f93417c\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"isBorrowingAny\",\n \"nameLocation\": \"8939:14:197\",\n \"parameters\": {\n \"id\": 65098,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65097,\n \"mutability\": \"mutable\",\n \"name\": \"user\",\n \"nameLocation\": \"8962:4:197\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65116,\n \"src\": \"8954:12:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 65096,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"8954:7:197\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"8953:14:197\"\n },\n \"returnParameters\": {\n \"id\": 65101,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65100,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65116,\n \"src\": \"8989:4:197\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"typeName\": {\n \"id\": 65099,\n \"name\": \"bool\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"8989:4:197\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"8988:6:197\"\n },\n \"scope\": 65117,\n \"stateMutability\": \"view\",\n \"virtual\": false,\n \"visibility\": \"public\"\n }\n ],\n \"abstract\": false,\n \"baseContracts\": [\n {\n \"baseName\": {\n \"id\": 64660,\n \"name\": \"BaseAdaptor\",\n \"nameLocations\": [\n \"659:11:197\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 61644,\n \"src\": \"659:11:197\"\n },\n \"id\": 64661,\n \"nodeType\": \"InheritanceSpecifier\",\n \"src\": \"659:11:197\"\n },\n {\n \"baseName\": {\n \"id\": 64662,\n \"name\": \"MorphoRewardHandler\",\n \"nameLocations\": [\n \"672:19:197\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 66696,\n \"src\": \"672:19:197\"\n },\n \"id\": 64663,\n \"nodeType\": \"InheritanceSpecifier\",\n \"src\": \"672:19:197\"\n }\n ],\n \"canonicalName\": \"MorphoAaveV2ATokenAdaptor\",\n \"contractDependencies\": [],\n \"contractKind\": \"contract\",\n \"documentation\": {\n \"id\": 64659,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"479:141:197\",\n \"text\": \" @title Morpho Aave V2 aToken Adaptor\\n @notice Allows Cellars to interact with Morpho Aave V2 positions.\\n @author crispymangoes\"\n },\n \"fullyImplemented\": true,\n \"linearizedBaseContracts\": [\n 65117,\n 66696,\n 61644\n ],\n \"name\": \"MorphoAaveV2ATokenAdaptor\",\n \"nameLocation\": \"630:25:197\",\n \"scope\": 65118,\n \"usedErrors\": [\n 61379,\n 61382,\n 61385,\n 61388,\n 61393,\n 61396,\n 64677\n ]\n }\n ],\n \"license\": \"Apache-2.0\"\n },\n \"id\": 197\n}") . expect ("invalid abi") + }); + #[derive(Clone)] + pub struct MorphoAaveV2ATokenAdaptorV1(ethers::contract::Contract); + impl std::ops::Deref for MorphoAaveV2ATokenAdaptorV1 { + type Target = ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl std::fmt::Debug for MorphoAaveV2ATokenAdaptorV1 { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + f.debug_tuple(stringify!(MorphoAaveV2ATokenAdaptorV1)) + .field(&self.address()) + .finish() + } + } + impl<'a, M: ethers::providers::Middleware> MorphoAaveV2ATokenAdaptorV1 { + #[doc = r" Creates a new contract instance with the specified `ethers`"] + #[doc = r" client at the given `Address`. The contract derefs to a `ethers::Contract`"] + #[doc = r" object"] + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + let contract = ethers::contract::Contract::new( + address.into(), + MORPHOAAVEV2ATOKENADAPTORV1_ABI.clone(), + client, + ); + Self(contract) + } + #[doc = "Calls the contract's `BORROWING_MASK` (0xb505e7a2) function"] + pub fn borrowing_mask(&self) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([181, 5, 231, 162], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `assetOf` (0xe170a9bf) function"] + pub fn asset_of( + &self, + adaptor_data: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([225, 112, 169, 191], adaptor_data) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `assetsUsed` (0xaeffddde) function"] + pub fn assets_used( + &self, + adaptor_data: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec, + > { + self.0 + .method_hash([174, 255, 221, 222], adaptor_data) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `balanceOf` (0x78415365) function"] + pub fn balance_of( + &self, + adaptor_data: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([120, 65, 83, 101], adaptor_data) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `claim` (0x2f52ebb7) function"] + pub fn claim( + &self, + claimable: ethers::core::types::U256, + proof: ::std::vec::Vec<[u8; 32]>, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([47, 82, 235, 183], (claimable, proof)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `deposit` (0x69445c31) function"] + pub fn deposit( + &self, + assets: ethers::core::types::U256, + adaptor_data: ethers::core::types::Bytes, + p2: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([105, 68, 92, 49], (assets, adaptor_data, p2)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `depositToAaveV2Morpho` (0x5528481b) function"] + pub fn deposit_to_aave_v2_morpho( + &self, + a_token: ethers::core::types::Address, + amount_to_deposit: ethers::core::types::U256, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([85, 40, 72, 27], (a_token, amount_to_deposit)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `identifier` (0x7998a1c4) function"] + pub fn identifier(&self) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([121, 152, 161, 196], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `isBorrowingAny` (0x2f93417c) function"] + pub fn is_borrowing_any( + &self, + user: ethers::core::types::Address, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([47, 147, 65, 124], user) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `isDebt` (0x89353a09) function"] + pub fn is_debt(&self) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([137, 53, 58, 9], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `minimumHealthFactor` (0x1caff8b1) function"] + pub fn minimum_health_factor( + &self, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([28, 175, 248, 177], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `morpho` (0xd8fbc833) function"] + pub fn morpho( + &self, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([216, 251, 200, 51], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `morphoLens` (0x425734d3) function"] + pub fn morpho_lens( + &self, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([66, 87, 52, 211], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `morphoRewardsDistributor` (0x5b5d4d78) function"] + pub fn morpho_rewards_distributor( + &self, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([91, 93, 77, 120], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `revokeApproval` (0xd3bfe76a) function"] + pub fn revoke_approval( + &self, + asset: ethers::core::types::Address, + spender: ethers::core::types::Address, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([211, 191, 231, 106], (asset, spender)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `slippage` (0x3e032a3b) function"] + pub fn slippage(&self) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([62, 3, 42, 59], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `withdraw` (0xc9111bd7) function"] + pub fn withdraw( + &self, + assets: ethers::core::types::U256, + receiver: ethers::core::types::Address, + adaptor_data: ethers::core::types::Bytes, + p3: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([201, 17, 27, 215], (assets, receiver, adaptor_data, p3)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `withdrawFromAaveV2Morpho` (0x872de812) function"] + pub fn withdraw_from_aave_v2_morpho( + &self, + a_token: ethers::core::types::Address, + amount_to_withdraw: ethers::core::types::U256, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([135, 45, 232, 18], (a_token, amount_to_withdraw)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `withdrawableFrom` (0xfa50e5d2) function"] + pub fn withdrawable_from( + &self, + adaptor_data: ethers::core::types::Bytes, + p1: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([250, 80, 229, 210], (adaptor_data, p1)) + .expect("method not found (this should never happen)") + } + } + #[doc = "Container type for all input parameters for the `BORROWING_MASK`function with signature `BORROWING_MASK()` and selector `[181, 5, 231, 162]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "BORROWING_MASK", abi = "BORROWING_MASK()")] + pub struct BorrowingMaskCall; + #[doc = "Container type for all input parameters for the `assetOf`function with signature `assetOf(bytes)` and selector `[225, 112, 169, 191]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "assetOf", abi = "assetOf(bytes)")] + pub struct AssetOfCall { + pub adaptor_data: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `assetsUsed`function with signature `assetsUsed(bytes)` and selector `[174, 255, 221, 222]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "assetsUsed", abi = "assetsUsed(bytes)")] + pub struct AssetsUsedCall { + pub adaptor_data: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `balanceOf`function with signature `balanceOf(bytes)` and selector `[120, 65, 83, 101]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "balanceOf", abi = "balanceOf(bytes)")] + pub struct BalanceOfCall { + pub adaptor_data: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `claim`function with signature `claim(uint256,bytes32[])` and selector `[47, 82, 235, 183]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "claim", abi = "claim(uint256,bytes32[])")] + pub struct ClaimCall { + pub claimable: ethers::core::types::U256, + pub proof: ::std::vec::Vec<[u8; 32]>, + } + #[doc = "Container type for all input parameters for the `deposit`function with signature `deposit(uint256,bytes,bytes)` and selector `[105, 68, 92, 49]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "deposit", abi = "deposit(uint256,bytes,bytes)")] + pub struct DepositCall { + pub assets: ethers::core::types::U256, + pub adaptor_data: ethers::core::types::Bytes, + pub p2: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `depositToAaveV2Morpho`function with signature `depositToAaveV2Morpho(address,uint256)` and selector `[85, 40, 72, 27]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall( + name = "depositToAaveV2Morpho", + abi = "depositToAaveV2Morpho(address,uint256)" + )] + pub struct DepositToAaveV2MorphoCall { + pub a_token: ethers::core::types::Address, + pub amount_to_deposit: ethers::core::types::U256, + } + #[doc = "Container type for all input parameters for the `identifier`function with signature `identifier()` and selector `[121, 152, 161, 196]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "identifier", abi = "identifier()")] + pub struct IdentifierCall; + #[doc = "Container type for all input parameters for the `isBorrowingAny`function with signature `isBorrowingAny(address)` and selector `[47, 147, 65, 124]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "isBorrowingAny", abi = "isBorrowingAny(address)")] + pub struct IsBorrowingAnyCall { + pub user: ethers::core::types::Address, + } + #[doc = "Container type for all input parameters for the `isDebt`function with signature `isDebt()` and selector `[137, 53, 58, 9]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "isDebt", abi = "isDebt()")] + pub struct IsDebtCall; + #[doc = "Container type for all input parameters for the `minimumHealthFactor`function with signature `minimumHealthFactor()` and selector `[28, 175, 248, 177]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "minimumHealthFactor", abi = "minimumHealthFactor()")] + pub struct MinimumHealthFactorCall; + #[doc = "Container type for all input parameters for the `morpho`function with signature `morpho()` and selector `[216, 251, 200, 51]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "morpho", abi = "morpho()")] + pub struct MorphoCall; + #[doc = "Container type for all input parameters for the `morphoLens`function with signature `morphoLens()` and selector `[66, 87, 52, 211]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "morphoLens", abi = "morphoLens()")] + pub struct MorphoLensCall; + #[doc = "Container type for all input parameters for the `morphoRewardsDistributor`function with signature `morphoRewardsDistributor()` and selector `[91, 93, 77, 120]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "morphoRewardsDistributor", abi = "morphoRewardsDistributor()")] + pub struct MorphoRewardsDistributorCall; + #[doc = "Container type for all input parameters for the `revokeApproval`function with signature `revokeApproval(address,address)` and selector `[211, 191, 231, 106]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "revokeApproval", abi = "revokeApproval(address,address)")] + pub struct RevokeApprovalCall { + pub asset: ethers::core::types::Address, + pub spender: ethers::core::types::Address, + } + #[doc = "Container type for all input parameters for the `slippage`function with signature `slippage()` and selector `[62, 3, 42, 59]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "slippage", abi = "slippage()")] + pub struct SlippageCall; + #[doc = "Container type for all input parameters for the `withdraw`function with signature `withdraw(uint256,address,bytes,bytes)` and selector `[201, 17, 27, 215]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "withdraw", abi = "withdraw(uint256,address,bytes,bytes)")] + pub struct WithdrawCall { + pub assets: ethers::core::types::U256, + pub receiver: ethers::core::types::Address, + pub adaptor_data: ethers::core::types::Bytes, + pub p3: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `withdrawFromAaveV2Morpho`function with signature `withdrawFromAaveV2Morpho(address,uint256)` and selector `[135, 45, 232, 18]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall( + name = "withdrawFromAaveV2Morpho", + abi = "withdrawFromAaveV2Morpho(address,uint256)" + )] + pub struct WithdrawFromAaveV2MorphoCall { + pub a_token: ethers::core::types::Address, + pub amount_to_withdraw: ethers::core::types::U256, + } + #[doc = "Container type for all input parameters for the `withdrawableFrom`function with signature `withdrawableFrom(bytes,bytes)` and selector `[250, 80, 229, 210]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "withdrawableFrom", abi = "withdrawableFrom(bytes,bytes)")] + pub struct WithdrawableFromCall { + pub adaptor_data: ethers::core::types::Bytes, + pub p1: ethers::core::types::Bytes, + } + #[derive(Debug, Clone, PartialEq, Eq, ethers :: contract :: EthAbiType)] + pub enum MorphoAaveV2ATokenAdaptorV1Calls { + BorrowingMask(BorrowingMaskCall), + AssetOf(AssetOfCall), + AssetsUsed(AssetsUsedCall), + BalanceOf(BalanceOfCall), + Claim(ClaimCall), + Deposit(DepositCall), + DepositToAaveV2Morpho(DepositToAaveV2MorphoCall), + Identifier(IdentifierCall), + IsBorrowingAny(IsBorrowingAnyCall), + IsDebt(IsDebtCall), + MinimumHealthFactor(MinimumHealthFactorCall), + Morpho(MorphoCall), + MorphoLens(MorphoLensCall), + MorphoRewardsDistributor(MorphoRewardsDistributorCall), + RevokeApproval(RevokeApprovalCall), + Slippage(SlippageCall), + Withdraw(WithdrawCall), + WithdrawFromAaveV2Morpho(WithdrawFromAaveV2MorphoCall), + WithdrawableFrom(WithdrawableFromCall), + } + impl ethers::core::abi::AbiDecode for MorphoAaveV2ATokenAdaptorV1Calls { + fn decode(data: impl AsRef<[u8]>) -> Result { + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2ATokenAdaptorV1Calls::BorrowingMask(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2ATokenAdaptorV1Calls::AssetOf(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2ATokenAdaptorV1Calls::AssetsUsed(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2ATokenAdaptorV1Calls::BalanceOf(decoded)); + } + if let Ok(decoded) = ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2ATokenAdaptorV1Calls::Claim(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2ATokenAdaptorV1Calls::Deposit(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2ATokenAdaptorV1Calls::DepositToAaveV2Morpho( + decoded, + )); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2ATokenAdaptorV1Calls::Identifier(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2ATokenAdaptorV1Calls::IsBorrowingAny(decoded)); + } + if let Ok(decoded) = ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2ATokenAdaptorV1Calls::IsDebt(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2ATokenAdaptorV1Calls::MinimumHealthFactor( + decoded, + )); + } + if let Ok(decoded) = ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2ATokenAdaptorV1Calls::Morpho(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2ATokenAdaptorV1Calls::MorphoLens(decoded)); + } + if let Ok(decoded) = + ::decode( + data.as_ref(), + ) + { + return Ok(MorphoAaveV2ATokenAdaptorV1Calls::MorphoRewardsDistributor( + decoded, + )); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2ATokenAdaptorV1Calls::RevokeApproval(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2ATokenAdaptorV1Calls::Slippage(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2ATokenAdaptorV1Calls::Withdraw(decoded)); + } + if let Ok(decoded) = + ::decode( + data.as_ref(), + ) + { + return Ok(MorphoAaveV2ATokenAdaptorV1Calls::WithdrawFromAaveV2Morpho( + decoded, + )); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2ATokenAdaptorV1Calls::WithdrawableFrom(decoded)); + } + Err(ethers::core::abi::Error::InvalidData.into()) + } + } + impl ethers::core::abi::AbiEncode for MorphoAaveV2ATokenAdaptorV1Calls { + fn encode(self) -> Vec { + match self { + MorphoAaveV2ATokenAdaptorV1Calls::BorrowingMask(element) => element.encode(), + MorphoAaveV2ATokenAdaptorV1Calls::AssetOf(element) => element.encode(), + MorphoAaveV2ATokenAdaptorV1Calls::AssetsUsed(element) => element.encode(), + MorphoAaveV2ATokenAdaptorV1Calls::BalanceOf(element) => element.encode(), + MorphoAaveV2ATokenAdaptorV1Calls::Claim(element) => element.encode(), + MorphoAaveV2ATokenAdaptorV1Calls::Deposit(element) => element.encode(), + MorphoAaveV2ATokenAdaptorV1Calls::DepositToAaveV2Morpho(element) => { + element.encode() + } + MorphoAaveV2ATokenAdaptorV1Calls::Identifier(element) => element.encode(), + MorphoAaveV2ATokenAdaptorV1Calls::IsBorrowingAny(element) => element.encode(), + MorphoAaveV2ATokenAdaptorV1Calls::IsDebt(element) => element.encode(), + MorphoAaveV2ATokenAdaptorV1Calls::MinimumHealthFactor(element) => element.encode(), + MorphoAaveV2ATokenAdaptorV1Calls::Morpho(element) => element.encode(), + MorphoAaveV2ATokenAdaptorV1Calls::MorphoLens(element) => element.encode(), + MorphoAaveV2ATokenAdaptorV1Calls::MorphoRewardsDistributor(element) => { + element.encode() + } + MorphoAaveV2ATokenAdaptorV1Calls::RevokeApproval(element) => element.encode(), + MorphoAaveV2ATokenAdaptorV1Calls::Slippage(element) => element.encode(), + MorphoAaveV2ATokenAdaptorV1Calls::Withdraw(element) => element.encode(), + MorphoAaveV2ATokenAdaptorV1Calls::WithdrawFromAaveV2Morpho(element) => { + element.encode() + } + MorphoAaveV2ATokenAdaptorV1Calls::WithdrawableFrom(element) => element.encode(), + } + } + } + impl ::std::fmt::Display for MorphoAaveV2ATokenAdaptorV1Calls { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + match self { + MorphoAaveV2ATokenAdaptorV1Calls::BorrowingMask(element) => element.fmt(f), + MorphoAaveV2ATokenAdaptorV1Calls::AssetOf(element) => element.fmt(f), + MorphoAaveV2ATokenAdaptorV1Calls::AssetsUsed(element) => element.fmt(f), + MorphoAaveV2ATokenAdaptorV1Calls::BalanceOf(element) => element.fmt(f), + MorphoAaveV2ATokenAdaptorV1Calls::Claim(element) => element.fmt(f), + MorphoAaveV2ATokenAdaptorV1Calls::Deposit(element) => element.fmt(f), + MorphoAaveV2ATokenAdaptorV1Calls::DepositToAaveV2Morpho(element) => element.fmt(f), + MorphoAaveV2ATokenAdaptorV1Calls::Identifier(element) => element.fmt(f), + MorphoAaveV2ATokenAdaptorV1Calls::IsBorrowingAny(element) => element.fmt(f), + MorphoAaveV2ATokenAdaptorV1Calls::IsDebt(element) => element.fmt(f), + MorphoAaveV2ATokenAdaptorV1Calls::MinimumHealthFactor(element) => element.fmt(f), + MorphoAaveV2ATokenAdaptorV1Calls::Morpho(element) => element.fmt(f), + MorphoAaveV2ATokenAdaptorV1Calls::MorphoLens(element) => element.fmt(f), + MorphoAaveV2ATokenAdaptorV1Calls::MorphoRewardsDistributor(element) => { + element.fmt(f) + } + MorphoAaveV2ATokenAdaptorV1Calls::RevokeApproval(element) => element.fmt(f), + MorphoAaveV2ATokenAdaptorV1Calls::Slippage(element) => element.fmt(f), + MorphoAaveV2ATokenAdaptorV1Calls::Withdraw(element) => element.fmt(f), + MorphoAaveV2ATokenAdaptorV1Calls::WithdrawFromAaveV2Morpho(element) => { + element.fmt(f) + } + MorphoAaveV2ATokenAdaptorV1Calls::WithdrawableFrom(element) => element.fmt(f), + } + } + } + impl ::std::convert::From for MorphoAaveV2ATokenAdaptorV1Calls { + fn from(var: BorrowingMaskCall) -> Self { + MorphoAaveV2ATokenAdaptorV1Calls::BorrowingMask(var) + } + } + impl ::std::convert::From for MorphoAaveV2ATokenAdaptorV1Calls { + fn from(var: AssetOfCall) -> Self { + MorphoAaveV2ATokenAdaptorV1Calls::AssetOf(var) + } + } + impl ::std::convert::From for MorphoAaveV2ATokenAdaptorV1Calls { + fn from(var: AssetsUsedCall) -> Self { + MorphoAaveV2ATokenAdaptorV1Calls::AssetsUsed(var) + } + } + impl ::std::convert::From for MorphoAaveV2ATokenAdaptorV1Calls { + fn from(var: BalanceOfCall) -> Self { + MorphoAaveV2ATokenAdaptorV1Calls::BalanceOf(var) + } + } + impl ::std::convert::From for MorphoAaveV2ATokenAdaptorV1Calls { + fn from(var: ClaimCall) -> Self { + MorphoAaveV2ATokenAdaptorV1Calls::Claim(var) + } + } + impl ::std::convert::From for MorphoAaveV2ATokenAdaptorV1Calls { + fn from(var: DepositCall) -> Self { + MorphoAaveV2ATokenAdaptorV1Calls::Deposit(var) + } + } + impl ::std::convert::From for MorphoAaveV2ATokenAdaptorV1Calls { + fn from(var: DepositToAaveV2MorphoCall) -> Self { + MorphoAaveV2ATokenAdaptorV1Calls::DepositToAaveV2Morpho(var) + } + } + impl ::std::convert::From for MorphoAaveV2ATokenAdaptorV1Calls { + fn from(var: IdentifierCall) -> Self { + MorphoAaveV2ATokenAdaptorV1Calls::Identifier(var) + } + } + impl ::std::convert::From for MorphoAaveV2ATokenAdaptorV1Calls { + fn from(var: IsBorrowingAnyCall) -> Self { + MorphoAaveV2ATokenAdaptorV1Calls::IsBorrowingAny(var) + } + } + impl ::std::convert::From for MorphoAaveV2ATokenAdaptorV1Calls { + fn from(var: IsDebtCall) -> Self { + MorphoAaveV2ATokenAdaptorV1Calls::IsDebt(var) + } + } + impl ::std::convert::From for MorphoAaveV2ATokenAdaptorV1Calls { + fn from(var: MinimumHealthFactorCall) -> Self { + MorphoAaveV2ATokenAdaptorV1Calls::MinimumHealthFactor(var) + } + } + impl ::std::convert::From for MorphoAaveV2ATokenAdaptorV1Calls { + fn from(var: MorphoCall) -> Self { + MorphoAaveV2ATokenAdaptorV1Calls::Morpho(var) + } + } + impl ::std::convert::From for MorphoAaveV2ATokenAdaptorV1Calls { + fn from(var: MorphoLensCall) -> Self { + MorphoAaveV2ATokenAdaptorV1Calls::MorphoLens(var) + } + } + impl ::std::convert::From for MorphoAaveV2ATokenAdaptorV1Calls { + fn from(var: MorphoRewardsDistributorCall) -> Self { + MorphoAaveV2ATokenAdaptorV1Calls::MorphoRewardsDistributor(var) + } + } + impl ::std::convert::From for MorphoAaveV2ATokenAdaptorV1Calls { + fn from(var: RevokeApprovalCall) -> Self { + MorphoAaveV2ATokenAdaptorV1Calls::RevokeApproval(var) + } + } + impl ::std::convert::From for MorphoAaveV2ATokenAdaptorV1Calls { + fn from(var: SlippageCall) -> Self { + MorphoAaveV2ATokenAdaptorV1Calls::Slippage(var) + } + } + impl ::std::convert::From for MorphoAaveV2ATokenAdaptorV1Calls { + fn from(var: WithdrawCall) -> Self { + MorphoAaveV2ATokenAdaptorV1Calls::Withdraw(var) + } + } + impl ::std::convert::From for MorphoAaveV2ATokenAdaptorV1Calls { + fn from(var: WithdrawFromAaveV2MorphoCall) -> Self { + MorphoAaveV2ATokenAdaptorV1Calls::WithdrawFromAaveV2Morpho(var) + } + } + impl ::std::convert::From for MorphoAaveV2ATokenAdaptorV1Calls { + fn from(var: WithdrawableFromCall) -> Self { + MorphoAaveV2ATokenAdaptorV1Calls::WithdrawableFrom(var) + } + } +} diff --git a/steward_abi/src/morpho_aave_v2_debt_token_adaptor_v1.rs b/steward_abi/src/morpho_aave_v2_debt_token_adaptor_v1.rs new file mode 100644 index 00000000..7b20bfd3 --- /dev/null +++ b/steward_abi/src/morpho_aave_v2_debt_token_adaptor_v1.rs @@ -0,0 +1,663 @@ +pub use morphoaavev2debttokenadaptorv1_mod::*; +#[allow(clippy::too_many_arguments)] +mod morphoaavev2debttokenadaptorv1_mod { + #![allow(clippy::enum_variant_names)] + #![allow(dead_code)] + #![allow(clippy::type_complexity)] + #![allow(unused_imports)] + use ethers::contract::{ + builders::{ContractCall, Event}, + Contract, Lazy, + }; + use ethers::core::{ + abi::{Abi, Detokenize, InvalidOutputType, Token, Tokenizable}, + types::*, + }; + use ethers::providers::Middleware; + #[doc = "MorphoAaveV2DebtTokenAdaptorV1 was auto-generated with ethers-rs Abigen. More information at: https://github.com/gakonst/ethers-rs"] + use std::sync::Arc; + pub static MORPHOAAVEV2DEBTTOKENADAPTORV1_ABI: ethers::contract::Lazy = + ethers::contract::Lazy::new(|| { + serde_json :: from_str ("{\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_morpho\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_morphoLens\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minHealthFactor\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__ConstructorHealthFactorTooLow\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__ExternalReceiverBlocked\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"asset\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"BaseAdaptor__PricingNotSupported\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__Slippage\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__UserDepositsNotAllowed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__UserWithdrawsNotAllowed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"untrackedDebtPosition\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"MorphoAaveV2DebtTokenAdaptor__DebtPositionsMustBeTracked\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"MorphoAaveV2DebtTokenAdaptor__HealthFactorTooLow\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"assetOf\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"assetsUsed\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20[]\",\n \"name\": \"assets\",\n \"type\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"aToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountToBorrow\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"borrowFromAaveV2Morpho\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"deposit\",\n \"outputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"identifier\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"isDebt\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"minimumHealthFactor\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"morpho\",\n \"outputs\": [\n {\n \"internalType\": \"contract IMorphoV2\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"morphoLens\",\n \"outputs\": [\n {\n \"internalType\": \"contract IMorphoLensV2\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IAaveToken\",\n \"name\": \"aToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountToRepay\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"repayAaveV2MorphoDebt\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"asset\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"revokeApproval\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"slippage\",\n \"outputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"\",\n \"type\": \"uint32\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"withdrawableFrom\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": {\n \"object\": \"0x60e060405234801561001057600080fd5b5060405161122a38038061122a83398101604081905261002f9161009b565b61003881610053565b6001600160a01b03928316608052911660a05260c0526100d7565b670e92596fd629000081101561007c576040516397ed5f4160e01b815260040160405180910390fd5b50565b80516001600160a01b038116811461009657600080fd5b919050565b6000806000606084860312156100b057600080fd5b6100b98461007f565b92506100c76020850161007f565b9150604084015190509250925092565b60805160a05160c0516110e561014560003960008181610114015261069601526000818161015e015261061e015260008181610233015281816102f00152818161033b0152818161039d015281816105ab015281816109df01528181610a7b0152610b2801526110e56000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80637998a1c411610097578063d3bfe76a11610066578063d3bfe76a1461021b578063d8fbc8331461022e578063e170a9bf14610255578063fa50e5d21461026857600080fd5b80637998a1c4146101d157806389353a09146101d9578063aeffddde146101e8578063c9111bd71461020857600080fd5b8063425734d3116100d3578063425734d3146101595780634c97ba1b1461019857806369445c31146101ab57806378415365146101be57600080fd5b8063106a4f2f146100fa5780631caff8b11461010f5780633e032a3b14610149575b600080fd5b61010d610108366004610c03565b61027b565b005b6101367f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6040516123288152602001610140565b6101807f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610140565b61010d6101a6366004610c03565b6103c6565b61010d6101b9366004610cd2565b6106dc565b6101366101cc366004610d3f565b6106f5565b61013661071f565b60405160018152602001610140565b6101fb6101f6366004610d3f565b61078c565b6040516101409190610d7c565b61010d610216366004610dc9565b6107ef565b61010d610229366004610e49565b610808565b6101807f000000000000000000000000000000000000000000000000000000000000000081565b610180610263366004610d3f565b610821565b610136610276366004610e82565b61089c565b6000826001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102df9190610ee6565b90506103156001600160a01b0382167f0000000000000000000000000000000000000000000000000000000000000000846108a5565b604051630450cfaf60e31b81526001600160a01b038481166004830152602482018490527f000000000000000000000000000000000000000000000000000000000000000016906322867d7890604401600060405180830381600087803b15801561037f57600080fd5b505af1158015610393573d6000803e3d6000fd5b505050506103c1817f0000000000000000000000000000000000000000000000000000000000000000610922565b505050565b60006103d061071f565b604080516001600160a01b03861660208201526001910160408051601f1981840301815290829052610406939291602001610f03565b6040516020818303038152906040528051906020012090506000306001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561045e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104829190610ee6565b6001600160a01b03166309f7abd2836040518263ffffffff1660e01b81526004016104af91815260200190565b602060405180830381865afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f09190610f7b565b60405163024eefab60e61b815263ffffffff8216600482015290915030906393bbeac090602401602060405180830381865afa158015610534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105589190610f96565b610585576040516317b06aa560e01b81526001600160a01b03851660048201526024015b60405180910390fd5b604051634b8a352960e01b81526001600160a01b038581166004830152602482018590527f00000000000000000000000000000000000000000000000000000000000000001690634b8a352990604401600060405180830381600087803b1580156105ef57600080fd5b505af1158015610603573d6000803e3d6000fd5b5050604051630e397f9360e31b8152306004820152600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691506371cbfc9890602401602060405180830381865afa15801561066e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106929190610fb8565b90507f00000000000000000000000000000000000000000000000000000000000000008110156106d557604051633681b6a760e21b815260040160405180910390fd5b5050505050565b604051633204ed5b60e21b815260040160405180910390fd5b6000808280602001905181019061070c9190610ee6565b905061071881336109b1565b9392505050565b60006040516020016107719060208082526026908201527f4d6f7270686f20416176652056322064656274546f6b656e2041646170746f72604082015265205620312e3160d01b606082015260800190565b60405160208183030381529060405280519060200120905090565b604080516001808252818301909252606091602080830190803683370190505090506107b782610821565b816000815181106107ca576107ca610fd1565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b604051635f5003c560e11b815260040160405180910390fd5b61081d6001600160a01b0383168260006108a5565b5050565b600080828060200190518101906108389190610ee6565b9050806001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610878573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190610ee6565b60005b92915050565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d116001600051141617169150508061091c5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b604482015260640161057c565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa158015610972573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109969190610fb8565b111561081d5761081d6001600160a01b0383168260006108a5565b60405163251d5d2b60e21b81526001600160a01b0383811660048301528281166024830152600091829182917f00000000000000000000000000000000000000000000000000000000000000009091169063947574ac906044016040805180830381865afa158015610a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4b9190610fe7565b909250905060008215610aff57604051630175fa5f60e51b81526001600160a01b038781166004830152610afc917f000000000000000000000000000000000000000000000000000000000000000090911690632ebf4be090602401602060405180830381865afa158015610ac4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae89190610fb8565b84906b033b2e3c9fd0803ce8000000610bcc565b90505b8115610bc357604051631987357f60e21b81526001600160a01b038781166004830152610bb6917f00000000000000000000000000000000000000000000000000000000000000009091169063661cd5fc90602401606060405180830381865afa158015610b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b959190611022565b6040015183906001600160701b03166b033b2e3c9fd0803ce8000000610bcc565b610bc0908261108e565b90505b95945050505050565b828202811515841585830485141716610be457600080fd5b0492915050565b6001600160a01b0381168114610c0057600080fd5b50565b60008060408385031215610c1657600080fd5b8235610c2181610beb565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610c5657600080fd5b813567ffffffffffffffff80821115610c7157610c71610c2f565b604051601f8301601f19908116603f01168101908282118183101715610c9957610c99610c2f565b81604052838152866020858801011115610cb257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215610ce757600080fd5b83359250602084013567ffffffffffffffff80821115610d0657600080fd5b610d1287838801610c45565b93506040860135915080821115610d2857600080fd5b50610d3586828701610c45565b9150509250925092565b600060208284031215610d5157600080fd5b813567ffffffffffffffff811115610d6857600080fd5b610d7484828501610c45565b949350505050565b6020808252825182820181905260009190848201906040850190845b81811015610dbd5783516001600160a01b031683529284019291840191600101610d98565b50909695505050505050565b60008060008060808587031215610ddf57600080fd5b843593506020850135610df181610beb565b9250604085013567ffffffffffffffff80821115610e0e57600080fd5b610e1a88838901610c45565b93506060870135915080821115610e3057600080fd5b50610e3d87828801610c45565b91505092959194509250565b60008060408385031215610e5c57600080fd5b8235610e6781610beb565b91506020830135610e7781610beb565b809150509250929050565b60008060408385031215610e9557600080fd5b823567ffffffffffffffff80821115610ead57600080fd5b610eb986838701610c45565b93506020850135915080821115610ecf57600080fd5b50610edc85828601610c45565b9150509250929050565b600060208284031215610ef857600080fd5b815161071881610beb565b838152600060208415158184015260606040840152835180606085015260005b81811015610f3f57858101830151858201608001528201610f23565b506000608082860101526080601f19601f83011685010192505050949350505050565b805163ffffffff81168114610f7657600080fd5b919050565b600060208284031215610f8d57600080fd5b61071882610f62565b600060208284031215610fa857600080fd5b8151801515811461071857600080fd5b600060208284031215610fca57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60008060408385031215610ffa57600080fd5b505080516020909101519092909150565b80516001600160701b0381168114610f7657600080fd5b60006060828403121561103457600080fd5b6040516060810181811067ffffffffffffffff8211171561105757611057610c2f565b60405261106383610f62565b81526110716020840161100b565b60208201526110826040840161100b565b60408201529392505050565b8082018082111561089f57634e487b7160e01b600052601160045260246000fdfea264697066735822122067bd328157b4d2231e88015c7f46a1a0fa3fcf7e61acf535ee80642f51d5499064736f6c63430008100033\",\n \"sourceMap\": \"561:6530:198:-:0;;;2077:279;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2162:54;2200:15;2162:37;:54::i;:::-;-1:-1:-1;;;;;2226:27:198;;;;;2263:39;;;;2312:37;;561:6530;;8743:233:188;2760:7;8847:19;:57;8843:126;;;8925:44;;-1:-1:-1;;;8925:44:188;;;;;;;;;;;8843:126;8743:233;:::o;14:177:258:-;93:13;;-1:-1:-1;;;;;135:31:258;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:354::-;284:6;292;300;353:2;341:9;332:7;328:23;324:32;321:52;;;369:1;366;359:12;321:52;392:40;422:9;392:40;:::i;:::-;382:50;;451:49;496:2;485:9;481:18;451:49;:::i;:::-;441:59;;540:2;529:9;525:18;519:25;509:35;;196:354;;;;;:::o;:::-;561:6530:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\",\n \"linkReferences\": {}\n },\n \"deployedBytecode\": {\n \"object\": \"0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80637998a1c411610097578063d3bfe76a11610066578063d3bfe76a1461021b578063d8fbc8331461022e578063e170a9bf14610255578063fa50e5d21461026857600080fd5b80637998a1c4146101d157806389353a09146101d9578063aeffddde146101e8578063c9111bd71461020857600080fd5b8063425734d3116100d3578063425734d3146101595780634c97ba1b1461019857806369445c31146101ab57806378415365146101be57600080fd5b8063106a4f2f146100fa5780631caff8b11461010f5780633e032a3b14610149575b600080fd5b61010d610108366004610c03565b61027b565b005b6101367f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6040516123288152602001610140565b6101807f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610140565b61010d6101a6366004610c03565b6103c6565b61010d6101b9366004610cd2565b6106dc565b6101366101cc366004610d3f565b6106f5565b61013661071f565b60405160018152602001610140565b6101fb6101f6366004610d3f565b61078c565b6040516101409190610d7c565b61010d610216366004610dc9565b6107ef565b61010d610229366004610e49565b610808565b6101807f000000000000000000000000000000000000000000000000000000000000000081565b610180610263366004610d3f565b610821565b610136610276366004610e82565b61089c565b6000826001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102df9190610ee6565b90506103156001600160a01b0382167f0000000000000000000000000000000000000000000000000000000000000000846108a5565b604051630450cfaf60e31b81526001600160a01b038481166004830152602482018490527f000000000000000000000000000000000000000000000000000000000000000016906322867d7890604401600060405180830381600087803b15801561037f57600080fd5b505af1158015610393573d6000803e3d6000fd5b505050506103c1817f0000000000000000000000000000000000000000000000000000000000000000610922565b505050565b60006103d061071f565b604080516001600160a01b03861660208201526001910160408051601f1981840301815290829052610406939291602001610f03565b6040516020818303038152906040528051906020012090506000306001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561045e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104829190610ee6565b6001600160a01b03166309f7abd2836040518263ffffffff1660e01b81526004016104af91815260200190565b602060405180830381865afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f09190610f7b565b60405163024eefab60e61b815263ffffffff8216600482015290915030906393bbeac090602401602060405180830381865afa158015610534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105589190610f96565b610585576040516317b06aa560e01b81526001600160a01b03851660048201526024015b60405180910390fd5b604051634b8a352960e01b81526001600160a01b038581166004830152602482018590527f00000000000000000000000000000000000000000000000000000000000000001690634b8a352990604401600060405180830381600087803b1580156105ef57600080fd5b505af1158015610603573d6000803e3d6000fd5b5050604051630e397f9360e31b8152306004820152600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691506371cbfc9890602401602060405180830381865afa15801561066e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106929190610fb8565b90507f00000000000000000000000000000000000000000000000000000000000000008110156106d557604051633681b6a760e21b815260040160405180910390fd5b5050505050565b604051633204ed5b60e21b815260040160405180910390fd5b6000808280602001905181019061070c9190610ee6565b905061071881336109b1565b9392505050565b60006040516020016107719060208082526026908201527f4d6f7270686f20416176652056322064656274546f6b656e2041646170746f72604082015265205620312e3160d01b606082015260800190565b60405160208183030381529060405280519060200120905090565b604080516001808252818301909252606091602080830190803683370190505090506107b782610821565b816000815181106107ca576107ca610fd1565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b604051635f5003c560e11b815260040160405180910390fd5b61081d6001600160a01b0383168260006108a5565b5050565b600080828060200190518101906108389190610ee6565b9050806001600160a01b031663b16a19de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610878573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190610ee6565b60005b92915050565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d116001600051141617169150508061091c5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b604482015260640161057c565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa158015610972573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109969190610fb8565b111561081d5761081d6001600160a01b0383168260006108a5565b60405163251d5d2b60e21b81526001600160a01b0383811660048301528281166024830152600091829182917f00000000000000000000000000000000000000000000000000000000000000009091169063947574ac906044016040805180830381865afa158015610a27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4b9190610fe7565b909250905060008215610aff57604051630175fa5f60e51b81526001600160a01b038781166004830152610afc917f000000000000000000000000000000000000000000000000000000000000000090911690632ebf4be090602401602060405180830381865afa158015610ac4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae89190610fb8565b84906b033b2e3c9fd0803ce8000000610bcc565b90505b8115610bc357604051631987357f60e21b81526001600160a01b038781166004830152610bb6917f00000000000000000000000000000000000000000000000000000000000000009091169063661cd5fc90602401606060405180830381865afa158015610b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b959190611022565b6040015183906001600160701b03166b033b2e3c9fd0803ce8000000610bcc565b610bc0908261108e565b90505b95945050505050565b828202811515841585830485141716610be457600080fd5b0492915050565b6001600160a01b0381168114610c0057600080fd5b50565b60008060408385031215610c1657600080fd5b8235610c2181610beb565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610c5657600080fd5b813567ffffffffffffffff80821115610c7157610c71610c2f565b604051601f8301601f19908116603f01168101908282118183101715610c9957610c99610c2f565b81604052838152866020858801011115610cb257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215610ce757600080fd5b83359250602084013567ffffffffffffffff80821115610d0657600080fd5b610d1287838801610c45565b93506040860135915080821115610d2857600080fd5b50610d3586828701610c45565b9150509250925092565b600060208284031215610d5157600080fd5b813567ffffffffffffffff811115610d6857600080fd5b610d7484828501610c45565b949350505050565b6020808252825182820181905260009190848201906040850190845b81811015610dbd5783516001600160a01b031683529284019291840191600101610d98565b50909695505050505050565b60008060008060808587031215610ddf57600080fd5b843593506020850135610df181610beb565b9250604085013567ffffffffffffffff80821115610e0e57600080fd5b610e1a88838901610c45565b93506060870135915080821115610e3057600080fd5b50610e3d87828801610c45565b91505092959194509250565b60008060408385031215610e5c57600080fd5b8235610e6781610beb565b91506020830135610e7781610beb565b809150509250929050565b60008060408385031215610e9557600080fd5b823567ffffffffffffffff80821115610ead57600080fd5b610eb986838701610c45565b93506020850135915080821115610ecf57600080fd5b50610edc85828601610c45565b9150509250929050565b600060208284031215610ef857600080fd5b815161071881610beb565b838152600060208415158184015260606040840152835180606085015260005b81811015610f3f57858101830151858201608001528201610f23565b506000608082860101526080601f19601f83011685010192505050949350505050565b805163ffffffff81168114610f7657600080fd5b919050565b600060208284031215610f8d57600080fd5b61071882610f62565b600060208284031215610fa857600080fd5b8151801515811461071857600080fd5b600060208284031215610fca57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60008060408385031215610ffa57600080fd5b505080516020909101519092909150565b80516001600160701b0381168114610f7657600080fd5b60006060828403121561103457600080fd5b6040516060810181811067ffffffffffffffff8211171561105757611057610c2f565b60405261106383610f62565b81526110716020840161100b565b60208201526110826040840161100b565b60408201529392505050565b8082018082111561089f57634e487b7160e01b600052601160045260246000fdfea264697066735822122067bd328157b4d2231e88015c7f46a1a0fa3fcf7e61acf535ee80642f51d5499064736f6c63430008100033\",\n \"sourceMap\": \"561:6530:198:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6002:381;;;;;;:::i;:::-;;:::i;:::-;;2026:44;;;;;;;;660:25:258;;;648:2;633:18;2026:44:198;;;;;;;;2415:78:188;;;2481:5;840:42:258;;828:2;813:18;2415:78:188;696:192:258;1827:41:198;;;;;;;;-1:-1:-1;;;;;1080:32:258;;;1062:51;;1050:2;1035:18;1827:41:198;893:226:258;4952:843:198;;;;;;:::i;:::-;;:::i;3131:136::-;;;;;;:::i;:::-;;:::i;3887:211::-;;;;;;:::i;:::-;;:::i;2775:148::-;;;:::i;4476:82::-;;;4547:4;3570:41:258;;3558:2;3543:18;4476:82:198;3430:187:258;5934:180:188;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3355:147:198:-;;;;;;:::i;:::-;;:::i;9204:107:188:-;;;;;;:::i;:::-;;:::i;1628:33:198:-;;;;;4182:211;;;;;;:::i;:::-;;:::i;3676:118::-;;;;;;:::i;:::-;;:::i;6002:381::-;6092:16;6117:6;-1:-1:-1;;;;;6117:31:198;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6092:59;-1:-1:-1;6161:54:198;-1:-1:-1;;;;;6161:22:198;;6192:6;6201:13;6161:22;:54::i;:::-;6225:44;;-1:-1:-1;;;6225:44:198;;-1:-1:-1;;;;;6946:32:258;;;6225:44:198;;;6928:51:258;6995:18;;;6988:34;;;6225:6:198;:12;;;;6901:18:258;;6225:44:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6324:52;6348:10;6368:6;6324:23;:52::i;:::-;6082:301;6002:381;;:::o;4952:843::-;5125:20;5169:12;:10;:12::i;:::-;5189:18;;;-1:-1:-1;;;;;1080:32:258;;5189:18:198;;;1062:51:258;5183:4:198;;1035:18:258;5189::198;;;-1:-1:-1;;5189:18:198;;;;;;;;;;5158:50;;;;5189:18;5158:50;;:::i;:::-;;;;;;;;;;;;;5148:61;;;;;;5125:84;;5219:17;5254:4;-1:-1:-1;;;;;5239:30:198;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5239:60:198;;5300:12;5239:74;;;;;;;;;;;;;660:25:258;;648:2;633:18;;514:177;5239:74:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5328:48;;-1:-1:-1;;;5328:48:198;;870:10:258;858:23;;5328:48:198;;;840:42:258;5219:94:198;;-1:-1:-1;5343:4:198;;5328:36;;813:18:258;;5328:48:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5323:138;;5397:64;;-1:-1:-1;;;5397:64:198;;-1:-1:-1;;;;;1080:32:258;;5397:64:198;;;1062:51:258;1035:18;;5397:64:198;;;;;;;;5323:138;5503:37;;-1:-1:-1;;;5503:37:198;;-1:-1:-1;;;;;6946:32:258;;;5503:37:198;;;6928:51:258;6995:18;;;6988:34;;;5503:6:198;:13;;;;6901:18:258;;5503:37:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5636:45:198;;-1:-1:-1;;;5636:45:198;;5675:4;5636:45;;;1062:51:258;5613:20:198;;-1:-1:-1;5636:10:198;-1:-1:-1;;;;;5636:30:198;;-1:-1:-1;5636:30:198;;1035:18:258;;5636:45:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5613:68;;5710:19;5695:12;:34;5691:97;;;5738:50;;-1:-1:-1;;;5738:50:198;;;;;;;;;;;5691:97;5031:764;;;4952:843;;:::o;3131:136::-;3223:37;;-1:-1:-1;;;3223:37:198;;;;;;;;;;;3887:211;3962:7;3981:14;4009:11;3998:34;;;;;;;;;;;;:::i;:::-;3981:51;;4049:42;4072:6;4080:10;4049:22;:42::i;:::-;4042:49;3887:211;-1:-1:-1;;;3887:211:198:o;2775:148::-;2827:7;2863:52;;;;;;9763:2:258;9745:21;;;9802:2;9782:18;;;9775:30;9841:34;9836:2;9821:18;;9814:62;-1:-1:-1;;;9907:2:258;9892:18;;9885:36;9953:3;9938:19;;9561:402;2863:52:198;;;;;;;;;;;;;2853:63;;;;;;2846:70;;2775:148;:::o;5934:180:188:-;6051:14;;;6063:1;6051:14;;;;;;;;;6009:21;;6051:14;;;;;;;;;;;-1:-1:-1;6051:14:188;6042:23;;6087:20;6095:11;6087:7;:20::i;:::-;6075:6;6082:1;6075:9;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;6075:32:188;;;-1:-1:-1;;;;;6075:32:188;;;;;5934:180;;;:::o;3355:147:198:-;3457:38;;-1:-1:-1;;;3457:38:198;;;;;;;;;;;9204:107:188;9275:29;-1:-1:-1;;;;;9275:17:188;;9293:7;9302:1;9275:17;:29::i;:::-;9204:107;;:::o;4182:211:198:-;4255:5;4272:17;4303:11;4292:37;;;;;;;;;;;;:::i;:::-;4272:57;;4352:6;-1:-1:-1;;;;;4352:31:198;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3676:118::-;3760:7;3676:118;;;;;:::o;4327:1454:104:-;4438:12;4565:4;4559:11;-1:-1:-1;;;4688:17:104;4681:93;4821:2;4817:1;4798:17;4794:25;4787:37;4901:6;4896:2;4877:17;4873:26;4866:42;5703:2;5700:1;5696:2;5677:17;5674:1;5667:5;5660;5655:51;5224:16;5217:24;5211:2;5193:16;5190:24;5186:1;5182;5176:8;5173:15;5169:46;5166:76;4966:754;4955:765;;;5748:7;5740:34;;;;-1:-1:-1;;;5740:34:104;;10590:2:258;5740:34:104;;;10572:21:258;10629:2;10609:18;;;10602:30;-1:-1:-1;;;10648:18:258;;;10641:44;10702:18;;5740:34:104;10388:338:258;5740:34:104;4428:1353;4327:1454;;;:::o;8158:167:188:-;8244:39;;-1:-1:-1;;;8244:39:188;;8268:4;8244:39;;;10943:34:258;-1:-1:-1;;;;;11013:15:258;;;10993:18;;;10986:43;8286:1:188;;8244:15;;;;;;10878:18:258;;8244:39:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;8240:78;;;8289:29;-1:-1:-1;;;;;8289:17:188;;8307:7;8316:1;8289:17;:29::i;6604:485:198:-;6745:41;;-1:-1:-1;;;6745:41:198;;-1:-1:-1;;;;;10961:15:258;;;6745:41:198;;;10943:34:258;11013:15;;;10993:18;;;10986:43;-1:-1:-1;;;;;;6745:6:198;:24;;;;;;10878:18:258;;6745:41:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6711:75;;-1:-1:-1;6711:75:198;-1:-1:-1;6797:27:198;6838:9;;6834:93;;6888:32;;-1:-1:-1;;;6888:32:198;;-1:-1:-1;;;;;1080:32:258;;;6888::198;;;1062:51:258;6871:56:198;;6888:6;:21;;;;;;1035:18:258;;6888:32:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6871:5;;6922:4;6871:16;:56::i;:::-;6849:78;;6834:93;6941:10;;6937:109;;6994:29;;-1:-1:-1;;;6994:29:198;;-1:-1:-1;;;;;1080:32:258;;;6994:29:198;;;1062:51:258;6976:70:198;;6994:6;:18;;;;;;1035::258;;6994:29:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;;6976:6;;-1:-1:-1;;;;;6976:70:198;7041:4;6976:17;:70::i;:::-;6953:93;;;;:::i;:::-;;;6937:109;7063:19;6604:485;-1:-1:-1;;;;;6604:485:198:o;1357:535:221:-;1563:9;;;1694:19;;1687:27;1719:9;;1733;;;1730:16;;1716:31;1683:65;1673:121;;1778:1;1775;1768:12;1673:121;1857:19;;1357:535;-1:-1:-1;;1357:535:221:o;14:143:258:-;-1:-1:-1;;;;;101:31:258;;91:42;;81:70;;147:1;144;137:12;81:70;14:143;:::o;162:347::-;250:6;258;311:2;299:9;290:7;286:23;282:32;279:52;;;327:1;324;317:12;279:52;366:9;353:23;385:43;422:5;385:43;:::i;:::-;447:5;499:2;484:18;;;;471:32;;-1:-1:-1;;;162:347:258:o;1456:127::-;1517:10;1512:3;1508:20;1505:1;1498:31;1548:4;1545:1;1538:15;1572:4;1569:1;1562:15;1588:718;1630:5;1683:3;1676:4;1668:6;1664:17;1660:27;1650:55;;1701:1;1698;1691:12;1650:55;1737:6;1724:20;1763:18;1800:2;1796;1793:10;1790:36;;;1806:18;;:::i;:::-;1881:2;1875:9;1849:2;1935:13;;-1:-1:-1;;1931:22:258;;;1955:2;1927:31;1923:40;1911:53;;;1979:18;;;1999:22;;;1976:46;1973:72;;;2025:18;;:::i;:::-;2065:10;2061:2;2054:22;2100:2;2092:6;2085:18;2146:3;2139:4;2134:2;2126:6;2122:15;2118:26;2115:35;2112:55;;;2163:1;2160;2153:12;2112:55;2227:2;2220:4;2212:6;2208:17;2201:4;2193:6;2189:17;2176:54;2274:1;2267:4;2262:2;2254:6;2250:15;2246:26;2239:37;2294:6;2285:15;;;;;;1588:718;;;;:::o;2311:607::-;2406:6;2414;2422;2475:2;2463:9;2454:7;2450:23;2446:32;2443:52;;;2491:1;2488;2481:12;2443:52;2527:9;2514:23;2504:33;;2588:2;2577:9;2573:18;2560:32;2611:18;2652:2;2644:6;2641:14;2638:34;;;2668:1;2665;2658:12;2638:34;2691:49;2732:7;2723:6;2712:9;2708:22;2691:49;:::i;:::-;2681:59;;2793:2;2782:9;2778:18;2765:32;2749:48;;2822:2;2812:8;2809:16;2806:36;;;2838:1;2835;2828:12;2806:36;;2861:51;2904:7;2893:8;2882:9;2878:24;2861:51;:::i;:::-;2851:61;;;2311:607;;;;;:::o;2923:320::-;2991:6;3044:2;3032:9;3023:7;3019:23;3015:32;3012:52;;;3060:1;3057;3050:12;3012:52;3100:9;3087:23;3133:18;3125:6;3122:30;3119:50;;;3165:1;3162;3155:12;3119:50;3188:49;3229:7;3220:6;3209:9;3205:22;3188:49;:::i;:::-;3178:59;2923:320;-1:-1:-1;;;;2923:320:258:o;3622:673::-;3808:2;3860:21;;;3930:13;;3833:18;;;3952:22;;;3779:4;;3808:2;4031:15;;;;4005:2;3990:18;;;3779:4;4074:195;4088:6;4085:1;4082:13;4074:195;;;4153:13;;-1:-1:-1;;;;;4149:39:258;4137:52;;4244:15;;;;4209:12;;;;4185:1;4103:9;4074:195;;;-1:-1:-1;4286:3:258;;3622:673;-1:-1:-1;;;;;;3622:673:258:o;4300:755::-;4404:6;4412;4420;4428;4481:3;4469:9;4460:7;4456:23;4452:33;4449:53;;;4498:1;4495;4488:12;4449:53;4534:9;4521:23;4511:33;;4594:2;4583:9;4579:18;4566:32;4607:43;4644:5;4607:43;:::i;:::-;4669:5;-1:-1:-1;4725:2:258;4710:18;;4697:32;4748:18;4778:14;;;4775:34;;;4805:1;4802;4795:12;4775:34;4828:49;4869:7;4860:6;4849:9;4845:22;4828:49;:::i;:::-;4818:59;;4930:2;4919:9;4915:18;4902:32;4886:48;;4959:2;4949:8;4946:16;4943:36;;;4975:1;4972;4965:12;4943:36;;4998:51;5041:7;5030:8;5019:9;5015:24;4998:51;:::i;:::-;4988:61;;;4300:755;;;;;;;:::o;5060:427::-;5143:6;5151;5204:2;5192:9;5183:7;5179:23;5175:32;5172:52;;;5220:1;5217;5210:12;5172:52;5259:9;5246:23;5278:43;5315:5;5278:43;:::i;:::-;5340:5;-1:-1:-1;5397:2:258;5382:18;;5369:32;5410:45;5369:32;5410:45;:::i;:::-;5474:7;5464:17;;;5060:427;;;;;:::o;5942:539::-;6028:6;6036;6089:2;6077:9;6068:7;6064:23;6060:32;6057:52;;;6105:1;6102;6095:12;6057:52;6145:9;6132:23;6174:18;6215:2;6207:6;6204:14;6201:34;;;6231:1;6228;6221:12;6201:34;6254:49;6295:7;6286:6;6275:9;6271:22;6254:49;:::i;:::-;6244:59;;6356:2;6345:9;6341:18;6328:32;6312:48;;6385:2;6375:8;6372:16;6369:36;;;6401:1;6398;6391:12;6369:36;;6424:51;6467:7;6456:8;6445:9;6441:24;6424:51;:::i;:::-;6414:61;;;5942:539;;;;;:::o;6486:263::-;6556:6;6609:2;6597:9;6588:7;6584:23;6580:32;6577:52;;;6625:1;6622;6615:12;6577:52;6657:9;6651:16;6676:43;6713:5;6676:43;:::i;7241:701::-;7438:6;7427:9;7420:25;7401:4;7464:2;7516:6;7509:14;7502:22;7497:2;7486:9;7482:18;7475:50;7561:2;7556;7545:9;7541:18;7534:30;7593:6;7587:13;7636:6;7631:2;7620:9;7616:18;7609:34;7661:1;7671:141;7685:6;7682:1;7679:13;7671:141;;;7781:14;;;7777:23;;7771:30;7746:17;;;7765:3;7742:27;7735:67;7700:10;;7671:141;;;7675:3;7862:1;7856:3;7847:6;7836:9;7832:22;7828:32;7821:43;7932:3;7925:2;7921:7;7916:2;7908:6;7904:15;7900:29;7889:9;7885:45;7881:55;7873:63;;;;7241:701;;;;;;:::o;8233:167::-;8311:13;;8364:10;8353:22;;8343:33;;8333:61;;8390:1;8387;8380:12;8333:61;8233:167;;;:::o;8405:206::-;8474:6;8527:2;8515:9;8506:7;8502:23;8498:32;8495:52;;;8543:1;8540;8533:12;8495:52;8566:39;8595:9;8566:39;:::i;8814:277::-;8881:6;8934:2;8922:9;8913:7;8909:23;8905:32;8902:52;;;8950:1;8947;8940:12;8902:52;8982:9;8976:16;9035:5;9028:13;9021:21;9014:5;9011:32;9001:60;;9057:1;9054;9047:12;9096:184;9166:6;9219:2;9207:9;9198:7;9194:23;9190:32;9187:52;;;9235:1;9232;9225:12;9187:52;-1:-1:-1;9258:16:258;;9096:184;-1:-1:-1;9096:184:258:o;9968:127::-;10029:10;10024:3;10020:20;10017:1;10010:31;10060:4;10057:1;10050:15;10084:4;10081:1;10074:15;11040:245;11119:6;11127;11180:2;11168:9;11159:7;11155:23;11151:32;11148:52;;;11196:1;11193;11186:12;11148:52;-1:-1:-1;;11219:16:258;;11275:2;11260:18;;;11254:25;11219:16;;11254:25;;-1:-1:-1;11040:245:258:o;11290:188::-;11369:13;;-1:-1:-1;;;;;11411:42:258;;11401:53;;11391:81;;11468:1;11465;11458:12;11483:636;11583:6;11636:2;11624:9;11615:7;11611:23;11607:32;11604:52;;;11652:1;11649;11642:12;11604:52;11685:2;11679:9;11727:2;11719:6;11715:15;11796:6;11784:10;11781:22;11760:18;11748:10;11745:34;11742:62;11739:88;;;11807:18;;:::i;:::-;11843:2;11836:22;11882:39;11911:9;11882:39;:::i;:::-;11874:6;11867:55;11955:49;12000:2;11989:9;11985:18;11955:49;:::i;:::-;11950:2;11942:6;11938:15;11931:74;12038:49;12083:2;12072:9;12068:18;12038:49;:::i;:::-;12033:2;12021:15;;12014:74;12025:6;11483:636;-1:-1:-1;;;11483:636:258:o;12124:222::-;12189:9;;;12210:10;;;12207:133;;;12262:10;12257:3;12253:20;12250:1;12243:31;12297:4;12294:1;12287:15;12325:4;12322:1;12315:15\",\n \"linkReferences\": {},\n \"immutableReferences\": {\n \"65154\": [\n {\n \"start\": 563,\n \"length\": 32\n },\n {\n \"start\": 752,\n \"length\": 32\n },\n {\n \"start\": 827,\n \"length\": 32\n },\n {\n \"start\": 925,\n \"length\": 32\n },\n {\n \"start\": 1451,\n \"length\": 32\n },\n {\n \"start\": 2527,\n \"length\": 32\n },\n {\n \"start\": 2683,\n \"length\": 32\n },\n {\n \"start\": 2856,\n \"length\": 32\n }\n ],\n \"65158\": [\n {\n \"start\": 350,\n \"length\": 32\n },\n {\n \"start\": 1566,\n \"length\": 32\n }\n ],\n \"65161\": [\n {\n \"start\": 276,\n \"length\": 32\n },\n {\n \"start\": 1686,\n \"length\": 32\n }\n ]\n }\n },\n \"methodIdentifiers\": {\n \"assetOf(bytes)\": \"e170a9bf\",\n \"assetsUsed(bytes)\": \"aeffddde\",\n \"balanceOf(bytes)\": \"78415365\",\n \"borrowFromAaveV2Morpho(address,uint256)\": \"4c97ba1b\",\n \"deposit(uint256,bytes,bytes)\": \"69445c31\",\n \"identifier()\": \"7998a1c4\",\n \"isDebt()\": \"89353a09\",\n \"minimumHealthFactor()\": \"1caff8b1\",\n \"morpho()\": \"d8fbc833\",\n \"morphoLens()\": \"425734d3\",\n \"repayAaveV2MorphoDebt(address,uint256)\": \"106a4f2f\",\n \"revokeApproval(address,address)\": \"d3bfe76a\",\n \"slippage()\": \"3e032a3b\",\n \"withdraw(uint256,address,bytes,bytes)\": \"c9111bd7\",\n \"withdrawableFrom(bytes,bytes)\": \"fa50e5d2\"\n },\n \"rawMetadata\": \"{\\\"compiler\\\":{\\\"version\\\":\\\"0.8.16+commit.07a7930e\\\"},\\\"language\\\":\\\"Solidity\\\",\\\"output\\\":{\\\"abi\\\":[{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"_morpho\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"_morphoLens\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"minHealthFactor\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"constructor\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__ConstructorHealthFactorTooLow\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__ExternalReceiverBlocked\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"BaseAdaptor__PricingNotSupported\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__Slippage\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__UserDepositsNotAllowed\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__UserWithdrawsNotAllowed\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"untrackedDebtPosition\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"MorphoAaveV2DebtTokenAdaptor__DebtPositionsMustBeTracked\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"MorphoAaveV2DebtTokenAdaptor__HealthFactorTooLow\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"assetOf\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract ERC20\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"assetsUsed\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract ERC20[]\\\",\\\"name\\\":\\\"assets\\\",\\\"type\\\":\\\"address[]\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"balanceOf\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"aToken\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"amountToBorrow\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"borrowFromAaveV2Morpho\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"deposit\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"identifier\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"bytes32\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes32\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"isDebt\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"bool\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bool\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"minimumHealthFactor\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"morpho\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract IMorphoV2\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"morphoLens\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract IMorphoLensV2\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"contract IAaveToken\\\",\\\"name\\\":\\\"aToken\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"amountToRepay\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"repayAaveV2MorphoDebt\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"contract ERC20\\\",\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"spender\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"revokeApproval\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"slippage\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint32\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint32\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"withdraw\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"withdrawableFrom\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"}],\\\"devdoc\\\":{\\\"author\\\":\\\"crispymangoes\\\",\\\"errors\\\":{\\\"MorphoAaveV2DebtTokenAdaptor__DebtPositionsMustBeTracked(address)\\\":[{\\\"params\\\":{\\\"untrackedDebtPosition\\\":\\\"the address of the untracked loan\\\"}}]},\\\"kind\\\":\\\"dev\\\",\\\"methods\\\":{\\\"borrowFromAaveV2Morpho(address,uint256)\\\":{\\\"params\\\":{\\\"aToken\\\":\\\"the aToken to borrow on Aave\\\",\\\"amountToBorrow\\\":\\\"the amount of `aTokenToBorrow` to borrow on Morpho.\\\"}},\\\"identifier()\\\":{\\\"details\\\":\\\"Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this Identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult.\\\"},\\\"repayAaveV2MorphoDebt(address,uint256)\\\":{\\\"params\\\":{\\\"aToken\\\":\\\"the aToken you want to repay.\\\",\\\"amountToRepay\\\":\\\"the amount of `tokenToRepay` to repay with.\\\"}},\\\"revokeApproval(address,address)\\\":{\\\"params\\\":{\\\"asset\\\":\\\"the ERC20 asset to revoke `spender`s approval for\\\",\\\"spender\\\":\\\"the address to revoke approval for\\\"}}},\\\"title\\\":\\\"Morpho Aave V2 debtToken Adaptor\\\",\\\"version\\\":1},\\\"userdoc\\\":{\\\"errors\\\":{\\\"BaseAdaptor__ConstructorHealthFactorTooLow()\\\":[{\\\"notice\\\":\\\"Attempted to set a constructor minimum health factor to a value below `MINIMUM_CONSTRUCTOR_HEALTH_FACTOR()`.\\\"}],\\\"BaseAdaptor__ExternalReceiverBlocked()\\\":[{\\\"notice\\\":\\\"Attempted to specify an external receiver during a Cellar `callOnAdaptor` call.\\\"}],\\\"BaseAdaptor__PricingNotSupported(address)\\\":[{\\\"notice\\\":\\\"Attempted swap used unsupported output asset.\\\"}],\\\"BaseAdaptor__Slippage()\\\":[{\\\"notice\\\":\\\"Attempted swap has bad slippage.\\\"}],\\\"BaseAdaptor__UserDepositsNotAllowed()\\\":[{\\\"notice\\\":\\\"Attempted to deposit to a position where user deposits were not allowed.\\\"}],\\\"BaseAdaptor__UserWithdrawsNotAllowed()\\\":[{\\\"notice\\\":\\\"Attempted to withdraw from a position where user withdraws were not allowed.\\\"}],\\\"MorphoAaveV2DebtTokenAdaptor__DebtPositionsMustBeTracked(address)\\\":[{\\\"notice\\\":\\\"Strategist attempted to open an untracked Morpho loan.\\\"}],\\\"MorphoAaveV2DebtTokenAdaptor__HealthFactorTooLow()\\\":[{\\\"notice\\\":\\\"Attempted borrow would lower Cellar health factor too low.\\\"}]},\\\"kind\\\":\\\"user\\\",\\\"methods\\\":{\\\"assetOf(bytes)\\\":{\\\"notice\\\":\\\"Returns the positions aToken underlying asset.\\\"},\\\"assetsUsed(bytes)\\\":{\\\"notice\\\":\\\"When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup.\\\"},\\\"balanceOf(bytes)\\\":{\\\"notice\\\":\\\"Returns the cellars balance of the positions debtToken.\\\"},\\\"borrowFromAaveV2Morpho(address,uint256)\\\":{\\\"notice\\\":\\\"Allows strategists to borrow assets from Aave.`aToken` must be the aToken not the debtToken.\\\"},\\\"deposit(uint256,bytes,bytes)\\\":{\\\"notice\\\":\\\"User deposits are NOT allowed into this position.\\\"},\\\"isDebt()\\\":{\\\"notice\\\":\\\"This adaptor reports values in terms of debt.\\\"},\\\"minimumHealthFactor()\\\":{\\\"notice\\\":\\\"Minimum Health Factor enforced after every borrow.Overwrites strategist set minimums if they are lower.\\\"},\\\"morpho()\\\":{\\\"notice\\\":\\\"The Morpho Aave V2 contract on current network.For mainnet use 0x777777c9898D384F785Ee44Acfe945efDFf5f3E0.\\\"},\\\"morphoLens()\\\":{\\\"notice\\\":\\\"The Morpho Aave V2 Lens contract on current network.For mainnet use 0x507fA343d0A90786d86C7cd885f5C49263A91FF4.\\\"},\\\"repayAaveV2MorphoDebt(address,uint256)\\\":{\\\"notice\\\":\\\"Allows strategists to repay loan debt on Aave.\\\"},\\\"revokeApproval(address,address)\\\":{\\\"notice\\\":\\\"Allows strategists to zero out an approval for a given `asset`.\\\"},\\\"slippage()\\\":{\\\"notice\\\":\\\"Max possible slippage when making a swap router swap.\\\"},\\\"withdraw(uint256,address,bytes,bytes)\\\":{\\\"notice\\\":\\\"User withdraws are NOT allowed from this position.\\\"},\\\"withdrawableFrom(bytes,bytes)\\\":{\\\"notice\\\":\\\"This position is a debt position, and user withdraws are not allowed so this position must return 0 for withdrawableFrom.\\\"}},\\\"notice\\\":\\\"Allows Cellars to interact with Morpho Aave V2 debtToken positions.\\\",\\\"version\\\":1}},\\\"settings\\\":{\\\"compilationTarget\\\":{\\\"src/modules/adaptors/Morpho/MorphoAaveV2DebtTokenAdaptor.sol\\\":\\\"MorphoAaveV2DebtTokenAdaptor\\\"},\\\"evmVersion\\\":\\\"london\\\",\\\"libraries\\\":{},\\\"metadata\\\":{\\\"bytecodeHash\\\":\\\"ipfs\\\"},\\\"optimizer\\\":{\\\"enabled\\\":true,\\\"runs\\\":200},\\\"remappings\\\":[\\\":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/\\\",\\\":@balancer/=lib/balancer-v2-monorepo/pkg/\\\",\\\":@chainlink/=lib/chainlink/\\\",\\\":@ds-test/=lib/forge-std/lib/ds-test/src/\\\",\\\":@ensdomains/=node_modules/@ensdomains/\\\",\\\":@forge-std/=lib/forge-std/src/\\\",\\\":@openzeppelin/=lib/openzeppelin-contracts/\\\",\\\":@solmate/=lib/solmate/src/\\\",\\\":@uniswap/v3-core/=lib/v3-core/\\\",\\\":@uniswap/v3-periphery/=lib/v3-periphery/\\\",\\\":@uniswapV3C/=lib/v3-core/contracts/\\\",\\\":@uniswapV3P/=lib/v3-periphery/contracts/\\\",\\\":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/\\\",\\\":balancer-v2-monorepo/=lib/balancer-v2-monorepo/\\\",\\\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\\\",\\\":compound-protocol/=lib/compound-protocol/\\\",\\\":ds-test/=lib/forge-std/lib/ds-test/src/\\\",\\\":eth-gas-reporter/=node_modules/eth-gas-reporter/\\\",\\\":forge-std/=lib/forge-std/src/\\\",\\\":hardhat/=node_modules/hardhat/\\\",\\\":openzeppelin-contracts/=lib/openzeppelin-contracts/\\\",\\\":solmate/=lib/solmate/src/\\\",\\\":v3-core.git/=lib/v3-core.git/contracts/\\\",\\\":v3-core/=lib/v3-core/contracts/\\\",\\\":v3-periphery.git/=lib/v3-periphery.git/contracts/\\\",\\\":v3-periphery/=lib/v3-periphery/contracts/\\\"]},\\\"sources\\\":{\\\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\\\":{\\\"keccak256\\\":\\\"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\\\",\\\"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\\\"]},\\\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\\\":{\\\"keccak256\\\":\\\"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\\\",\\\"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\\\"]},\\\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\\\":{\\\"keccak256\\\":\\\"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\\\",\\\"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\\\"]},\\\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\\\":{\\\"keccak256\\\":\\\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\\\",\\\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\\\"]},\\\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\\\":{\\\"keccak256\\\":\\\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\\\",\\\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\\\"]},\\\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\\\":{\\\"keccak256\\\":\\\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\\\",\\\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\\\"]},\\\"lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol\\\":{\\\"keccak256\\\":\\\"0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf\\\",\\\"dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e\\\"]},\\\"lib/openzeppelin-contracts/contracts/utils/Address.sol\\\":{\\\"keccak256\\\":\\\"0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de\\\",\\\"dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V\\\"]},\\\"lib/openzeppelin-contracts/contracts/utils/Context.sol\\\":{\\\"keccak256\\\":\\\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\\\",\\\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\\\"]},\\\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\\\":{\\\"keccak256\\\":\\\"0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929\\\",\\\"dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg\\\"]},\\\"lib/solmate/src/auth/Owned.sol\\\":{\\\"keccak256\\\":\\\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\\\",\\\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\\\"]},\\\"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\\\":{\\\"keccak256\\\":\\\"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\\\",\\\"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\\\":{\\\"keccak256\\\":\\\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\\\",\\\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\\\":{\\\"keccak256\\\":\\\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\\\",\\\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\\\":{\\\"keccak256\\\":\\\"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\\\",\\\"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\\\":{\\\"keccak256\\\":\\\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\\\",\\\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\\\":{\\\"keccak256\\\":\\\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\\\",\\\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\\\":{\\\"keccak256\\\":\\\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\\\",\\\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\\\":{\\\"keccak256\\\":\\\"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\\\",\\\"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\\\"]},\\\"lib/v3-core/contracts/libraries/FullMath.sol\\\":{\\\"keccak256\\\":\\\"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\\\",\\\"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\\\"]},\\\"lib/v3-core/contracts/libraries/TickMath.sol\\\":{\\\"keccak256\\\":\\\"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\\\",\\\"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\\\"]},\\\"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\\\":{\\\"keccak256\\\":\\\"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\\\",\\\"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\\\"]},\\\"src/Registry.sol\\\":{\\\"keccak256\\\":\\\"0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189\\\",\\\"dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK\\\"]},\\\"src/base/Cellar.sol\\\":{\\\"keccak256\\\":\\\"0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058\\\",\\\"dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs\\\"]},\\\"src/base/ERC20.sol\\\":{\\\"keccak256\\\":\\\"0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4\\\",\\\"dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf\\\"]},\\\"src/base/ERC4626.sol\\\":{\\\"keccak256\\\":\\\"0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469\\\",\\\"dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE\\\"]},\\\"src/base/Multicall.sol\\\":{\\\"keccak256\\\":\\\"0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c\\\",\\\"dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K\\\"]},\\\"src/base/SafeTransferLib.sol\\\":{\\\"keccak256\\\":\\\"0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a\\\",\\\"dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3\\\"]},\\\"src/interfaces/IMulticall.sol\\\":{\\\"keccak256\\\":\\\"0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0\\\",\\\"dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5\\\"]},\\\"src/interfaces/external/IAaveToken.sol\\\":{\\\"keccak256\\\":\\\"0x77cd64637e4c0fd379b2d4d826bcd9f64fc706a291ce77d023f693d1eb8e45d8\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://e87630603401ff3374cb610b765e46a3a235ef294fab212cf3116a35db7c4d58\\\",\\\"dweb:/ipfs/Qma8awSuYptmpBsWUMz9NZBogVRtVQwXF5cvfsVWpNKhc3\\\"]},\\\"src/interfaces/external/IChainlinkAggregator.sol\\\":{\\\"keccak256\\\":\\\"0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2\\\",\\\"dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs\\\"]},\\\"src/interfaces/external/IGravity.sol\\\":{\\\"keccak256\\\":\\\"0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51\\\",\\\"dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c\\\"]},\\\"src/interfaces/external/IUniswapV2Router02.sol\\\":{\\\"keccak256\\\":\\\"0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a\\\",\\\"dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo\\\"]},\\\"src/interfaces/external/IUniswapV3Router.sol\\\":{\\\"keccak256\\\":\\\"0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd\\\",\\\"dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK\\\"]},\\\"src/interfaces/external/Morpho/IMorphoLensV2.sol\\\":{\\\"keccak256\\\":\\\"0xc9232e163c278ff37fe6a81cadc4af59ac41e31017f39366b21a1b4ed03eadf7\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://cc3be8463c92906e52d6fcffba065fd9777568003adfeef344e03d0654064e9b\\\",\\\"dweb:/ipfs/Qme8DZoU8xHEQMxCFnVCgZw4ZrybPyFd4Ji47Attb8xQqN\\\"]},\\\"src/interfaces/external/Morpho/IMorphoV2.sol\\\":{\\\"keccak256\\\":\\\"0x7ff7eb9e520c6ed3290af890a22c77c6ba6cd5f2394f258a2b34eb7f6af5ad66\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://709aa0c2a2d7ed82e09c2765462a851bfc17aab125f735e12bd5ee1ad9e7e21f\\\",\\\"dweb:/ipfs/QmWHZuwxwSu6J9crczNc8araaSLwZpbKDJKFUN2uj7AJq9\\\"]},\\\"src/interfaces/external/UniswapV3Pool.sol\\\":{\\\"keccak256\\\":\\\"0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb\\\",\\\"urls\\\":[\\\"bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9\\\",\\\"dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh\\\"]},\\\"src/modules/adaptors/BaseAdaptor.sol\\\":{\\\"keccak256\\\":\\\"0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee\\\",\\\"dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd\\\"]},\\\"src/modules/adaptors/Morpho/MorphoAaveV2DebtTokenAdaptor.sol\\\":{\\\"keccak256\\\":\\\"0x83f4793172f28c78d1ae9bc945ec6205c36a1e6e6389b1759b90074cc7ae5107\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://9792bc6513b3236c2f464b079f866826a2f75f76c52f6e9033ac5116f5ed5138\\\",\\\"dweb:/ipfs/QmVnET672V3wyBv5DjG8hpDQYqWoYGvc8TchWPWfiTBKnZ\\\"]},\\\"src/modules/price-router/Extensions/Extension.sol\\\":{\\\"keccak256\\\":\\\"0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1\\\",\\\"dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo\\\"]},\\\"src/modules/price-router/PriceRouter.sol\\\":{\\\"keccak256\\\":\\\"0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66\\\",\\\"dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K\\\"]},\\\"src/modules/swap-router/SwapRouter.sol\\\":{\\\"keccak256\\\":\\\"0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818\\\",\\\"dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr\\\"]},\\\"src/utils/Math.sol\\\":{\\\"keccak256\\\":\\\"0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312\\\",\\\"dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r\\\"]},\\\"src/utils/Uint32Array.sol\\\":{\\\"keccak256\\\":\\\"0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944\\\",\\\"dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3\\\"]}},\\\"version\\\":1}\",\n \"metadata\": {\n \"compiler\": {\n \"version\": \"0.8.16+commit.07a7930e\"\n },\n \"language\": \"Solidity\",\n \"output\": {\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_morpho\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"_morphoLens\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minHealthFactor\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__ConstructorHealthFactorTooLow\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__ExternalReceiverBlocked\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"asset\",\n \"type\": \"address\"\n }\n ],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__PricingNotSupported\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__Slippage\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__UserDepositsNotAllowed\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__UserWithdrawsNotAllowed\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"untrackedDebtPosition\",\n \"type\": \"address\"\n }\n ],\n \"type\": \"error\",\n \"name\": \"MorphoAaveV2DebtTokenAdaptor__DebtPositionsMustBeTracked\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"MorphoAaveV2DebtTokenAdaptor__HealthFactorTooLow\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"assetOf\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"assetsUsed\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20[]\",\n \"name\": \"assets\",\n \"type\": \"address[]\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"aToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountToBorrow\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"borrowFromAaveV2Morpho\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"deposit\"\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"identifier\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"isDebt\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"minimumHealthFactor\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"morpho\",\n \"outputs\": [\n {\n \"internalType\": \"contract IMorphoV2\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"morphoLens\",\n \"outputs\": [\n {\n \"internalType\": \"contract IMorphoLensV2\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract IAaveToken\",\n \"name\": \"aToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountToRepay\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"repayAaveV2MorphoDebt\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"asset\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"revokeApproval\"\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"slippage\",\n \"outputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"\",\n \"type\": \"uint32\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"withdraw\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"withdrawableFrom\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ]\n }\n ],\n \"devdoc\": {\n \"kind\": \"dev\",\n \"methods\": {\n \"borrowFromAaveV2Morpho(address,uint256)\": {\n \"params\": {\n \"aToken\": \"the aToken to borrow on Aave\",\n \"amountToBorrow\": \"the amount of `aTokenToBorrow` to borrow on Morpho.\"\n }\n },\n \"identifier()\": {\n \"details\": \"Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this Identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult.\"\n },\n \"repayAaveV2MorphoDebt(address,uint256)\": {\n \"params\": {\n \"aToken\": \"the aToken you want to repay.\",\n \"amountToRepay\": \"the amount of `tokenToRepay` to repay with.\"\n }\n },\n \"revokeApproval(address,address)\": {\n \"params\": {\n \"asset\": \"the ERC20 asset to revoke `spender`s approval for\",\n \"spender\": \"the address to revoke approval for\"\n }\n }\n },\n \"version\": 1\n },\n \"userdoc\": {\n \"kind\": \"user\",\n \"methods\": {\n \"assetOf(bytes)\": {\n \"notice\": \"Returns the positions aToken underlying asset.\"\n },\n \"assetsUsed(bytes)\": {\n \"notice\": \"When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup.\"\n },\n \"balanceOf(bytes)\": {\n \"notice\": \"Returns the cellars balance of the positions debtToken.\"\n },\n \"borrowFromAaveV2Morpho(address,uint256)\": {\n \"notice\": \"Allows strategists to borrow assets from Aave.`aToken` must be the aToken not the debtToken.\"\n },\n \"deposit(uint256,bytes,bytes)\": {\n \"notice\": \"User deposits are NOT allowed into this position.\"\n },\n \"isDebt()\": {\n \"notice\": \"This adaptor reports values in terms of debt.\"\n },\n \"minimumHealthFactor()\": {\n \"notice\": \"Minimum Health Factor enforced after every borrow.Overwrites strategist set minimums if they are lower.\"\n },\n \"morpho()\": {\n \"notice\": \"The Morpho Aave V2 contract on current network.For mainnet use 0x777777c9898D384F785Ee44Acfe945efDFf5f3E0.\"\n },\n \"morphoLens()\": {\n \"notice\": \"The Morpho Aave V2 Lens contract on current network.For mainnet use 0x507fA343d0A90786d86C7cd885f5C49263A91FF4.\"\n },\n \"repayAaveV2MorphoDebt(address,uint256)\": {\n \"notice\": \"Allows strategists to repay loan debt on Aave.\"\n },\n \"revokeApproval(address,address)\": {\n \"notice\": \"Allows strategists to zero out an approval for a given `asset`.\"\n },\n \"slippage()\": {\n \"notice\": \"Max possible slippage when making a swap router swap.\"\n },\n \"withdraw(uint256,address,bytes,bytes)\": {\n \"notice\": \"User withdraws are NOT allowed from this position.\"\n },\n \"withdrawableFrom(bytes,bytes)\": {\n \"notice\": \"This position is a debt position, and user withdraws are not allowed so this position must return 0 for withdrawableFrom.\"\n }\n },\n \"version\": 1\n }\n },\n \"settings\": {\n \"remappings\": [\n \":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/\",\n \":@balancer/=lib/balancer-v2-monorepo/pkg/\",\n \":@chainlink/=lib/chainlink/\",\n \":@ds-test/=lib/forge-std/lib/ds-test/src/\",\n \":@ensdomains/=node_modules/@ensdomains/\",\n \":@forge-std/=lib/forge-std/src/\",\n \":@openzeppelin/=lib/openzeppelin-contracts/\",\n \":@solmate/=lib/solmate/src/\",\n \":@uniswap/v3-core/=lib/v3-core/\",\n \":@uniswap/v3-periphery/=lib/v3-periphery/\",\n \":@uniswapV3C/=lib/v3-core/contracts/\",\n \":@uniswapV3P/=lib/v3-periphery/contracts/\",\n \":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/\",\n \":balancer-v2-monorepo/=lib/balancer-v2-monorepo/\",\n \":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\n \":compound-protocol/=lib/compound-protocol/\",\n \":ds-test/=lib/forge-std/lib/ds-test/src/\",\n \":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\n \":forge-std/=lib/forge-std/src/\",\n \":hardhat/=node_modules/hardhat/\",\n \":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\n \":solmate/=lib/solmate/src/\",\n \":v3-core.git/=lib/v3-core.git/contracts/\",\n \":v3-core/=lib/v3-core/contracts/\",\n \":v3-periphery.git/=lib/v3-periphery.git/contracts/\",\n \":v3-periphery/=lib/v3-periphery/contracts/\"\n ],\n \"optimizer\": {\n \"enabled\": true,\n \"runs\": 200\n },\n \"metadata\": {\n \"bytecodeHash\": \"ipfs\"\n },\n \"compilationTarget\": {\n \"src/modules/adaptors/Morpho/MorphoAaveV2DebtTokenAdaptor.sol\": \"MorphoAaveV2DebtTokenAdaptor\"\n },\n \"libraries\": {}\n },\n \"sources\": {\n \"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\": {\n \"keccak256\": \"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\",\n \"urls\": [\n \"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\",\n \"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\": {\n \"keccak256\": \"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\",\n \"urls\": [\n \"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\",\n \"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\": {\n \"keccak256\": \"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\",\n \"urls\": [\n \"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\",\n \"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\": {\n \"keccak256\": \"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\n \"urls\": [\n \"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\n \"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\": {\n \"keccak256\": \"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\n \"urls\": [\n \"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\n \"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\": {\n \"keccak256\": \"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\n \"urls\": [\n \"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\n \"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol\": {\n \"keccak256\": \"0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028\",\n \"urls\": [\n \"bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf\",\n \"dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/utils/Address.sol\": {\n \"keccak256\": \"0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700\",\n \"urls\": [\n \"bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de\",\n \"dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/utils/Context.sol\": {\n \"keccak256\": \"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\n \"urls\": [\n \"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\n \"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\": {\n \"keccak256\": \"0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb\",\n \"urls\": [\n \"bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929\",\n \"dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/solmate/src/auth/Owned.sol\": {\n \"keccak256\": \"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\n \"urls\": [\n \"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\n \"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\": {\n \"keccak256\": \"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\",\n \"urls\": [\n \"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\",\n \"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\": {\n \"keccak256\": \"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\n \"urls\": [\n \"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\n \"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\": {\n \"keccak256\": \"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\n \"urls\": [\n \"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\n \"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\": {\n \"keccak256\": \"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\",\n \"urls\": [\n \"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\",\n \"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\": {\n \"keccak256\": \"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\n \"urls\": [\n \"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\n \"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\": {\n \"keccak256\": \"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\n \"urls\": [\n \"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\n \"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\": {\n \"keccak256\": \"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\n \"urls\": [\n \"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\n \"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\": {\n \"keccak256\": \"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\",\n \"urls\": [\n \"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\",\n \"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/libraries/FullMath.sol\": {\n \"keccak256\": \"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\",\n \"urls\": [\n \"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\",\n \"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/v3-core/contracts/libraries/TickMath.sol\": {\n \"keccak256\": \"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\",\n \"urls\": [\n \"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\",\n \"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\": {\n \"keccak256\": \"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\",\n \"urls\": [\n \"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\",\n \"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/Registry.sol\": {\n \"keccak256\": \"0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47\",\n \"urls\": [\n \"bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189\",\n \"dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/base/Cellar.sol\": {\n \"keccak256\": \"0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47\",\n \"urls\": [\n \"bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058\",\n \"dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/base/ERC20.sol\": {\n \"keccak256\": \"0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02\",\n \"urls\": [\n \"bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4\",\n \"dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"src/base/ERC4626.sol\": {\n \"keccak256\": \"0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7\",\n \"urls\": [\n \"bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469\",\n \"dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"src/base/Multicall.sol\": {\n \"keccak256\": \"0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9\",\n \"urls\": [\n \"bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c\",\n \"dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/base/SafeTransferLib.sol\": {\n \"keccak256\": \"0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324\",\n \"urls\": [\n \"bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a\",\n \"dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"src/interfaces/IMulticall.sol\": {\n \"keccak256\": \"0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e\",\n \"urls\": [\n \"bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0\",\n \"dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/interfaces/external/IAaveToken.sol\": {\n \"keccak256\": \"0x77cd64637e4c0fd379b2d4d826bcd9f64fc706a291ce77d023f693d1eb8e45d8\",\n \"urls\": [\n \"bzz-raw://e87630603401ff3374cb610b765e46a3a235ef294fab212cf3116a35db7c4d58\",\n \"dweb:/ipfs/Qma8awSuYptmpBsWUMz9NZBogVRtVQwXF5cvfsVWpNKhc3\"\n ],\n \"license\": \"MIT\"\n },\n \"src/interfaces/external/IChainlinkAggregator.sol\": {\n \"keccak256\": \"0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d\",\n \"urls\": [\n \"bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2\",\n \"dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/IGravity.sol\": {\n \"keccak256\": \"0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11\",\n \"urls\": [\n \"bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51\",\n \"dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/IUniswapV2Router02.sol\": {\n \"keccak256\": \"0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f\",\n \"urls\": [\n \"bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a\",\n \"dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/IUniswapV3Router.sol\": {\n \"keccak256\": \"0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355\",\n \"urls\": [\n \"bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd\",\n \"dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/interfaces/external/Morpho/IMorphoLensV2.sol\": {\n \"keccak256\": \"0xc9232e163c278ff37fe6a81cadc4af59ac41e31017f39366b21a1b4ed03eadf7\",\n \"urls\": [\n \"bzz-raw://cc3be8463c92906e52d6fcffba065fd9777568003adfeef344e03d0654064e9b\",\n \"dweb:/ipfs/Qme8DZoU8xHEQMxCFnVCgZw4ZrybPyFd4Ji47Attb8xQqN\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/Morpho/IMorphoV2.sol\": {\n \"keccak256\": \"0x7ff7eb9e520c6ed3290af890a22c77c6ba6cd5f2394f258a2b34eb7f6af5ad66\",\n \"urls\": [\n \"bzz-raw://709aa0c2a2d7ed82e09c2765462a851bfc17aab125f735e12bd5ee1ad9e7e21f\",\n \"dweb:/ipfs/QmWHZuwxwSu6J9crczNc8araaSLwZpbKDJKFUN2uj7AJq9\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/UniswapV3Pool.sol\": {\n \"keccak256\": \"0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb\",\n \"urls\": [\n \"bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9\",\n \"dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh\"\n ],\n \"license\": null\n },\n \"src/modules/adaptors/BaseAdaptor.sol\": {\n \"keccak256\": \"0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c\",\n \"urls\": [\n \"bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee\",\n \"dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/adaptors/Morpho/MorphoAaveV2DebtTokenAdaptor.sol\": {\n \"keccak256\": \"0x83f4793172f28c78d1ae9bc945ec6205c36a1e6e6389b1759b90074cc7ae5107\",\n \"urls\": [\n \"bzz-raw://9792bc6513b3236c2f464b079f866826a2f75f76c52f6e9033ac5116f5ed5138\",\n \"dweb:/ipfs/QmVnET672V3wyBv5DjG8hpDQYqWoYGvc8TchWPWfiTBKnZ\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/price-router/Extensions/Extension.sol\": {\n \"keccak256\": \"0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d\",\n \"urls\": [\n \"bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1\",\n \"dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/price-router/PriceRouter.sol\": {\n \"keccak256\": \"0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9\",\n \"urls\": [\n \"bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66\",\n \"dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/swap-router/SwapRouter.sol\": {\n \"keccak256\": \"0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80\",\n \"urls\": [\n \"bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818\",\n \"dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/utils/Math.sol\": {\n \"keccak256\": \"0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f\",\n \"urls\": [\n \"bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312\",\n \"dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/utils/Uint32Array.sol\": {\n \"keccak256\": \"0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9\",\n \"urls\": [\n \"bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944\",\n \"dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3\"\n ],\n \"license\": \"Apache-2.0\"\n }\n },\n \"version\": 1\n },\n \"ast\": {\n \"absolutePath\": \"src/modules/adaptors/Morpho/MorphoAaveV2DebtTokenAdaptor.sol\",\n \"id\": 65498,\n \"exportedSymbols\": {\n \"BaseAdaptor\": [\n 61644\n ],\n \"Cellar\": [\n 44434\n ],\n \"ERC20\": [\n 45747\n ],\n \"IAaveToken\": [\n 49523\n ],\n \"IMorphoLensV2\": [\n 53305\n ],\n \"IMorphoV2\": [\n 53396\n ],\n \"Math\": [\n 74811\n ],\n \"MorphoAaveV2DebtTokenAdaptor\": [\n 65497\n ],\n \"Registry\": [\n 41024\n ],\n \"SafeTransferLib\": [\n 46498\n ]\n },\n \"nodeType\": \"SourceUnit\",\n \"src\": \"39:7053:198\",\n \"nodes\": [\n {\n \"id\": 65119,\n \"nodeType\": \"PragmaDirective\",\n \"src\": \"39:23:198\",\n \"nodes\": [],\n \"literals\": [\n \"solidity\",\n \"0.8\",\n \".16\"\n ]\n },\n {\n \"id\": 65126,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"64:115:198\",\n \"nodes\": [],\n \"absolutePath\": \"src/modules/adaptors/BaseAdaptor.sol\",\n \"file\": \"src/modules/adaptors/BaseAdaptor.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 65498,\n \"sourceUnit\": 61645,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 65120,\n \"name\": \"BaseAdaptor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61644,\n \"src\": \"73:11:198\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 65121,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 45747,\n \"src\": \"86:5:198\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 65122,\n \"name\": \"SafeTransferLib\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 46498,\n \"src\": \"93:15:198\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 65123,\n \"name\": \"Cellar\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 44434,\n \"src\": \"110:6:198\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 65124,\n \"name\": \"Registry\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 41024,\n \"src\": \"118:8:198\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 65125,\n \"name\": \"Math\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 74811,\n \"src\": \"128:4:198\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 65128,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"180:73:198\",\n \"nodes\": [],\n \"absolutePath\": \"src/interfaces/external/Morpho/IMorphoV2.sol\",\n \"file\": \"src/interfaces/external/Morpho/IMorphoV2.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 65498,\n \"sourceUnit\": 53397,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 65127,\n \"name\": \"IMorphoV2\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53396,\n \"src\": \"189:9:198\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 65130,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"254:81:198\",\n \"nodes\": [],\n \"absolutePath\": \"src/interfaces/external/Morpho/IMorphoLensV2.sol\",\n \"file\": \"src/interfaces/external/Morpho/IMorphoLensV2.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 65498,\n \"sourceUnit\": 53306,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 65129,\n \"name\": \"IMorphoLensV2\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53305,\n \"src\": \"263:13:198\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 65132,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"336:68:198\",\n \"nodes\": [],\n \"absolutePath\": \"src/interfaces/external/IAaveToken.sol\",\n \"file\": \"src/interfaces/external/IAaveToken.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 65498,\n \"sourceUnit\": 49524,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 65131,\n \"name\": \"IAaveToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 49523,\n \"src\": \"345:10:198\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 65497,\n \"nodeType\": \"ContractDefinition\",\n \"src\": \"561:6530:198\",\n \"nodes\": [\n {\n \"id\": 65139,\n \"nodeType\": \"UsingForDirective\",\n \"src\": \"620:32:198\",\n \"nodes\": [],\n \"global\": false,\n \"libraryName\": {\n \"id\": 65136,\n \"name\": \"SafeTransferLib\",\n \"nameLocations\": [\n \"626:15:198\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 46498,\n \"src\": \"626:15:198\"\n },\n \"typeName\": {\n \"id\": 65138,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 65137,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"646:5:198\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"646:5:198\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"646:5:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n }\n },\n {\n \"id\": 65142,\n \"nodeType\": \"UsingForDirective\",\n \"src\": \"657:23:198\",\n \"nodes\": [],\n \"global\": false,\n \"libraryName\": {\n \"id\": 65140,\n \"name\": \"Math\",\n \"nameLocations\": [\n \"663:4:198\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 74811,\n \"src\": \"663:4:198\"\n },\n \"typeName\": {\n \"id\": 65141,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"672:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n },\n {\n \"id\": 65147,\n \"nodeType\": \"ErrorDefinition\",\n \"src\": \"1223:94:198\",\n \"nodes\": [],\n \"documentation\": {\n \"id\": 65143,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"1067:151:198\",\n \"text\": \" @notice Strategist attempted to open an untracked Morpho loan.\\n @param untrackedDebtPosition the address of the untracked loan\"\n },\n \"errorSelector\": \"17b06aa5\",\n \"name\": \"MorphoAaveV2DebtTokenAdaptor__DebtPositionsMustBeTracked\",\n \"nameLocation\": \"1229:56:198\",\n \"parameters\": {\n \"id\": 65146,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65145,\n \"mutability\": \"mutable\",\n \"name\": \"untrackedDebtPosition\",\n \"nameLocation\": \"1294:21:198\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65147,\n \"src\": \"1286:29:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 65144,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1286:7:198\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"1285:31:198\"\n }\n },\n {\n \"id\": 65150,\n \"nodeType\": \"ErrorDefinition\",\n \"src\": \"1411:57:198\",\n \"nodes\": [],\n \"documentation\": {\n \"id\": 65148,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"1323:83:198\",\n \"text\": \"@notice Attempted borrow would lower Cellar health factor too low.\"\n },\n \"errorSelector\": \"da06da9c\",\n \"name\": \"MorphoAaveV2DebtTokenAdaptor__HealthFactorTooLow\",\n \"nameLocation\": \"1417:48:198\",\n \"parameters\": {\n \"id\": 65149,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"1465:2:198\"\n }\n },\n {\n \"id\": 65154,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"1628:33:198\",\n \"nodes\": [],\n \"constant\": false,\n \"documentation\": {\n \"id\": 65151,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"1474:149:198\",\n \"text\": \" @notice The Morpho Aave V2 contract on current network.\\n @notice For mainnet use 0x777777c9898D384F785Ee44Acfe945efDFf5f3E0.\"\n },\n \"functionSelector\": \"d8fbc833\",\n \"mutability\": \"immutable\",\n \"name\": \"morpho\",\n \"nameLocation\": \"1655:6:198\",\n \"scope\": 65497,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n },\n \"typeName\": {\n \"id\": 65153,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 65152,\n \"name\": \"IMorphoV2\",\n \"nameLocations\": [\n \"1628:9:198\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 53396,\n \"src\": \"1628:9:198\"\n },\n \"referencedDeclaration\": 53396,\n \"src\": \"1628:9:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n },\n \"visibility\": \"public\"\n },\n {\n \"id\": 65158,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"1827:41:198\",\n \"nodes\": [],\n \"constant\": false,\n \"documentation\": {\n \"id\": 65155,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"1668:154:198\",\n \"text\": \" @notice The Morpho Aave V2 Lens contract on current network.\\n @notice For mainnet use 0x507fA343d0A90786d86C7cd885f5C49263A91FF4.\"\n },\n \"functionSelector\": \"425734d3\",\n \"mutability\": \"immutable\",\n \"name\": \"morphoLens\",\n \"nameLocation\": \"1858:10:198\",\n \"scope\": 65497,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoLensV2_$53305\",\n \"typeString\": \"contract IMorphoLensV2\"\n },\n \"typeName\": {\n \"id\": 65157,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 65156,\n \"name\": \"IMorphoLensV2\",\n \"nameLocations\": [\n \"1827:13:198\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 53305,\n \"src\": \"1827:13:198\"\n },\n \"referencedDeclaration\": 53305,\n \"src\": \"1827:13:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoLensV2_$53305\",\n \"typeString\": \"contract IMorphoLensV2\"\n }\n },\n \"visibility\": \"public\"\n },\n {\n \"id\": 65161,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"2026:44:198\",\n \"nodes\": [],\n \"constant\": false,\n \"documentation\": {\n \"id\": 65159,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"1875:146:198\",\n \"text\": \" @notice Minimum Health Factor enforced after every borrow.\\n @notice Overwrites strategist set minimums if they are lower.\"\n },\n \"functionSelector\": \"1caff8b1\",\n \"mutability\": \"immutable\",\n \"name\": \"minimumHealthFactor\",\n \"nameLocation\": \"2051:19:198\",\n \"scope\": 65497,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65160,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2026:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"public\"\n },\n {\n \"id\": 65191,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"2077:279:198\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65190,\n \"nodeType\": \"Block\",\n \"src\": \"2152:204:198\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 65171,\n \"name\": \"minHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65167,\n \"src\": \"2200:15:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"id\": 65170,\n \"name\": \"_verifyConstructorMinimumHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61626,\n \"src\": \"2162:37:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_pure$_t_uint256_$returns$__$\",\n \"typeString\": \"function (uint256) pure\"\n }\n },\n \"id\": 65172,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"2162:54:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 65173,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"2162:54:198\"\n },\n {\n \"expression\": {\n \"id\": 65178,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 65174,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65154,\n \"src\": \"2226:6:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"id\": 65176,\n \"name\": \"_morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65163,\n \"src\": \"2245:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 65175,\n \"name\": \"IMorphoV2\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53396,\n \"src\": \"2235:9:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IMorphoV2_$53396_$\",\n \"typeString\": \"type(contract IMorphoV2)\"\n }\n },\n \"id\": 65177,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"2235:18:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n },\n \"src\": \"2226:27:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n },\n \"id\": 65179,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"2226:27:198\"\n },\n {\n \"expression\": {\n \"id\": 65184,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 65180,\n \"name\": \"morphoLens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65158,\n \"src\": \"2263:10:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoLensV2_$53305\",\n \"typeString\": \"contract IMorphoLensV2\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"id\": 65182,\n \"name\": \"_morphoLens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65165,\n \"src\": \"2290:11:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 65181,\n \"name\": \"IMorphoLensV2\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53305,\n \"src\": \"2276:13:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IMorphoLensV2_$53305_$\",\n \"typeString\": \"type(contract IMorphoLensV2)\"\n }\n },\n \"id\": 65183,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"2276:26:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoLensV2_$53305\",\n \"typeString\": \"contract IMorphoLensV2\"\n }\n },\n \"src\": \"2263:39:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoLensV2_$53305\",\n \"typeString\": \"contract IMorphoLensV2\"\n }\n },\n \"id\": 65185,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"2263:39:198\"\n },\n {\n \"expression\": {\n \"id\": 65188,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 65186,\n \"name\": \"minimumHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65161,\n \"src\": \"2312:19:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"id\": 65187,\n \"name\": \"minHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65167,\n \"src\": \"2334:15:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"2312:37:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 65189,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"2312:37:198\"\n }\n ]\n },\n \"implemented\": true,\n \"kind\": \"constructor\",\n \"modifiers\": [],\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"parameters\": {\n \"id\": 65168,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65163,\n \"mutability\": \"mutable\",\n \"name\": \"_morpho\",\n \"nameLocation\": \"2097:7:198\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65191,\n \"src\": \"2089:15:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 65162,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2089:7:198\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65165,\n \"mutability\": \"mutable\",\n \"name\": \"_morphoLens\",\n \"nameLocation\": \"2114:11:198\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65191,\n \"src\": \"2106:19:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 65164,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2106:7:198\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65167,\n \"mutability\": \"mutable\",\n \"name\": \"minHealthFactor\",\n \"nameLocation\": \"2135:15:198\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65191,\n \"src\": \"2127:23:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65166,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2127:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"2088:63:198\"\n },\n \"returnParameters\": {\n \"id\": 65169,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"2152:0:198\"\n },\n \"scope\": 65497,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65206,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"2775:148:198\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65205,\n \"nodeType\": \"Block\",\n \"src\": \"2836:87:198\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"hexValue\": \"4d6f7270686f20416176652056322064656274546f6b656e2041646170746f72205620312e31\",\n \"id\": 65201,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"string\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"2874:40:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_stringliteral_938a5f7ba08ad2b54d69d6b1a56cd911cb792f077d93cab74dcd22e2a3ed3f7c\",\n \"typeString\": \"literal_string \\\"Morpho Aave V2 debtToken Adaptor V 1.1\\\"\"\n },\n \"value\": \"Morpho Aave V2 debtToken Adaptor V 1.1\"\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_stringliteral_938a5f7ba08ad2b54d69d6b1a56cd911cb792f077d93cab74dcd22e2a3ed3f7c\",\n \"typeString\": \"literal_string \\\"Morpho Aave V2 debtToken Adaptor V 1.1\\\"\"\n }\n ],\n \"expression\": {\n \"id\": 65199,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"2863:3:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 65200,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"2867:6:198\",\n \"memberName\": \"encode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"2863:10:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$\",\n \"typeString\": \"function () pure returns (bytes memory)\"\n }\n },\n \"id\": 65202,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"2863:52:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n ],\n \"id\": 65198,\n \"name\": \"keccak256\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -8,\n \"src\": \"2853:9:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$\",\n \"typeString\": \"function (bytes memory) pure returns (bytes32)\"\n }\n },\n \"id\": 65203,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"2853:63:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"functionReturnParameters\": 65197,\n \"id\": 65204,\n \"nodeType\": \"Return\",\n \"src\": \"2846:70:198\"\n }\n ]\n },\n \"baseFunctions\": [\n 61410\n ],\n \"documentation\": {\n \"id\": 65192,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"2474:296:198\",\n \"text\": \" @dev Identifier unique to this adaptor for a shared registry.\\n Normally the identifier would just be the address of this contract, but this\\n Identifier is needed during Cellar Delegate Call Operations, so getting the address\\n of the adaptor is more difficult.\"\n },\n \"functionSelector\": \"7998a1c4\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"identifier\",\n \"nameLocation\": \"2784:10:198\",\n \"overrides\": {\n \"id\": 65194,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"2809:8:198\"\n },\n \"parameters\": {\n \"id\": 65193,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"2794:2:198\"\n },\n \"returnParameters\": {\n \"id\": 65197,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65196,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65206,\n \"src\": \"2827:7:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n \"typeName\": {\n \"id\": 65195,\n \"name\": \"bytes32\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2827:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"2826:9:198\"\n },\n \"scope\": 65497,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65221,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"3131:136:198\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65220,\n \"nodeType\": \"Block\",\n \"src\": \"3206:61:198\",\n \"nodes\": [],\n \"statements\": [\n {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 65217,\n \"name\": \"BaseAdaptor__UserDepositsNotAllowed\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61382,\n \"src\": \"3223:35:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 65218,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3223:37:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 65219,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"3216:44:198\"\n }\n ]\n },\n \"baseFunctions\": [\n 61454\n ],\n \"documentation\": {\n \"id\": 65207,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"3050:76:198\",\n \"text\": \" @notice User deposits are NOT allowed into this position.\"\n },\n \"functionSelector\": \"69445c31\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"deposit\",\n \"nameLocation\": \"3140:7:198\",\n \"overrides\": {\n \"id\": 65215,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"3197:8:198\"\n },\n \"parameters\": {\n \"id\": 65214,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65209,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65221,\n \"src\": \"3148:7:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65208,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3148:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65211,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65221,\n \"src\": \"3157:12:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 65210,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3157:5:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65213,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65221,\n \"src\": \"3171:12:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 65212,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3171:5:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"3147:37:198\"\n },\n \"returnParameters\": {\n \"id\": 65216,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"3206:0:198\"\n },\n \"scope\": 65497,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65238,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"3355:147:198\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65237,\n \"nodeType\": \"Block\",\n \"src\": \"3440:62:198\",\n \"nodes\": [],\n \"statements\": [\n {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 65234,\n \"name\": \"BaseAdaptor__UserWithdrawsNotAllowed\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61385,\n \"src\": \"3457:36:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 65235,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3457:38:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 65236,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"3450:45:198\"\n }\n ]\n },\n \"baseFunctions\": [\n 61466\n ],\n \"documentation\": {\n \"id\": 65222,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"3273:77:198\",\n \"text\": \" @notice User withdraws are NOT allowed from this position.\"\n },\n \"functionSelector\": \"c9111bd7\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"withdraw\",\n \"nameLocation\": \"3364:8:198\",\n \"overrides\": {\n \"id\": 65232,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"3431:8:198\"\n },\n \"parameters\": {\n \"id\": 65231,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65224,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65238,\n \"src\": \"3373:7:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65223,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3373:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65226,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65238,\n \"src\": \"3382:7:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 65225,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3382:7:198\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65228,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65238,\n \"src\": \"3391:12:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 65227,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3391:5:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65230,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65238,\n \"src\": \"3405:12:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 65229,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3405:5:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"3372:46:198\"\n },\n \"returnParameters\": {\n \"id\": 65233,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"3440:0:198\"\n },\n \"scope\": 65497,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65252,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"3676:118:198\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65251,\n \"nodeType\": \"Block\",\n \"src\": \"3769:25:198\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"hexValue\": \"30\",\n \"id\": 65249,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"3786:1:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n },\n \"value\": \"0\"\n },\n \"functionReturnParameters\": 65248,\n \"id\": 65250,\n \"nodeType\": \"Return\",\n \"src\": \"3779:8:198\"\n }\n ]\n },\n \"baseFunctions\": [\n 61484\n ],\n \"documentation\": {\n \"id\": 65239,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"3508:163:198\",\n \"text\": \" @notice This position is a debt position, and user withdraws are not allowed so\\n this position must return 0 for withdrawableFrom.\"\n },\n \"functionSelector\": \"fa50e5d2\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"withdrawableFrom\",\n \"nameLocation\": \"3685:16:198\",\n \"overrides\": {\n \"id\": 65245,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"3742:8:198\"\n },\n \"parameters\": {\n \"id\": 65244,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65241,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65252,\n \"src\": \"3702:12:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 65240,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3702:5:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65243,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65252,\n \"src\": \"3716:12:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 65242,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3716:5:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"3701:28:198\"\n },\n \"returnParameters\": {\n \"id\": 65248,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65247,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65252,\n \"src\": \"3760:7:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65246,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3760:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"3759:9:198\"\n },\n \"scope\": 65497,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65278,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"3887:211:198\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65277,\n \"nodeType\": \"Block\",\n \"src\": \"3971:127:198\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 65262\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65262,\n \"mutability\": \"mutable\",\n \"name\": \"aToken\",\n \"nameLocation\": \"3989:6:198\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65277,\n \"src\": \"3981:14:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 65261,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3981:7:198\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65270,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 65265,\n \"name\": \"adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65255,\n \"src\": \"4009:11:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 65267,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"4023:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65266,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4023:7:198\",\n \"typeDescriptions\": {}\n }\n }\n ],\n \"id\": 65268,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"4022:9:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n ],\n \"expression\": {\n \"id\": 65263,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"3998:3:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 65264,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"4002:6:198\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"3998:10:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 65269,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3998:34:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address_payable\",\n \"typeString\": \"address payable\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"3981:51:198\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 65272,\n \"name\": \"aToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65262,\n \"src\": \"4072:6:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"expression\": {\n \"id\": 65273,\n \"name\": \"msg\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -15,\n \"src\": \"4080:3:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_message\",\n \"typeString\": \"msg\"\n }\n },\n \"id\": 65274,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"4084:6:198\",\n \"memberName\": \"sender\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"4080:10:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 65271,\n \"name\": \"_balanceOfInUnderlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65496,\n \"src\": \"4049:22:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address,address) view returns (uint256)\"\n }\n },\n \"id\": 65275,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4049:42:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"functionReturnParameters\": 65260,\n \"id\": 65276,\n \"nodeType\": \"Return\",\n \"src\": \"4042:49:198\"\n }\n ]\n },\n \"baseFunctions\": [\n 61474\n ],\n \"documentation\": {\n \"id\": 65253,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"3800:82:198\",\n \"text\": \" @notice Returns the cellars balance of the positions debtToken.\"\n },\n \"functionSelector\": \"78415365\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"balanceOf\",\n \"nameLocation\": \"3896:9:198\",\n \"overrides\": {\n \"id\": 65257,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"3944:8:198\"\n },\n \"parameters\": {\n \"id\": 65256,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65255,\n \"mutability\": \"mutable\",\n \"name\": \"adaptorData\",\n \"nameLocation\": \"3919:11:198\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65278,\n \"src\": \"3906:24:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 65254,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3906:5:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"3905:26:198\"\n },\n \"returnParameters\": {\n \"id\": 65260,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65259,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65278,\n \"src\": \"3962:7:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65258,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3962:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"3961:9:198\"\n },\n \"scope\": 65497,\n \"stateMutability\": \"view\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65305,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"4182:211:198\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65304,\n \"nodeType\": \"Block\",\n \"src\": \"4262:131:198\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 65290\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65290,\n \"mutability\": \"mutable\",\n \"name\": \"aToken\",\n \"nameLocation\": \"4283:6:198\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65304,\n \"src\": \"4272:17:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n },\n \"typeName\": {\n \"id\": 65289,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 65288,\n \"name\": \"IAaveToken\",\n \"nameLocations\": [\n \"4272:10:198\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 49523,\n \"src\": \"4272:10:198\"\n },\n \"referencedDeclaration\": 49523,\n \"src\": \"4272:10:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65297,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 65293,\n \"name\": \"adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65281,\n \"src\": \"4303:11:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 65294,\n \"name\": \"IAaveToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 49523,\n \"src\": \"4317:10:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IAaveToken_$49523_$\",\n \"typeString\": \"type(contract IAaveToken)\"\n }\n }\n ],\n \"id\": 65295,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"4316:12:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IAaveToken_$49523_$\",\n \"typeString\": \"type(contract IAaveToken)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_contract$_IAaveToken_$49523_$\",\n \"typeString\": \"type(contract IAaveToken)\"\n }\n ],\n \"expression\": {\n \"id\": 65291,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"4292:3:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 65292,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"4296:6:198\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"4292:10:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 65296,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4292:37:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"4272:57:198\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"expression\": {\n \"id\": 65299,\n \"name\": \"aToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65290,\n \"src\": \"4352:6:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n },\n \"id\": 65300,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"4359:24:198\",\n \"memberName\": \"UNDERLYING_ASSET_ADDRESS\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 49522,\n \"src\": \"4352:31:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$__$returns$_t_address_$\",\n \"typeString\": \"function () view external returns (address)\"\n }\n },\n \"id\": 65301,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4352:33:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 65298,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 45747,\n \"src\": \"4346:5:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n },\n \"id\": 65302,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4346:40:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"functionReturnParameters\": 65287,\n \"id\": 65303,\n \"nodeType\": \"Return\",\n \"src\": \"4339:47:198\"\n }\n ]\n },\n \"baseFunctions\": [\n 61493\n ],\n \"documentation\": {\n \"id\": 65279,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"4104:73:198\",\n \"text\": \" @notice Returns the positions aToken underlying asset.\"\n },\n \"functionSelector\": \"e170a9bf\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"assetOf\",\n \"nameLocation\": \"4191:7:198\",\n \"overrides\": {\n \"id\": 65283,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"4237:8:198\"\n },\n \"parameters\": {\n \"id\": 65282,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65281,\n \"mutability\": \"mutable\",\n \"name\": \"adaptorData\",\n \"nameLocation\": \"4212:11:198\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65305,\n \"src\": \"4199:24:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 65280,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4199:5:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"4198:26:198\"\n },\n \"returnParameters\": {\n \"id\": 65287,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65286,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65305,\n \"src\": \"4255:5:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 65285,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 65284,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"4255:5:198\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"4255:5:198\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"4255:5:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"4254:7:198\"\n },\n \"scope\": 65497,\n \"stateMutability\": \"view\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65315,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"4476:82:198\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65314,\n \"nodeType\": \"Block\",\n \"src\": \"4530:28:198\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"hexValue\": \"74727565\",\n \"id\": 65312,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"bool\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"4547:4:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"value\": \"true\"\n },\n \"functionReturnParameters\": 65311,\n \"id\": 65313,\n \"nodeType\": \"Return\",\n \"src\": \"4540:11:198\"\n }\n ]\n },\n \"baseFunctions\": [\n 61527\n ],\n \"documentation\": {\n \"id\": 65306,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"4399:72:198\",\n \"text\": \" @notice This adaptor reports values in terms of debt.\"\n },\n \"functionSelector\": \"89353a09\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"isDebt\",\n \"nameLocation\": \"4485:6:198\",\n \"overrides\": {\n \"id\": 65308,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"4506:8:198\"\n },\n \"parameters\": {\n \"id\": 65307,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"4491:2:198\"\n },\n \"returnParameters\": {\n \"id\": 65311,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65310,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65315,\n \"src\": \"4524:4:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"typeName\": {\n \"id\": 65309,\n \"name\": \"bool\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4524:4:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"4523:6:198\"\n },\n \"scope\": 65497,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65392,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"4952:843:198\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65391,\n \"nodeType\": \"Block\",\n \"src\": \"5031:764:198\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 65324\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65324,\n \"mutability\": \"mutable\",\n \"name\": \"positionHash\",\n \"nameLocation\": \"5133:12:198\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65391,\n \"src\": \"5125:20:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n \"typeName\": {\n \"id\": 65323,\n \"name\": \"bytes32\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5125:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65337,\n \"initialValue\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 65328,\n \"name\": \"identifier\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [\n 65206\n ],\n \"referencedDeclaration\": 65206,\n \"src\": \"5169:10:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_pure$__$returns$_t_bytes32_$\",\n \"typeString\": \"function () pure returns (bytes32)\"\n }\n },\n \"id\": 65329,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5169:12:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n {\n \"hexValue\": \"74727565\",\n \"id\": 65330,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"bool\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"5183:4:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"value\": \"true\"\n },\n {\n \"arguments\": [\n {\n \"id\": 65333,\n \"name\": \"aToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65318,\n \"src\": \"5200:6:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 65331,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"5189:3:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 65332,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"5193:6:198\",\n \"memberName\": \"encode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"5189:10:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$\",\n \"typeString\": \"function () pure returns (bytes memory)\"\n }\n },\n \"id\": 65334,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5189:18:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n ],\n \"expression\": {\n \"id\": 65326,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"5158:3:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 65327,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"5162:6:198\",\n \"memberName\": \"encode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"5158:10:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$\",\n \"typeString\": \"function () pure returns (bytes memory)\"\n }\n },\n \"id\": 65335,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5158:50:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n ],\n \"id\": 65325,\n \"name\": \"keccak256\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -8,\n \"src\": \"5148:9:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$\",\n \"typeString\": \"function (bytes memory) pure returns (bytes32)\"\n }\n },\n \"id\": 65336,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5148:61:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"5125:84:198\"\n },\n {\n \"assignments\": [\n 65339\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65339,\n \"mutability\": \"mutable\",\n \"name\": \"positionId\",\n \"nameLocation\": \"5226:10:198\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65391,\n \"src\": \"5219:17:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n },\n \"typeName\": {\n \"id\": 65338,\n \"name\": \"uint32\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5219:6:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65351,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 65349,\n \"name\": \"positionHash\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65324,\n \"src\": \"5300:12:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n ],\n \"expression\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 65343,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"5254:4:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV2DebtTokenAdaptor_$65497\",\n \"typeString\": \"contract MorphoAaveV2DebtTokenAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV2DebtTokenAdaptor_$65497\",\n \"typeString\": \"contract MorphoAaveV2DebtTokenAdaptor\"\n }\n ],\n \"id\": 65342,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"5246:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65341,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5246:7:198\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65344,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5246:13:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 65340,\n \"name\": \"Cellar\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 44434,\n \"src\": \"5239:6:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_Cellar_$44434_$\",\n \"typeString\": \"type(contract Cellar)\"\n }\n },\n \"id\": 65345,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5239:21:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_Cellar_$44434\",\n \"typeString\": \"contract Cellar\"\n }\n },\n \"id\": 65346,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"5261:8:198\",\n \"memberName\": \"registry\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 42070,\n \"src\": \"5239:30:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$__$returns$_t_contract$_Registry_$41024_$\",\n \"typeString\": \"function () view external returns (contract Registry)\"\n }\n },\n \"id\": 65347,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5239:32:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_Registry_$41024\",\n \"typeString\": \"contract Registry\"\n }\n },\n \"id\": 65348,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"5272:27:198\",\n \"memberName\": \"getPositionHashToPositionId\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 40771,\n \"src\": \"5239:60:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_bytes32_$returns$_t_uint32_$\",\n \"typeString\": \"function (bytes32) view external returns (uint32)\"\n }\n },\n \"id\": 65350,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5239:74:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"5219:94:198\"\n },\n {\n \"condition\": {\n \"id\": 65361,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"UnaryOperation\",\n \"operator\": \"!\",\n \"prefix\": true,\n \"src\": \"5327:49:198\",\n \"subExpression\": {\n \"arguments\": [\n {\n \"id\": 65359,\n \"name\": \"positionId\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65339,\n \"src\": \"5365:10:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n }\n ],\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 65355,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"5343:4:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV2DebtTokenAdaptor_$65497\",\n \"typeString\": \"contract MorphoAaveV2DebtTokenAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV2DebtTokenAdaptor_$65497\",\n \"typeString\": \"contract MorphoAaveV2DebtTokenAdaptor\"\n }\n ],\n \"id\": 65354,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"5335:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65353,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5335:7:198\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65356,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5335:13:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 65352,\n \"name\": \"Cellar\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 44434,\n \"src\": \"5328:6:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_Cellar_$44434_$\",\n \"typeString\": \"type(contract Cellar)\"\n }\n },\n \"id\": 65357,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5328:21:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_Cellar_$44434\",\n \"typeString\": \"contract Cellar\"\n }\n },\n \"id\": 65358,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"5350:14:198\",\n \"memberName\": \"isPositionUsed\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 41300,\n \"src\": \"5328:36:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_uint256_$returns$_t_bool_$\",\n \"typeString\": \"function (uint256) view external returns (bool)\"\n }\n },\n \"id\": 65360,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5328:48:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 65366,\n \"nodeType\": \"IfStatement\",\n \"src\": \"5323:138:198\",\n \"trueBody\": {\n \"errorCall\": {\n \"arguments\": [\n {\n \"id\": 65363,\n \"name\": \"aToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65318,\n \"src\": \"5454:6:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 65362,\n \"name\": \"MorphoAaveV2DebtTokenAdaptor__DebtPositionsMustBeTracked\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65147,\n \"src\": \"5397:56:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$_t_address_$returns$__$\",\n \"typeString\": \"function (address) pure\"\n }\n },\n \"id\": 65364,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5397:64:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 65365,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"5390:71:198\"\n }\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 65370,\n \"name\": \"aToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65318,\n \"src\": \"5517:6:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 65371,\n \"name\": \"amountToBorrow\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65320,\n \"src\": \"5525:14:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 65367,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65154,\n \"src\": \"5503:6:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n },\n \"id\": 65369,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"5510:6:198\",\n \"memberName\": \"borrow\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53379,\n \"src\": \"5503:13:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$\",\n \"typeString\": \"function (address,uint256) external\"\n }\n },\n \"id\": 65372,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5503:37:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 65373,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"5503:37:198\"\n },\n {\n \"assignments\": [\n 65375\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65375,\n \"mutability\": \"mutable\",\n \"name\": \"healthFactor\",\n \"nameLocation\": \"5621:12:198\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65391,\n \"src\": \"5613:20:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65374,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5613:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65383,\n \"initialValue\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 65380,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"5675:4:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV2DebtTokenAdaptor_$65497\",\n \"typeString\": \"contract MorphoAaveV2DebtTokenAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV2DebtTokenAdaptor_$65497\",\n \"typeString\": \"contract MorphoAaveV2DebtTokenAdaptor\"\n }\n ],\n \"id\": 65379,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"5667:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65378,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5667:7:198\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65381,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5667:13:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 65376,\n \"name\": \"morphoLens\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65158,\n \"src\": \"5636:10:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoLensV2_$53305\",\n \"typeString\": \"contract IMorphoLensV2\"\n }\n },\n \"id\": 65377,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"5647:19:198\",\n \"memberName\": \"getUserHealthFactor\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53304,\n \"src\": \"5636:30:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address) view external returns (uint256)\"\n }\n },\n \"id\": 65382,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5636:45:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"5613:68:198\"\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 65386,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 65384,\n \"name\": \"healthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65375,\n \"src\": \"5695:12:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"<\",\n \"rightExpression\": {\n \"id\": 65385,\n \"name\": \"minimumHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65161,\n \"src\": \"5710:19:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"5695:34:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 65390,\n \"nodeType\": \"IfStatement\",\n \"src\": \"5691:97:198\",\n \"trueBody\": {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 65387,\n \"name\": \"MorphoAaveV2DebtTokenAdaptor__HealthFactorTooLow\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65150,\n \"src\": \"5738:48:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 65388,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5738:50:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 65389,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"5731:57:198\"\n }\n }\n ]\n },\n \"documentation\": {\n \"id\": 65316,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"4681:266:198\",\n \"text\": \" @notice Allows strategists to borrow assets from Aave.\\n @notice `aToken` must be the aToken not the debtToken.\\n @param aToken the aToken to borrow on Aave\\n @param amountToBorrow the amount of `aTokenToBorrow` to borrow on Morpho.\"\n },\n \"functionSelector\": \"4c97ba1b\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"borrowFromAaveV2Morpho\",\n \"nameLocation\": \"4961:22:198\",\n \"parameters\": {\n \"id\": 65321,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65318,\n \"mutability\": \"mutable\",\n \"name\": \"aToken\",\n \"nameLocation\": \"4992:6:198\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65392,\n \"src\": \"4984:14:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 65317,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4984:7:198\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65320,\n \"mutability\": \"mutable\",\n \"name\": \"amountToBorrow\",\n \"nameLocation\": \"5008:14:198\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65392,\n \"src\": \"5000:22:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65319,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5000:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"4983:40:198\"\n },\n \"returnParameters\": {\n \"id\": 65322,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"5031:0:198\"\n },\n \"scope\": 65497,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65439,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"6002:381:198\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65438,\n \"nodeType\": \"Block\",\n \"src\": \"6082:301:198\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 65403\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65403,\n \"mutability\": \"mutable\",\n \"name\": \"underlying\",\n \"nameLocation\": \"6098:10:198\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65438,\n \"src\": \"6092:16:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 65402,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 65401,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"6092:5:198\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"6092:5:198\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"6092:5:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65409,\n \"initialValue\": {\n \"arguments\": [\n {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"expression\": {\n \"id\": 65405,\n \"name\": \"aToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65396,\n \"src\": \"6117:6:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n },\n \"id\": 65406,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"6124:24:198\",\n \"memberName\": \"UNDERLYING_ASSET_ADDRESS\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 49522,\n \"src\": \"6117:31:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$__$returns$_t_address_$\",\n \"typeString\": \"function () view external returns (address)\"\n }\n },\n \"id\": 65407,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6117:33:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 65404,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 45747,\n \"src\": \"6111:5:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n },\n \"id\": 65408,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6111:40:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"6092:59:198\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 65415,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65154,\n \"src\": \"6192:6:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n ],\n \"id\": 65414,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"6184:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65413,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6184:7:198\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65416,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6184:15:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 65417,\n \"name\": \"amountToRepay\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65398,\n \"src\": \"6201:13:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 65410,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65403,\n \"src\": \"6161:10:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 65412,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"6172:11:198\",\n \"memberName\": \"safeApprove\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 46497,\n \"src\": \"6161:22:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"function (contract ERC20,address,uint256)\"\n }\n },\n \"id\": 65418,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6161:54:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 65419,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"6161:54:198\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 65425,\n \"name\": \"aToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65396,\n \"src\": \"6246:6:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n ],\n \"id\": 65424,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"6238:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65423,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6238:7:198\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65426,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6238:15:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 65427,\n \"name\": \"amountToRepay\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65398,\n \"src\": \"6255:13:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 65420,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65154,\n \"src\": \"6225:6:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n },\n \"id\": 65422,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"6232:5:198\",\n \"memberName\": \"repay\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53386,\n \"src\": \"6225:12:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$\",\n \"typeString\": \"function (address,uint256) external\"\n }\n },\n \"id\": 65428,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6225:44:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 65429,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"6225:44:198\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 65431,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65403,\n \"src\": \"6348:10:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 65434,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65154,\n \"src\": \"6368:6:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n ],\n \"id\": 65433,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"6360:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65432,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6360:7:198\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65435,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6360:15:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 65430,\n \"name\": \"_revokeExternalApproval\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61585,\n \"src\": \"6324:23:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$returns$__$\",\n \"typeString\": \"function (contract ERC20,address)\"\n }\n },\n \"id\": 65436,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6324:52:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 65437,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"6324:52:198\"\n }\n ]\n },\n \"documentation\": {\n \"id\": 65393,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"5801:196:198\",\n \"text\": \" @notice Allows strategists to repay loan debt on Aave.\\n @param aToken the aToken you want to repay.\\n @param amountToRepay the amount of `tokenToRepay` to repay with.\"\n },\n \"functionSelector\": \"106a4f2f\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"repayAaveV2MorphoDebt\",\n \"nameLocation\": \"6011:21:198\",\n \"parameters\": {\n \"id\": 65399,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65396,\n \"mutability\": \"mutable\",\n \"name\": \"aToken\",\n \"nameLocation\": \"6044:6:198\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65439,\n \"src\": \"6033:17:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n },\n \"typeName\": {\n \"id\": 65395,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 65394,\n \"name\": \"IAaveToken\",\n \"nameLocations\": [\n \"6033:10:198\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 49523,\n \"src\": \"6033:10:198\"\n },\n \"referencedDeclaration\": 49523,\n \"src\": \"6033:10:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IAaveToken_$49523\",\n \"typeString\": \"contract IAaveToken\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65398,\n \"mutability\": \"mutable\",\n \"name\": \"amountToRepay\",\n \"nameLocation\": \"6060:13:198\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65439,\n \"src\": \"6052:21:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65397,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6052:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"6032:42:198\"\n },\n \"returnParameters\": {\n \"id\": 65400,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"6082:0:198\"\n },\n \"scope\": 65497,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65496,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"6604:485:198\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65495,\n \"nodeType\": \"Block\",\n \"src\": \"6701:388:198\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 65450,\n 65452\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65450,\n \"mutability\": \"mutable\",\n \"name\": \"inP2P\",\n \"nameLocation\": \"6720:5:198\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65495,\n \"src\": \"6712:13:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65449,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6712:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65452,\n \"mutability\": \"mutable\",\n \"name\": \"onPool\",\n \"nameLocation\": \"6735:6:198\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65495,\n \"src\": \"6727:14:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65451,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6727:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65458,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 65455,\n \"name\": \"poolToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65442,\n \"src\": \"6770:9:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 65456,\n \"name\": \"user\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65444,\n \"src\": \"6781:4:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 65453,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65154,\n \"src\": \"6745:6:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n },\n \"id\": 65454,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"6752:17:198\",\n \"memberName\": \"borrowBalanceInOf\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53332,\n \"src\": \"6745:24:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$\",\n \"typeString\": \"function (address,address) view external returns (uint256,uint256)\"\n }\n },\n \"id\": 65457,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6745:41:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$_t_uint256_$_t_uint256_$\",\n \"typeString\": \"tuple(uint256,uint256)\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"6711:75:198\"\n },\n {\n \"assignments\": [\n 65460\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65460,\n \"mutability\": \"mutable\",\n \"name\": \"balanceInUnderlying\",\n \"nameLocation\": \"6805:19:198\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65495,\n \"src\": \"6797:27:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65459,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6797:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65461,\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"6797:27:198\"\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 65464,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 65462,\n \"name\": \"inP2P\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65450,\n \"src\": \"6838:5:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \">\",\n \"rightExpression\": {\n \"hexValue\": \"30\",\n \"id\": 65463,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"6846:1:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n },\n \"value\": \"0\"\n },\n \"src\": \"6838:9:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 65476,\n \"nodeType\": \"IfStatement\",\n \"src\": \"6834:93:198\",\n \"trueBody\": {\n \"expression\": {\n \"id\": 65474,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 65465,\n \"name\": \"balanceInUnderlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65460,\n \"src\": \"6849:19:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 65470,\n \"name\": \"poolToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65442,\n \"src\": \"6910:9:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 65468,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65154,\n \"src\": \"6888:6:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n },\n \"id\": 65469,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"6895:14:198\",\n \"memberName\": \"p2pBorrowIndex\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53365,\n \"src\": \"6888:21:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address) view external returns (uint256)\"\n }\n },\n \"id\": 65471,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6888:32:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n {\n \"hexValue\": \"31653237\",\n \"id\": 65472,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"6922:4:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_1000000000000000000000000000_by_1\",\n \"typeString\": \"int_const 1000000000000000000000000000\"\n },\n \"value\": \"1e27\"\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n {\n \"typeIdentifier\": \"t_rational_1000000000000000000000000000_by_1\",\n \"typeString\": \"int_const 1000000000000000000000000000\"\n }\n ],\n \"expression\": {\n \"id\": 65466,\n \"name\": \"inP2P\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65450,\n \"src\": \"6871:5:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 65467,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"6877:10:198\",\n \"memberName\": \"mulDivDown\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 74797,\n \"src\": \"6871:16:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$\",\n \"typeString\": \"function (uint256,uint256,uint256) pure returns (uint256)\"\n }\n },\n \"id\": 65473,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6871:56:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"6849:78:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 65475,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"6849:78:198\"\n }\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 65479,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 65477,\n \"name\": \"onPool\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65452,\n \"src\": \"6941:6:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \">\",\n \"rightExpression\": {\n \"hexValue\": \"30\",\n \"id\": 65478,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"6950:1:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n },\n \"value\": \"0\"\n },\n \"src\": \"6941:10:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 65492,\n \"nodeType\": \"IfStatement\",\n \"src\": \"6937:109:198\",\n \"trueBody\": {\n \"expression\": {\n \"id\": 65490,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 65480,\n \"name\": \"balanceInUnderlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65460,\n \"src\": \"6953:19:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"+=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 65485,\n \"name\": \"poolToken\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65442,\n \"src\": \"7013:9:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 65483,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65154,\n \"src\": \"6994:6:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV2_$53396\",\n \"typeString\": \"contract IMorphoV2\"\n }\n },\n \"id\": 65484,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"7001:11:198\",\n \"memberName\": \"poolIndexes\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53351,\n \"src\": \"6994:18:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$returns$_t_struct$_PoolIndexes_$53314_memory_ptr_$\",\n \"typeString\": \"function (address) view external returns (struct IMorphoV2.PoolIndexes memory)\"\n }\n },\n \"id\": 65486,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6994:29:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_struct$_PoolIndexes_$53314_memory_ptr\",\n \"typeString\": \"struct IMorphoV2.PoolIndexes memory\"\n }\n },\n \"id\": 65487,\n \"isConstant\": false,\n \"isLValue\": true,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"7024:15:198\",\n \"memberName\": \"poolBorrowIndex\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53313,\n \"src\": \"6994:45:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint112\",\n \"typeString\": \"uint112\"\n }\n },\n {\n \"hexValue\": \"31653237\",\n \"id\": 65488,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"7041:4:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_1000000000000000000000000000_by_1\",\n \"typeString\": \"int_const 1000000000000000000000000000\"\n },\n \"value\": \"1e27\"\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint112\",\n \"typeString\": \"uint112\"\n },\n {\n \"typeIdentifier\": \"t_rational_1000000000000000000000000000_by_1\",\n \"typeString\": \"int_const 1000000000000000000000000000\"\n }\n ],\n \"expression\": {\n \"id\": 65481,\n \"name\": \"onPool\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65452,\n \"src\": \"6976:6:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 65482,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"6983:10:198\",\n \"memberName\": \"mulDivDown\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 74797,\n \"src\": \"6976:17:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$\",\n \"typeString\": \"function (uint256,uint256,uint256) pure returns (uint256)\"\n }\n },\n \"id\": 65489,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6976:70:198\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"6953:93:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 65491,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"6953:93:198\"\n }\n },\n {\n \"expression\": {\n \"id\": 65493,\n \"name\": \"balanceInUnderlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65460,\n \"src\": \"7063:19:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"functionReturnParameters\": 65448,\n \"id\": 65494,\n \"nodeType\": \"Return\",\n \"src\": \"7056:26:198\"\n }\n ]\n },\n \"documentation\": {\n \"id\": 65440,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"6389:210:198\",\n \"text\": \" @notice Returns the balance in underlying of debt owed.\\n @param poolToken the Aave V2 a Token user has debt in\\n @param user the address of the user to query their debt balance of.\"\n },\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"_balanceOfInUnderlying\",\n \"nameLocation\": \"6613:22:198\",\n \"parameters\": {\n \"id\": 65445,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65442,\n \"mutability\": \"mutable\",\n \"name\": \"poolToken\",\n \"nameLocation\": \"6644:9:198\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65496,\n \"src\": \"6636:17:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 65441,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6636:7:198\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65444,\n \"mutability\": \"mutable\",\n \"name\": \"user\",\n \"nameLocation\": \"6663:4:198\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65496,\n \"src\": \"6655:12:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 65443,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6655:7:198\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"6635:33:198\"\n },\n \"returnParameters\": {\n \"id\": 65448,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65447,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65496,\n \"src\": \"6692:7:198\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65446,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6692:7:198\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"6691:9:198\"\n },\n \"scope\": 65497,\n \"stateMutability\": \"view\",\n \"virtual\": false,\n \"visibility\": \"internal\"\n }\n ],\n \"abstract\": false,\n \"baseContracts\": [\n {\n \"baseName\": {\n \"id\": 65134,\n \"name\": \"BaseAdaptor\",\n \"nameLocations\": [\n \"602:11:198\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 61644,\n \"src\": \"602:11:198\"\n },\n \"id\": 65135,\n \"nodeType\": \"InheritanceSpecifier\",\n \"src\": \"602:11:198\"\n }\n ],\n \"canonicalName\": \"MorphoAaveV2DebtTokenAdaptor\",\n \"contractDependencies\": [],\n \"contractKind\": \"contract\",\n \"documentation\": {\n \"id\": 65133,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"406:154:198\",\n \"text\": \" @title Morpho Aave V2 debtToken Adaptor\\n @notice Allows Cellars to interact with Morpho Aave V2 debtToken positions.\\n @author crispymangoes\"\n },\n \"fullyImplemented\": true,\n \"linearizedBaseContracts\": [\n 65497,\n 61644\n ],\n \"name\": \"MorphoAaveV2DebtTokenAdaptor\",\n \"nameLocation\": \"570:28:198\",\n \"scope\": 65498,\n \"usedErrors\": [\n 61379,\n 61382,\n 61385,\n 61388,\n 61393,\n 61396,\n 65147,\n 65150\n ]\n }\n ],\n \"license\": \"Apache-2.0\"\n },\n \"id\": 198\n}") . expect ("invalid abi") + }); + #[derive(Clone)] + pub struct MorphoAaveV2DebtTokenAdaptorV1(ethers::contract::Contract); + impl std::ops::Deref for MorphoAaveV2DebtTokenAdaptorV1 { + type Target = ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl std::fmt::Debug for MorphoAaveV2DebtTokenAdaptorV1 { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + f.debug_tuple(stringify!(MorphoAaveV2DebtTokenAdaptorV1)) + .field(&self.address()) + .finish() + } + } + impl<'a, M: ethers::providers::Middleware> MorphoAaveV2DebtTokenAdaptorV1 { + #[doc = r" Creates a new contract instance with the specified `ethers`"] + #[doc = r" client at the given `Address`. The contract derefs to a `ethers::Contract`"] + #[doc = r" object"] + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + let contract = ethers::contract::Contract::new( + address.into(), + MORPHOAAVEV2DEBTTOKENADAPTORV1_ABI.clone(), + client, + ); + Self(contract) + } + #[doc = "Calls the contract's `assetOf` (0xe170a9bf) function"] + pub fn asset_of( + &self, + adaptor_data: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([225, 112, 169, 191], adaptor_data) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `assetsUsed` (0xaeffddde) function"] + pub fn assets_used( + &self, + adaptor_data: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec, + > { + self.0 + .method_hash([174, 255, 221, 222], adaptor_data) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `balanceOf` (0x78415365) function"] + pub fn balance_of( + &self, + adaptor_data: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([120, 65, 83, 101], adaptor_data) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `borrowFromAaveV2Morpho` (0x4c97ba1b) function"] + pub fn borrow_from_aave_v2_morpho( + &self, + a_token: ethers::core::types::Address, + amount_to_borrow: ethers::core::types::U256, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([76, 151, 186, 27], (a_token, amount_to_borrow)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `deposit` (0x69445c31) function"] + pub fn deposit( + &self, + p0: ethers::core::types::U256, + p1: ethers::core::types::Bytes, + p2: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([105, 68, 92, 49], (p0, p1, p2)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `identifier` (0x7998a1c4) function"] + pub fn identifier(&self) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([121, 152, 161, 196], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `isDebt` (0x89353a09) function"] + pub fn is_debt(&self) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([137, 53, 58, 9], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `minimumHealthFactor` (0x1caff8b1) function"] + pub fn minimum_health_factor( + &self, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([28, 175, 248, 177], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `morpho` (0xd8fbc833) function"] + pub fn morpho( + &self, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([216, 251, 200, 51], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `morphoLens` (0x425734d3) function"] + pub fn morpho_lens( + &self, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([66, 87, 52, 211], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `repayAaveV2MorphoDebt` (0x106a4f2f) function"] + pub fn repay_aave_v2_morpho_debt( + &self, + a_token: ethers::core::types::Address, + amount_to_repay: ethers::core::types::U256, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([16, 106, 79, 47], (a_token, amount_to_repay)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `revokeApproval` (0xd3bfe76a) function"] + pub fn revoke_approval( + &self, + asset: ethers::core::types::Address, + spender: ethers::core::types::Address, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([211, 191, 231, 106], (asset, spender)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `slippage` (0x3e032a3b) function"] + pub fn slippage(&self) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([62, 3, 42, 59], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `withdraw` (0xc9111bd7) function"] + pub fn withdraw( + &self, + p0: ethers::core::types::U256, + p1: ethers::core::types::Address, + p2: ethers::core::types::Bytes, + p3: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([201, 17, 27, 215], (p0, p1, p2, p3)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `withdrawableFrom` (0xfa50e5d2) function"] + pub fn withdrawable_from( + &self, + p0: ethers::core::types::Bytes, + p1: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([250, 80, 229, 210], (p0, p1)) + .expect("method not found (this should never happen)") + } + } + #[doc = "Container type for all input parameters for the `assetOf`function with signature `assetOf(bytes)` and selector `[225, 112, 169, 191]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "assetOf", abi = "assetOf(bytes)")] + pub struct AssetOfCall { + pub adaptor_data: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `assetsUsed`function with signature `assetsUsed(bytes)` and selector `[174, 255, 221, 222]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "assetsUsed", abi = "assetsUsed(bytes)")] + pub struct AssetsUsedCall { + pub adaptor_data: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `balanceOf`function with signature `balanceOf(bytes)` and selector `[120, 65, 83, 101]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "balanceOf", abi = "balanceOf(bytes)")] + pub struct BalanceOfCall { + pub adaptor_data: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `borrowFromAaveV2Morpho`function with signature `borrowFromAaveV2Morpho(address,uint256)` and selector `[76, 151, 186, 27]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall( + name = "borrowFromAaveV2Morpho", + abi = "borrowFromAaveV2Morpho(address,uint256)" + )] + pub struct BorrowFromAaveV2MorphoCall { + pub a_token: ethers::core::types::Address, + pub amount_to_borrow: ethers::core::types::U256, + } + #[doc = "Container type for all input parameters for the `deposit`function with signature `deposit(uint256,bytes,bytes)` and selector `[105, 68, 92, 49]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "deposit", abi = "deposit(uint256,bytes,bytes)")] + pub struct DepositCall( + pub ethers::core::types::U256, + pub ethers::core::types::Bytes, + pub ethers::core::types::Bytes, + ); + #[doc = "Container type for all input parameters for the `identifier`function with signature `identifier()` and selector `[121, 152, 161, 196]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "identifier", abi = "identifier()")] + pub struct IdentifierCall; + #[doc = "Container type for all input parameters for the `isDebt`function with signature `isDebt()` and selector `[137, 53, 58, 9]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "isDebt", abi = "isDebt()")] + pub struct IsDebtCall; + #[doc = "Container type for all input parameters for the `minimumHealthFactor`function with signature `minimumHealthFactor()` and selector `[28, 175, 248, 177]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "minimumHealthFactor", abi = "minimumHealthFactor()")] + pub struct MinimumHealthFactorCall; + #[doc = "Container type for all input parameters for the `morpho`function with signature `morpho()` and selector `[216, 251, 200, 51]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "morpho", abi = "morpho()")] + pub struct MorphoCall; + #[doc = "Container type for all input parameters for the `morphoLens`function with signature `morphoLens()` and selector `[66, 87, 52, 211]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "morphoLens", abi = "morphoLens()")] + pub struct MorphoLensCall; + #[doc = "Container type for all input parameters for the `repayAaveV2MorphoDebt`function with signature `repayAaveV2MorphoDebt(address,uint256)` and selector `[16, 106, 79, 47]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall( + name = "repayAaveV2MorphoDebt", + abi = "repayAaveV2MorphoDebt(address,uint256)" + )] + pub struct RepayAaveV2MorphoDebtCall { + pub a_token: ethers::core::types::Address, + pub amount_to_repay: ethers::core::types::U256, + } + #[doc = "Container type for all input parameters for the `revokeApproval`function with signature `revokeApproval(address,address)` and selector `[211, 191, 231, 106]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "revokeApproval", abi = "revokeApproval(address,address)")] + pub struct RevokeApprovalCall { + pub asset: ethers::core::types::Address, + pub spender: ethers::core::types::Address, + } + #[doc = "Container type for all input parameters for the `slippage`function with signature `slippage()` and selector `[62, 3, 42, 59]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "slippage", abi = "slippage()")] + pub struct SlippageCall; + #[doc = "Container type for all input parameters for the `withdraw`function with signature `withdraw(uint256,address,bytes,bytes)` and selector `[201, 17, 27, 215]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "withdraw", abi = "withdraw(uint256,address,bytes,bytes)")] + pub struct WithdrawCall( + pub ethers::core::types::U256, + pub ethers::core::types::Address, + pub ethers::core::types::Bytes, + pub ethers::core::types::Bytes, + ); + #[doc = "Container type for all input parameters for the `withdrawableFrom`function with signature `withdrawableFrom(bytes,bytes)` and selector `[250, 80, 229, 210]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "withdrawableFrom", abi = "withdrawableFrom(bytes,bytes)")] + pub struct WithdrawableFromCall( + pub ethers::core::types::Bytes, + pub ethers::core::types::Bytes, + ); + #[derive(Debug, Clone, PartialEq, Eq, ethers :: contract :: EthAbiType)] + pub enum MorphoAaveV2DebtTokenAdaptorV1Calls { + AssetOf(AssetOfCall), + AssetsUsed(AssetsUsedCall), + BalanceOf(BalanceOfCall), + BorrowFromAaveV2Morpho(BorrowFromAaveV2MorphoCall), + Deposit(DepositCall), + Identifier(IdentifierCall), + IsDebt(IsDebtCall), + MinimumHealthFactor(MinimumHealthFactorCall), + Morpho(MorphoCall), + MorphoLens(MorphoLensCall), + RepayAaveV2MorphoDebt(RepayAaveV2MorphoDebtCall), + RevokeApproval(RevokeApprovalCall), + Slippage(SlippageCall), + Withdraw(WithdrawCall), + WithdrawableFrom(WithdrawableFromCall), + } + impl ethers::core::abi::AbiDecode for MorphoAaveV2DebtTokenAdaptorV1Calls { + fn decode(data: impl AsRef<[u8]>) -> Result { + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2DebtTokenAdaptorV1Calls::AssetOf(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2DebtTokenAdaptorV1Calls::AssetsUsed(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2DebtTokenAdaptorV1Calls::BalanceOf(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2DebtTokenAdaptorV1Calls::BorrowFromAaveV2Morpho( + decoded, + )); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2DebtTokenAdaptorV1Calls::Deposit(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2DebtTokenAdaptorV1Calls::Identifier(decoded)); + } + if let Ok(decoded) = ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2DebtTokenAdaptorV1Calls::IsDebt(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2DebtTokenAdaptorV1Calls::MinimumHealthFactor( + decoded, + )); + } + if let Ok(decoded) = ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2DebtTokenAdaptorV1Calls::Morpho(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2DebtTokenAdaptorV1Calls::MorphoLens(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2DebtTokenAdaptorV1Calls::RepayAaveV2MorphoDebt( + decoded, + )); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2DebtTokenAdaptorV1Calls::RevokeApproval(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2DebtTokenAdaptorV1Calls::Slippage(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2DebtTokenAdaptorV1Calls::Withdraw(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV2DebtTokenAdaptorV1Calls::WithdrawableFrom( + decoded, + )); + } + Err(ethers::core::abi::Error::InvalidData.into()) + } + } + impl ethers::core::abi::AbiEncode for MorphoAaveV2DebtTokenAdaptorV1Calls { + fn encode(self) -> Vec { + match self { + MorphoAaveV2DebtTokenAdaptorV1Calls::AssetOf(element) => element.encode(), + MorphoAaveV2DebtTokenAdaptorV1Calls::AssetsUsed(element) => element.encode(), + MorphoAaveV2DebtTokenAdaptorV1Calls::BalanceOf(element) => element.encode(), + MorphoAaveV2DebtTokenAdaptorV1Calls::BorrowFromAaveV2Morpho(element) => { + element.encode() + } + MorphoAaveV2DebtTokenAdaptorV1Calls::Deposit(element) => element.encode(), + MorphoAaveV2DebtTokenAdaptorV1Calls::Identifier(element) => element.encode(), + MorphoAaveV2DebtTokenAdaptorV1Calls::IsDebt(element) => element.encode(), + MorphoAaveV2DebtTokenAdaptorV1Calls::MinimumHealthFactor(element) => { + element.encode() + } + MorphoAaveV2DebtTokenAdaptorV1Calls::Morpho(element) => element.encode(), + MorphoAaveV2DebtTokenAdaptorV1Calls::MorphoLens(element) => element.encode(), + MorphoAaveV2DebtTokenAdaptorV1Calls::RepayAaveV2MorphoDebt(element) => { + element.encode() + } + MorphoAaveV2DebtTokenAdaptorV1Calls::RevokeApproval(element) => element.encode(), + MorphoAaveV2DebtTokenAdaptorV1Calls::Slippage(element) => element.encode(), + MorphoAaveV2DebtTokenAdaptorV1Calls::Withdraw(element) => element.encode(), + MorphoAaveV2DebtTokenAdaptorV1Calls::WithdrawableFrom(element) => element.encode(), + } + } + } + impl ::std::fmt::Display for MorphoAaveV2DebtTokenAdaptorV1Calls { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + match self { + MorphoAaveV2DebtTokenAdaptorV1Calls::AssetOf(element) => element.fmt(f), + MorphoAaveV2DebtTokenAdaptorV1Calls::AssetsUsed(element) => element.fmt(f), + MorphoAaveV2DebtTokenAdaptorV1Calls::BalanceOf(element) => element.fmt(f), + MorphoAaveV2DebtTokenAdaptorV1Calls::BorrowFromAaveV2Morpho(element) => { + element.fmt(f) + } + MorphoAaveV2DebtTokenAdaptorV1Calls::Deposit(element) => element.fmt(f), + MorphoAaveV2DebtTokenAdaptorV1Calls::Identifier(element) => element.fmt(f), + MorphoAaveV2DebtTokenAdaptorV1Calls::IsDebt(element) => element.fmt(f), + MorphoAaveV2DebtTokenAdaptorV1Calls::MinimumHealthFactor(element) => element.fmt(f), + MorphoAaveV2DebtTokenAdaptorV1Calls::Morpho(element) => element.fmt(f), + MorphoAaveV2DebtTokenAdaptorV1Calls::MorphoLens(element) => element.fmt(f), + MorphoAaveV2DebtTokenAdaptorV1Calls::RepayAaveV2MorphoDebt(element) => { + element.fmt(f) + } + MorphoAaveV2DebtTokenAdaptorV1Calls::RevokeApproval(element) => element.fmt(f), + MorphoAaveV2DebtTokenAdaptorV1Calls::Slippage(element) => element.fmt(f), + MorphoAaveV2DebtTokenAdaptorV1Calls::Withdraw(element) => element.fmt(f), + MorphoAaveV2DebtTokenAdaptorV1Calls::WithdrawableFrom(element) => element.fmt(f), + } + } + } + impl ::std::convert::From for MorphoAaveV2DebtTokenAdaptorV1Calls { + fn from(var: AssetOfCall) -> Self { + MorphoAaveV2DebtTokenAdaptorV1Calls::AssetOf(var) + } + } + impl ::std::convert::From for MorphoAaveV2DebtTokenAdaptorV1Calls { + fn from(var: AssetsUsedCall) -> Self { + MorphoAaveV2DebtTokenAdaptorV1Calls::AssetsUsed(var) + } + } + impl ::std::convert::From for MorphoAaveV2DebtTokenAdaptorV1Calls { + fn from(var: BalanceOfCall) -> Self { + MorphoAaveV2DebtTokenAdaptorV1Calls::BalanceOf(var) + } + } + impl ::std::convert::From for MorphoAaveV2DebtTokenAdaptorV1Calls { + fn from(var: BorrowFromAaveV2MorphoCall) -> Self { + MorphoAaveV2DebtTokenAdaptorV1Calls::BorrowFromAaveV2Morpho(var) + } + } + impl ::std::convert::From for MorphoAaveV2DebtTokenAdaptorV1Calls { + fn from(var: DepositCall) -> Self { + MorphoAaveV2DebtTokenAdaptorV1Calls::Deposit(var) + } + } + impl ::std::convert::From for MorphoAaveV2DebtTokenAdaptorV1Calls { + fn from(var: IdentifierCall) -> Self { + MorphoAaveV2DebtTokenAdaptorV1Calls::Identifier(var) + } + } + impl ::std::convert::From for MorphoAaveV2DebtTokenAdaptorV1Calls { + fn from(var: IsDebtCall) -> Self { + MorphoAaveV2DebtTokenAdaptorV1Calls::IsDebt(var) + } + } + impl ::std::convert::From for MorphoAaveV2DebtTokenAdaptorV1Calls { + fn from(var: MinimumHealthFactorCall) -> Self { + MorphoAaveV2DebtTokenAdaptorV1Calls::MinimumHealthFactor(var) + } + } + impl ::std::convert::From for MorphoAaveV2DebtTokenAdaptorV1Calls { + fn from(var: MorphoCall) -> Self { + MorphoAaveV2DebtTokenAdaptorV1Calls::Morpho(var) + } + } + impl ::std::convert::From for MorphoAaveV2DebtTokenAdaptorV1Calls { + fn from(var: MorphoLensCall) -> Self { + MorphoAaveV2DebtTokenAdaptorV1Calls::MorphoLens(var) + } + } + impl ::std::convert::From for MorphoAaveV2DebtTokenAdaptorV1Calls { + fn from(var: RepayAaveV2MorphoDebtCall) -> Self { + MorphoAaveV2DebtTokenAdaptorV1Calls::RepayAaveV2MorphoDebt(var) + } + } + impl ::std::convert::From for MorphoAaveV2DebtTokenAdaptorV1Calls { + fn from(var: RevokeApprovalCall) -> Self { + MorphoAaveV2DebtTokenAdaptorV1Calls::RevokeApproval(var) + } + } + impl ::std::convert::From for MorphoAaveV2DebtTokenAdaptorV1Calls { + fn from(var: SlippageCall) -> Self { + MorphoAaveV2DebtTokenAdaptorV1Calls::Slippage(var) + } + } + impl ::std::convert::From for MorphoAaveV2DebtTokenAdaptorV1Calls { + fn from(var: WithdrawCall) -> Self { + MorphoAaveV2DebtTokenAdaptorV1Calls::Withdraw(var) + } + } + impl ::std::convert::From for MorphoAaveV2DebtTokenAdaptorV1Calls { + fn from(var: WithdrawableFromCall) -> Self { + MorphoAaveV2DebtTokenAdaptorV1Calls::WithdrawableFrom(var) + } + } +} diff --git a/steward_abi/src/morpho_aave_v3_a_token_collateral_adaptor_v1.rs b/steward_abi/src/morpho_aave_v3_a_token_collateral_adaptor_v1.rs new file mode 100644 index 00000000..3823d041 --- /dev/null +++ b/steward_abi/src/morpho_aave_v3_a_token_collateral_adaptor_v1.rs @@ -0,0 +1,741 @@ +pub use morphoaavev3atokencollateraladaptorv1_mod::*; +#[allow(clippy::too_many_arguments)] +mod morphoaavev3atokencollateraladaptorv1_mod { + #![allow(clippy::enum_variant_names)] + #![allow(dead_code)] + #![allow(clippy::type_complexity)] + #![allow(unused_imports)] + use ethers::contract::{ + builders::{ContractCall, Event}, + Contract, Lazy, + }; + use ethers::core::{ + abi::{Abi, Detokenize, InvalidOutputType, Token, Tokenizable}, + types::*, + }; + use ethers::providers::Middleware; + #[doc = "MorphoAaveV3ATokenCollateralAdaptorV1 was auto-generated with ethers-rs Abigen. More information at: https://github.com/gakonst/ethers-rs"] + use std::sync::Arc; + pub static MORPHOAAVEV3ATOKENCOLLATERALADAPTORV1_ABI: ethers::contract::Lazy< + ethers::core::abi::Abi, + > = ethers::contract::Lazy::new(|| { + serde_json :: from_str ("{\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_morpho\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minHealthFactor\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"rewardDistributor\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__ConstructorHealthFactorTooLow\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__ExternalReceiverBlocked\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"asset\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"BaseAdaptor__PricingNotSupported\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__Slippage\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__UserDepositsNotAllowed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__UserWithdrawsNotAllowed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"MorphoAaveV3ATokenCollateralAdaptor__HealthFactorTooLow\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"assetOf\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"assetsUsed\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20[]\",\n \"name\": \"assets\",\n \"type\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimable\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"name\": \"claim\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"assets\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"deposit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"tokenToDeposit\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountToDeposit\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"depositToAaveV3Morpho\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"identifier\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"isDebt\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"minimumHealthFactor\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"morpho\",\n \"outputs\": [\n {\n \"internalType\": \"contract IMorphoV3\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"morphoRewardsDistributor\",\n \"outputs\": [\n {\n \"internalType\": \"contract RewardsDistributor\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"asset\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"revokeApproval\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"slippage\",\n \"outputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"\",\n \"type\": \"uint32\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"assets\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"tokenToWithdraw\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountToWithdraw\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"withdrawFromAaveV3Morpho\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"withdrawableFrom\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": {\n \"object\": \"0x60e06040523480156200001157600080fd5b5060405162001518380380620015188339810160408190526200003491620000ae565b6001600160a01b0381166080526200004c8262000064565b506001600160a01b0390911660a05260c052620000ef565b670e92596fd62900008110156200008e576040516397ed5f4160e01b815260040160405180910390fd5b50565b80516001600160a01b0381168114620000a957600080fd5b919050565b600080600060608486031215620000c457600080fd5b620000cf8462000091565b925060208401519150620000e66040850162000091565b90509250925092565b60805160a05160c051611390620001886000396000818161010a01526103f001526000818161025101528181610352015281816103c70152818161044f015281816104a00152818161051401528181610563015281816105b40152818161062801528181610691015281816107fe015281816108e5015281816109ab0152610a6c01526000818161018f01526102b001526113906000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80637998a1c411610097578063d3bfe76a11610066578063d3bfe76a14610239578063d8fbc8331461024c578063e170a9bf14610273578063fa50e5d21461028657600080fd5b80637998a1c4146101ef57806389353a09146101f7578063aeffddde14610206578063c9111bd71461022657600080fd5b806353cbf54c116100d357806353cbf54c146101775780635b5d4d781461018a57806369445c31146101c957806378415365146101dc57600080fd5b80631caff8b1146101055780632f52ebb71461013f57806337761272146101545780633e032a3b14610167575b600080fd5b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61015261014d366004610e3a565b610299565b005b610152610162366004610ef1565b61031f565b6040516123288152602001610136565b610152610185366004610ef1565b610434565b6101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610136565b6101526101d7366004610f8d565b61053c565b61012c6101ea366004610ffa565b610652565b61012c610705565b60405160008152602001610136565b610219610214366004610ffa565b61077a565b604051610136919061102f565b61015261023436600461107c565b6107dd565b6101526102473660046110fc565b61095d565b6101b17f000000000000000000000000000000000000000000000000000000000000000081565b6101b1610281366004610ffa565b610972565b61012c610294366004611135565b610989565b604051630f44fe1d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633d13f874906102e990309086908690600401611199565b600060405180830381600087803b15801561030357600080fd5b505af1158015610317573d6000803e3d6000fd5b505050505050565b604051632bbccf0160e01b81526001600160a01b03838116600483015260248201839052306044830181905260648301527f00000000000000000000000000000000000000000000000000000000000000001690632bbccf01906084016020604051808303816000875af115801561039b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bf91906111f6565b5060006103ec7f000000000000000000000000000000000000000000000000000000000000000030610ae4565b90507f000000000000000000000000000000000000000000000000000000000000000081101561042f57604051631976ce1360e31b815260040160405180910390fd5b505050565b61043e8282610b8e565b90506104746001600160a01b0383167f000000000000000000000000000000000000000000000000000000000000000083610c0f565b604051636c887d3360e11b81526001600160a01b038381166004830152602482018390523060448301527f0000000000000000000000000000000000000000000000000000000000000000169063d910fa66906064016020604051808303816000875af11580156104e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050d91906111f6565b50610538827f0000000000000000000000000000000000000000000000000000000000000000610c8a565b5050565b600082806020019051810190610552919061120f565b90506105886001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000086610c0f565b604051636c887d3360e11b81526001600160a01b038281166004830152602482018690523060448301527f0000000000000000000000000000000000000000000000000000000000000000169063d910fa66906064016020604051808303816000875af11580156105fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062191906111f6565b5061064c817f0000000000000000000000000000000000000000000000000000000000000000610c8a565b50505050565b60008082806020019051810190610669919061120f565b60405163e7602b9d60e01b81526001600160a01b0380831660048301523360248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063e7602b9d90604401602060405180830381865afa1580156106da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106fe91906111f6565b9392505050565b600060405160200161075f906020808252602e908201527f4d6f7270686f20416176652056332061546f6b656e20436f6c6c61746572616c60408201526d1020b230b83a37b9102b1018971960911b606082015260800190565b60405160208183030381529060405280519060200120905090565b604080516001808252818301909252606091602080830190803683370190505090506107a582610972565b816000815181106107b8576107b861122c565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b6107e683610d19565b604051631dd64f3160e21b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906377593cc490602401600060405180830381865afa15801561084d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108759190810190611242565b80519091501561089857604051635f5003c560e11b815260040160405180910390fd5b6000838060200190518101906108ae919061120f565b604051632bbccf0160e01b81526001600160a01b0380831660048301526024820189905230604483015287811660648301529192507f000000000000000000000000000000000000000000000000000000000000000090911690632bbccf01906084016020604051808303816000875af1158015610930573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095491906111f6565b50505050505050565b6105386001600160a01b038316826000610c0f565b600080828060200190518101906106fe919061120f565b604051631dd64f3160e21b815233600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906377593cc490602401600060405180830381865afa1580156109f2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a1a9190810190611242565b805190915015610a2e576000915050610ade565b600084806020019051810190610a44919061120f565b60405163e7602b9d60e01b81526001600160a01b0380831660048301523360248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063e7602b9d90604401602060405180830381865afa158015610ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad991906111f6565b925050505b92915050565b604051632459428560e11b81526001600160a01b03828116600483015260009182918516906348b2850a90602401606060405180830381865afa158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906112dc565b90506000816040015111610b6957600019610b86565b60208101516040820151610b8691670de0b6b3a764000091610db0565b949350505050565b60006000198203610c08576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610bdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0191906111f6565b9050610ade565b5080610ade565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d116001600051141617169150508061064c5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b604482015260640160405180910390fd5b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa158015610cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfe91906111f6565b1115610538576105386001600160a01b038316826000610c0f565b6001600160a01b0381163014801590610d8f5750306001600160a01b0316634c4602da6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8f9190611338565b15610dad576040516307de9b5160e21b815260040160405180910390fd5b50565b828202811515841585830485141716610dc857600080fd5b0492915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610e0e57610e0e610dcf565b604052919050565b600067ffffffffffffffff821115610e3057610e30610dcf565b5060051b60200190565b60008060408385031215610e4d57600080fd5b8235915060208084013567ffffffffffffffff811115610e6c57600080fd5b8401601f81018613610e7d57600080fd5b8035610e90610e8b82610e16565b610de5565b81815260059190911b82018301908381019088831115610eaf57600080fd5b928401925b82841015610ecd57833582529284019290840190610eb4565b80955050505050509250929050565b6001600160a01b0381168114610dad57600080fd5b60008060408385031215610f0457600080fd5b8235610f0f81610edc565b946020939093013593505050565b600082601f830112610f2e57600080fd5b813567ffffffffffffffff811115610f4857610f48610dcf565b610f5b601f8201601f1916602001610de5565b818152846020838601011115610f7057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215610fa257600080fd5b83359250602084013567ffffffffffffffff80821115610fc157600080fd5b610fcd87838801610f1d565b93506040860135915080821115610fe357600080fd5b50610ff086828701610f1d565b9150509250925092565b60006020828403121561100c57600080fd5b813567ffffffffffffffff81111561102357600080fd5b610b8684828501610f1d565b6020808252825182820181905260009190848201906040850190845b818110156110705783516001600160a01b03168352928401929184019160010161104b565b50909695505050505050565b6000806000806080858703121561109257600080fd5b8435935060208501356110a481610edc565b9250604085013567ffffffffffffffff808211156110c157600080fd5b6110cd88838901610f1d565b935060608701359150808211156110e357600080fd5b506110f087828801610f1d565b91505092959194509250565b6000806040838503121561110f57600080fd5b823561111a81610edc565b9150602083013561112a81610edc565b809150509250929050565b6000806040838503121561114857600080fd5b823567ffffffffffffffff8082111561116057600080fd5b61116c86838701610f1d565b9350602085013591508082111561118257600080fd5b5061118f85828601610f1d565b9150509250929050565b6001600160a01b038416815260208082018490526060604083018190528351908301819052600091848101916080850190845b818110156111e8578451835293830193918301916001016111cc565b509098975050505050505050565b60006020828403121561120857600080fd5b5051919050565b60006020828403121561122157600080fd5b81516106fe81610edc565b634e487b7160e01b600052603260045260246000fd5b6000602080838503121561125557600080fd5b825167ffffffffffffffff81111561126c57600080fd5b8301601f8101851361127d57600080fd5b805161128b610e8b82610e16565b81815260059190911b820183019083810190878311156112aa57600080fd5b928401925b828410156112d15783516112c281610edc565b825292840192908401906112af565b979650505050505050565b6000606082840312156112ee57600080fd5b6040516060810181811067ffffffffffffffff8211171561131157611311610dcf565b80604052508251815260208301516020820152604083015160408201528091505092915050565b60006020828403121561134a57600080fd5b815180151581146106fe57600080fdfea264697066735822122022fe2e674f50c4799da7354f6ba002f00b78639102020302980a5c158bc7557164736f6c63430008100033\",\n \"sourceMap\": \"575:6593:199:-:0;;;1600:305;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;629:72:203;;;;1760:54:199::1;1798:15:::0;1760:37:::1;:54::i;:::-;-1:-1:-1::0;;;;;;1824:27:199;;::::1;;::::0;1861:37:::1;::::0;575:6593;;8743:233:188;2760:7;8847:19;:57;8843:126;;;8925:44;;-1:-1:-1;;;8925:44:188;;;;;;;;;;;8843:126;8743:233;:::o;14:177:258:-;93:13;;-1:-1:-1;;;;;135:31:258;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:354::-;284:6;292;300;353:2;341:9;332:7;328:23;324:32;321:52;;;369:1;366;359:12;321:52;392:40;422:9;392:40;:::i;:::-;382:50;;472:2;461:9;457:18;451:25;441:35;;495:49;540:2;529:9;525:18;495:49;:::i;:::-;485:59;;196:354;;;;;:::o;:::-;575:6593:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\",\n \"linkReferences\": {}\n },\n \"deployedBytecode\": {\n \"object\": \"0x608060405234801561001057600080fd5b50600436106101005760003560e01c80637998a1c411610097578063d3bfe76a11610066578063d3bfe76a14610239578063d8fbc8331461024c578063e170a9bf14610273578063fa50e5d21461028657600080fd5b80637998a1c4146101ef57806389353a09146101f7578063aeffddde14610206578063c9111bd71461022657600080fd5b806353cbf54c116100d357806353cbf54c146101775780635b5d4d781461018a57806369445c31146101c957806378415365146101dc57600080fd5b80631caff8b1146101055780632f52ebb71461013f57806337761272146101545780633e032a3b14610167575b600080fd5b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b61015261014d366004610e3a565b610299565b005b610152610162366004610ef1565b61031f565b6040516123288152602001610136565b610152610185366004610ef1565b610434565b6101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610136565b6101526101d7366004610f8d565b61053c565b61012c6101ea366004610ffa565b610652565b61012c610705565b60405160008152602001610136565b610219610214366004610ffa565b61077a565b604051610136919061102f565b61015261023436600461107c565b6107dd565b6101526102473660046110fc565b61095d565b6101b17f000000000000000000000000000000000000000000000000000000000000000081565b6101b1610281366004610ffa565b610972565b61012c610294366004611135565b610989565b604051630f44fe1d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633d13f874906102e990309086908690600401611199565b600060405180830381600087803b15801561030357600080fd5b505af1158015610317573d6000803e3d6000fd5b505050505050565b604051632bbccf0160e01b81526001600160a01b03838116600483015260248201839052306044830181905260648301527f00000000000000000000000000000000000000000000000000000000000000001690632bbccf01906084016020604051808303816000875af115801561039b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103bf91906111f6565b5060006103ec7f000000000000000000000000000000000000000000000000000000000000000030610ae4565b90507f000000000000000000000000000000000000000000000000000000000000000081101561042f57604051631976ce1360e31b815260040160405180910390fd5b505050565b61043e8282610b8e565b90506104746001600160a01b0383167f000000000000000000000000000000000000000000000000000000000000000083610c0f565b604051636c887d3360e11b81526001600160a01b038381166004830152602482018390523060448301527f0000000000000000000000000000000000000000000000000000000000000000169063d910fa66906064016020604051808303816000875af11580156104e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050d91906111f6565b50610538827f0000000000000000000000000000000000000000000000000000000000000000610c8a565b5050565b600082806020019051810190610552919061120f565b90506105886001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000086610c0f565b604051636c887d3360e11b81526001600160a01b038281166004830152602482018690523060448301527f0000000000000000000000000000000000000000000000000000000000000000169063d910fa66906064016020604051808303816000875af11580156105fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062191906111f6565b5061064c817f0000000000000000000000000000000000000000000000000000000000000000610c8a565b50505050565b60008082806020019051810190610669919061120f565b60405163e7602b9d60e01b81526001600160a01b0380831660048301523360248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063e7602b9d90604401602060405180830381865afa1580156106da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106fe91906111f6565b9392505050565b600060405160200161075f906020808252602e908201527f4d6f7270686f20416176652056332061546f6b656e20436f6c6c61746572616c60408201526d1020b230b83a37b9102b1018971960911b606082015260800190565b60405160208183030381529060405280519060200120905090565b604080516001808252818301909252606091602080830190803683370190505090506107a582610972565b816000815181106107b8576107b861122c565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b6107e683610d19565b604051631dd64f3160e21b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906377593cc490602401600060405180830381865afa15801561084d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108759190810190611242565b80519091501561089857604051635f5003c560e11b815260040160405180910390fd5b6000838060200190518101906108ae919061120f565b604051632bbccf0160e01b81526001600160a01b0380831660048301526024820189905230604483015287811660648301529192507f000000000000000000000000000000000000000000000000000000000000000090911690632bbccf01906084016020604051808303816000875af1158015610930573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095491906111f6565b50505050505050565b6105386001600160a01b038316826000610c0f565b600080828060200190518101906106fe919061120f565b604051631dd64f3160e21b815233600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906377593cc490602401600060405180830381865afa1580156109f2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a1a9190810190611242565b805190915015610a2e576000915050610ade565b600084806020019051810190610a44919061120f565b60405163e7602b9d60e01b81526001600160a01b0380831660048301523360248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063e7602b9d90604401602060405180830381865afa158015610ab5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad991906111f6565b925050505b92915050565b604051632459428560e11b81526001600160a01b03828116600483015260009182918516906348b2850a90602401606060405180830381865afa158015610b2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5391906112dc565b90506000816040015111610b6957600019610b86565b60208101516040820151610b8691670de0b6b3a764000091610db0565b949350505050565b60006000198203610c08576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610bdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0191906111f6565b9050610ade565b5080610ade565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d116001600051141617169150508061064c5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b604482015260640160405180910390fd5b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa158015610cda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfe91906111f6565b1115610538576105386001600160a01b038316826000610c0f565b6001600160a01b0381163014801590610d8f5750306001600160a01b0316634c4602da6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8f9190611338565b15610dad576040516307de9b5160e21b815260040160405180910390fd5b50565b828202811515841585830485141716610dc857600080fd5b0492915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610e0e57610e0e610dcf565b604052919050565b600067ffffffffffffffff821115610e3057610e30610dcf565b5060051b60200190565b60008060408385031215610e4d57600080fd5b8235915060208084013567ffffffffffffffff811115610e6c57600080fd5b8401601f81018613610e7d57600080fd5b8035610e90610e8b82610e16565b610de5565b81815260059190911b82018301908381019088831115610eaf57600080fd5b928401925b82841015610ecd57833582529284019290840190610eb4565b80955050505050509250929050565b6001600160a01b0381168114610dad57600080fd5b60008060408385031215610f0457600080fd5b8235610f0f81610edc565b946020939093013593505050565b600082601f830112610f2e57600080fd5b813567ffffffffffffffff811115610f4857610f48610dcf565b610f5b601f8201601f1916602001610de5565b818152846020838601011115610f7057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215610fa257600080fd5b83359250602084013567ffffffffffffffff80821115610fc157600080fd5b610fcd87838801610f1d565b93506040860135915080821115610fe357600080fd5b50610ff086828701610f1d565b9150509250925092565b60006020828403121561100c57600080fd5b813567ffffffffffffffff81111561102357600080fd5b610b8684828501610f1d565b6020808252825182820181905260009190848201906040850190845b818110156110705783516001600160a01b03168352928401929184019160010161104b565b50909695505050505050565b6000806000806080858703121561109257600080fd5b8435935060208501356110a481610edc565b9250604085013567ffffffffffffffff808211156110c157600080fd5b6110cd88838901610f1d565b935060608701359150808211156110e357600080fd5b506110f087828801610f1d565b91505092959194509250565b6000806040838503121561110f57600080fd5b823561111a81610edc565b9150602083013561112a81610edc565b809150509250929050565b6000806040838503121561114857600080fd5b823567ffffffffffffffff8082111561116057600080fd5b61116c86838701610f1d565b9350602085013591508082111561118257600080fd5b5061118f85828601610f1d565b9150509250929050565b6001600160a01b038416815260208082018490526060604083018190528351908301819052600091848101916080850190845b818110156111e8578451835293830193918301916001016111cc565b509098975050505050505050565b60006020828403121561120857600080fd5b5051919050565b60006020828403121561122157600080fd5b81516106fe81610edc565b634e487b7160e01b600052603260045260246000fd5b6000602080838503121561125557600080fd5b825167ffffffffffffffff81111561126c57600080fd5b8301601f8101851361127d57600080fd5b805161128b610e8b82610e16565b81815260059190911b820183019083810190878311156112aa57600080fd5b928401925b828410156112d15783516112c281610edc565b825292840192908401906112af565b979650505050505050565b6000606082840312156112ee57600080fd5b6040516060810181811067ffffffffffffffff8211171561131157611311610dcf565b80604052508251815260208301516020820152604083015160408201528091505092915050565b60006020828403121561134a57600080fd5b815180151581146106fe57600080fdfea264697066735822122022fe2e674f50c4799da7354f6ba002f00b78639102020302980a5c158bc7557164736f6c63430008100033\",\n \"sourceMap\": \"575:6593:199:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1549:44;;;;;;;;160:25:258;;;148:2;133:18;1549:44:199;;;;;;;;902:145:203;;;;;;:::i;:::-;;:::i;:::-;;6707:459:199;;;;;;:::i;:::-;;:::i;2415:78:188:-;;;2481:5;2389:42:258;;2377:2;2362:18;2415:78:188;2245:192:258;6030:437:199;;;;;;:::i;:::-;;:::i;505:60:203:-;;;;;;;;-1:-1:-1;;;;;2634:32:258;;;2616:51;;2604:2;2589:18;505:60:203;2442:231:258;2912:436:199;;;;;;:::i;:::-;;:::i;4985:221::-;;;;;;:::i;:::-;;:::i;2324:156::-;;;:::i;5542:83::-;;;5590:4;4472:41:258;;4460:2;4445:18;5542:83:199;4332:187:258;5934:180:188;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3806:584:199:-;;;;;;:::i;:::-;;:::i;9204:107:188:-;;;;;;:::i;:::-;;:::i;1418:33:199:-;;;;;5283:175;;;;;;:::i;:::-;;:::i;4490:384::-;;;;;;:::i;:::-;;:::i;902:145:203:-;977:63;;-1:-1:-1;;;977:63:203;;-1:-1:-1;;;;;977:24:203;:30;;;;:63;;1016:4;;1023:9;;1034:5;;977:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;902:145;;:::o;6707:459:199:-;6807:99;;-1:-1:-1;;;6807:99:199;;-1:-1:-1;;;;;8466:15:258;;;6807:99:199;;;8448:34:258;8498:18;;;8491:34;;;6885:4:199;8541:18:258;;;8534:43;;;8593:18;;;8586:43;6807:6:199;:25;;;;8382:19:258;;6807:99:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6979:20;7002:43;7023:6;7039:4;7002:20;:43::i;:::-;6979:66;;7074:19;7059:12;:34;7055:104;;;7102:57;;-1:-1:-1;;;7102:57:199;;;;;;;;;;;7055:104;6797:369;6707:459;;:::o;6030:437::-;6143:46;6157:14;6173:15;6143:13;:46::i;:::-;6125:64;-1:-1:-1;6199:60:199;-1:-1:-1;;;;;6199:26:199;;6234:6;6125:64;6199:26;:60::i;:::-;6269:80;;-1:-1:-1;;;6269:80:199;;-1:-1:-1;;;;;9087:15:258;;;6269:80:199;;;9069:34:258;9119:18;;;9112:34;;;6343:4:199;9162:18:258;;;9155:43;6269:6:199;:23;;;;9004:18:258;;6269:80:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6404:56;6428:14;6452:6;6404:23;:56::i;:::-;6030:437;;:::o;2912:436::-;3048:16;3078:11;3067:32;;;;;;;;;;;;:::i;:::-;3048:51;-1:-1:-1;3109:47:199;-1:-1:-1;;;;;3109:22:199;;3140:6;3149;3109:22;:47::i;:::-;3167:67;;-1:-1:-1;;;3167:67:199;;-1:-1:-1;;;;;9087:15:258;;;3167:67:199;;;9069:34:258;9119:18;;;9112:34;;;3228:4:199;9162:18:258;;;9155:43;3167:6:199;:23;;;;9004:18:258;;3167:67:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3289:52;3313:10;3333:6;3289:23;:52::i;:::-;3001:347;2912:436;;;:::o;4985:221::-;5060:7;5079:18;5111:11;5100:34;;;;;;;;;;;;:::i;:::-;5151:48;;-1:-1:-1;;;5151:48:199;;-1:-1:-1;;;;;9988:15:258;;;5151:48:199;;;9970:34:258;5188:10:199;10020:18:258;;;10013:43;5079:55:199;;-1:-1:-1;5151:6:199;:24;;;;;;9905:18:258;;5151:48:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5144:55;4985:221;-1:-1:-1;;;4985:221:199:o;2324:156::-;2376:7;2412:60;;;;;;10269:2:258;10251:21;;;10308:2;10288:18;;;10281:30;10347:34;10342:2;10327:18;;10320:62;-1:-1:-1;;;10413:2:258;10398:18;;10391:44;10467:3;10452:19;;10067:410;2412:60:199;;;;;;;;;;;;;2402:71;;;;;;2395:78;;2324:156;:::o;5934:180:188:-;6051:14;;;6063:1;6051:14;;;;;;;;;6009:21;;6051:14;;;;;;;;;;;-1:-1:-1;6051:14:188;6042:23;;6087:20;6095:11;6087:7;:20::i;:::-;6075:6;6082:1;6075:9;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;6075:32:188;;;-1:-1:-1;;;;;6075:32:188;;;;;5934:180;;;:::o;3806:584:199:-;3964:32;3987:8;3964:22;:32::i;:::-;4084:33;;-1:-1:-1;;;4084:33:199;;4111:4;4084:33;;;2616:51:258;4057:24:199;;4084:6;-1:-1:-1;;;;;4084:18:199;;;;2589::258;;4084:33:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4084:33:199;;;;;;;;;;;;:::i;:::-;4131:14;;4057:60;;-1:-1:-1;4131:18:199;4127:69;;4158:38;;-1:-1:-1;;;4158:38:199;;;;;;;;;;;4127:69;4207:18;4239:11;4228:34;;;;;;;;;;;;:::i;:::-;4313:70;;-1:-1:-1;;;4313:70:199;;-1:-1:-1;;;;;8466:15:258;;;4313:70:199;;;8448:34:258;8498:18;;;8491:34;;;4367:4:199;8541:18:258;;;8534:43;8613:15;;;8593:18;;;8586:43;4207:55:199;;-1:-1:-1;4313:6:199;:25;;;;;;8382:19:258;;4313:70:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3914:476;;3806:584;;;;:::o;9204:107:188:-;9275:29;-1:-1:-1;;;;;9275:17:188;;9293:7;9302:1;9275:17;:29::i;5283:175:199:-;5356:5;5373:16;5403:11;5392:32;;;;;;;;;;;;:::i;4490:384::-;4632:30;;-1:-1:-1;;;4632:30:199;;4651:10;4632:30;;;2616:51:258;4586:7:199;;;;-1:-1:-1;;;;;4632:6:199;:18;;;;2589::258;;4632:30:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4632:30:199;;;;;;;;;;;;:::i;:::-;4676:14;;4605:57;;-1:-1:-1;4676:18:199;4672:196;;4703:1;4696:8;;;;;4672:196;4733:18;4765:11;4754:34;;;;;;;;;;;;:::i;:::-;4809:48;;-1:-1:-1;;;4809:48:199;;-1:-1:-1;;;;;9988:15:258;;;4809:48:199;;;9970:34:258;4846:10:199;10020:18:258;;;10013:43;4733:55:199;;-1:-1:-1;4809:6:199;:24;;;;;;9905:18:258;;4809:48:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4802:55;;;;4490:384;;;;;:::o;629:358:202:-;780:26;;-1:-1:-1;;;780:26:202;;-1:-1:-1;;;;;2634:32:258;;;780:26:202;;;2616:51:258;714:7:202;;;;780:20;;;;;2589:18:258;;780:26:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;733:73;;857:1;836:13;:18;;;:22;:144;;-1:-1:-1;;836:144:202;;;902:21;;;;925:18;;;;877:67;;885:4;;877:24;:67::i;:::-;817:163;629:358;-1:-1:-1;;;;629:358:202:o;7816:207:188:-;7899:7;-1:-1:-1;;7922:6:188;:27;7918:98;;7958:30;;-1:-1:-1;;;7958:30:188;;7982:4;7958:30;;;2616:51:258;-1:-1:-1;;;;;7958:15:188;;;;;2589:18:258;;7958:30:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7951:37;;;;7918:98;-1:-1:-1;8010:6:188;8003:13;;4327:1454:104;4438:12;4565:4;4559:11;-1:-1:-1;;;4688:17:104;4681:93;4821:2;4817:1;4798:17;4794:25;4787:37;4901:6;4896:2;4877:17;4873:26;4866:42;5703:2;5700:1;5696:2;5677:17;5674:1;5667:5;5660;5655:51;5224:16;5217:24;5211:2;5193:16;5190:24;5186:1;5182;5176:8;5173:15;5169:46;5166:76;4966:754;4955:765;;;5748:7;5740:34;;;;-1:-1:-1;;;5740:34:104;;12564:2:258;5740:34:104;;;12546:21:258;12603:2;12583:18;;;12576:30;-1:-1:-1;;;12622:18:258;;;12615:44;12676:18;;5740:34:104;;;;;;;8158:167:188;8244:39;;-1:-1:-1;;;8244:39:188;;8268:4;8244:39;;;9970:34:258;-1:-1:-1;;;;;10040:15:258;;;10020:18;;;10013:43;8286:1:188;;8244:15;;;;;;9905:18:258;;8244:39:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;8240:78;;;8289:29;-1:-1:-1;;;;;8289:17:188;;8307:7;8316:1;8289:17;:29::i;8425:218::-;-1:-1:-1;;;;;8503:25:188;;8523:4;8503:25;;;;:74;;;8547:4;-1:-1:-1;;;;;8532:43:188;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8499:137;;;8598:38;;-1:-1:-1;;;8598:38:188;;;;;;;;;;;8499:137;8425:218;:::o;1357:535:221:-;1563:9;;;1694:19;;1687:27;1719:9;;1733;;;1730:16;;1716:31;1683:65;1673:121;;1778:1;1775;1768:12;1673:121;1857:19;;1357:535;-1:-1:-1;;1357:535:221:o;196:127:258:-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:275;399:2;393:9;464:2;445:13;;-1:-1:-1;;441:27:258;429:40;;499:18;484:34;;520:22;;;481:62;478:88;;;546:18;;:::i;:::-;582:2;575:22;328:275;;-1:-1:-1;328:275:258:o;608:183::-;668:4;701:18;693:6;690:30;687:56;;;723:18;;:::i;:::-;-1:-1:-1;768:1:258;764:14;780:4;760:25;;608:183::o;796:959::-;889:6;897;950:2;938:9;929:7;925:23;921:32;918:52;;;966:1;963;956:12;918:52;1002:9;989:23;979:33;;1031:2;1084;1073:9;1069:18;1056:32;1111:18;1103:6;1100:30;1097:50;;;1143:1;1140;1133:12;1097:50;1166:22;;1219:4;1211:13;;1207:27;-1:-1:-1;1197:55:258;;1248:1;1245;1238:12;1197:55;1284:2;1271:16;1307:60;1323:43;1363:2;1323:43;:::i;:::-;1307:60;:::i;:::-;1401:15;;;1483:1;1479:10;;;;1471:19;;1467:28;;;1432:12;;;;1507:19;;;1504:39;;;1539:1;1536;1529:12;1504:39;1563:11;;;;1583:142;1599:6;1594:3;1591:15;1583:142;;;1665:17;;1653:30;;1616:12;;;;1703;;;;1583:142;;;1744:5;1734:15;;;;;;;796:959;;;;;:::o;1760:138::-;-1:-1:-1;;;;;1842:31:258;;1832:42;;1822:70;;1888:1;1885;1878:12;1903:337;1986:6;1994;2047:2;2035:9;2026:7;2022:23;2018:32;2015:52;;;2063:1;2060;2053:12;2015:52;2102:9;2089:23;2121:38;2153:5;2121:38;:::i;:::-;2178:5;2230:2;2215:18;;;;2202:32;;-1:-1:-1;;;1903:337:258:o;2678:530::-;2720:5;2773:3;2766:4;2758:6;2754:17;2750:27;2740:55;;2791:1;2788;2781:12;2740:55;2827:6;2814:20;2853:18;2849:2;2846:26;2843:52;;;2875:18;;:::i;:::-;2919:55;2962:2;2943:13;;-1:-1:-1;;2939:27:258;2968:4;2935:38;2919:55;:::i;:::-;2999:2;2990:7;2983:19;3045:3;3038:4;3033:2;3025:6;3021:15;3017:26;3014:35;3011:55;;;3062:1;3059;3052:12;3011:55;3127:2;3120:4;3112:6;3108:17;3101:4;3092:7;3088:18;3075:55;3175:1;3150:16;;;3168:4;3146:27;3139:38;;;;3154:7;2678:530;-1:-1:-1;;;2678:530:258:o;3213:607::-;3308:6;3316;3324;3377:2;3365:9;3356:7;3352:23;3348:32;3345:52;;;3393:1;3390;3383:12;3345:52;3429:9;3416:23;3406:33;;3490:2;3479:9;3475:18;3462:32;3513:18;3554:2;3546:6;3543:14;3540:34;;;3570:1;3567;3560:12;3540:34;3593:49;3634:7;3625:6;3614:9;3610:22;3593:49;:::i;:::-;3583:59;;3695:2;3684:9;3680:18;3667:32;3651:48;;3724:2;3714:8;3711:16;3708:36;;;3740:1;3737;3730:12;3708:36;;3763:51;3806:7;3795:8;3784:9;3780:24;3763:51;:::i;:::-;3753:61;;;3213:607;;;;;:::o;3825:320::-;3893:6;3946:2;3934:9;3925:7;3921:23;3917:32;3914:52;;;3962:1;3959;3952:12;3914:52;4002:9;3989:23;4035:18;4027:6;4024:30;4021:50;;;4067:1;4064;4057:12;4021:50;4090:49;4131:7;4122:6;4111:9;4107:22;4090:49;:::i;4524:673::-;4710:2;4762:21;;;4832:13;;4735:18;;;4854:22;;;4681:4;;4710:2;4933:15;;;;4907:2;4892:18;;;4681:4;4976:195;4990:6;4987:1;4984:13;4976:195;;;5055:13;;-1:-1:-1;;;;;5051:39:258;5039:52;;5146:15;;;;5111:12;;;;5087:1;5005:9;4976:195;;;-1:-1:-1;5188:3:258;;4524:673;-1:-1:-1;;;;;;4524:673:258:o;5202:750::-;5306:6;5314;5322;5330;5383:3;5371:9;5362:7;5358:23;5354:33;5351:53;;;5400:1;5397;5390:12;5351:53;5436:9;5423:23;5413:33;;5496:2;5485:9;5481:18;5468:32;5509:38;5541:5;5509:38;:::i;:::-;5566:5;-1:-1:-1;5622:2:258;5607:18;;5594:32;5645:18;5675:14;;;5672:34;;;5702:1;5699;5692:12;5672:34;5725:49;5766:7;5757:6;5746:9;5742:22;5725:49;:::i;:::-;5715:59;;5827:2;5816:9;5812:18;5799:32;5783:48;;5856:2;5846:8;5843:16;5840:36;;;5872:1;5869;5862:12;5840:36;;5895:51;5938:7;5927:8;5916:9;5912:24;5895:51;:::i;:::-;5885:61;;;5202:750;;;;;;;:::o;5957:417::-;6040:6;6048;6101:2;6089:9;6080:7;6076:23;6072:32;6069:52;;;6117:1;6114;6107:12;6069:52;6156:9;6143:23;6175:38;6207:5;6175:38;:::i;:::-;6232:5;-1:-1:-1;6289:2:258;6274:18;;6261:32;6302:40;6261:32;6302:40;:::i;:::-;6361:7;6351:17;;;5957:417;;;;;:::o;6829:539::-;6915:6;6923;6976:2;6964:9;6955:7;6951:23;6947:32;6944:52;;;6992:1;6989;6982:12;6944:52;7032:9;7019:23;7061:18;7102:2;7094:6;7091:14;7088:34;;;7118:1;7115;7108:12;7088:34;7141:49;7182:7;7173:6;7162:9;7158:22;7141:49;:::i;:::-;7131:59;;7243:2;7232:9;7228:18;7215:32;7199:48;;7272:2;7262:8;7259:16;7256:36;;;7288:1;7285;7278:12;7256:36;;7311:51;7354:7;7343:8;7332:9;7328:24;7311:51;:::i;:::-;7301:61;;;6829:539;;;;;:::o;7373:801::-;-1:-1:-1;;;;;7649:32:258;;7631:51;;7701:2;7719:18;;;7712:34;;;7619:2;7777;7762:18;;7755:30;;;7834:13;;7604:18;;;7856:22;;;7571:4;;7936:15;;;;7909:3;7894:19;;;7571:4;7979:169;7993:6;7990:1;7987:13;7979:169;;;8054:13;;8042:26;;8123:15;;;;8088:12;;;;8015:1;8008:9;7979:169;;;-1:-1:-1;8165:3:258;;7373:801;-1:-1:-1;;;;;;;;7373:801:258:o;8640:184::-;8710:6;8763:2;8751:9;8742:7;8738:23;8734:32;8731:52;;;8779:1;8776;8769:12;8731:52;-1:-1:-1;8802:16:258;;8640:184;-1:-1:-1;8640:184:258:o;9209:273::-;9294:6;9347:2;9335:9;9326:7;9322:23;9318:32;9315:52;;;9363:1;9360;9353:12;9315:52;9395:9;9389:16;9414:38;9446:5;9414:38;:::i;10482:127::-;10543:10;10538:3;10534:20;10531:1;10524:31;10574:4;10571:1;10564:15;10598:4;10595:1;10588:15;10822:963;10917:6;10948:2;10991;10979:9;10970:7;10966:23;10962:32;10959:52;;;11007:1;11004;10997:12;10959:52;11040:9;11034:16;11073:18;11065:6;11062:30;11059:50;;;11105:1;11102;11095:12;11059:50;11128:22;;11181:4;11173:13;;11169:27;-1:-1:-1;11159:55:258;;11210:1;11207;11200:12;11159:55;11239:2;11233:9;11262:60;11278:43;11318:2;11278:43;:::i;11262:60::-;11356:15;;;11438:1;11434:10;;;;11426:19;;11422:28;;;11387:12;;;;11462:19;;;11459:39;;;11494:1;11491;11484:12;11459:39;11518:11;;;;11538:217;11554:6;11549:3;11546:15;11538:217;;;11627:3;11621:10;11644:38;11676:5;11644:38;:::i;:::-;11695:18;;11571:12;;;;11733;;;;11538:217;;;11774:5;10822:963;-1:-1:-1;;;;;;;10822:963:258:o;11790:567::-;11892:6;11945:2;11933:9;11924:7;11920:23;11916:32;11913:52;;;11961:1;11958;11951:12;11913:52;11994:2;11988:9;12036:2;12028:6;12024:15;12105:6;12093:10;12090:22;12069:18;12057:10;12054:34;12051:62;12048:88;;;12116:18;;:::i;:::-;12156:10;12152:2;12145:22;;12197:9;12191:16;12183:6;12176:32;12262:2;12251:9;12247:18;12241:25;12236:2;12228:6;12224:15;12217:50;12321:2;12310:9;12306:18;12300:25;12295:2;12287:6;12283:15;12276:50;12345:6;12335:16;;;11790:567;;;;:::o;12705:277::-;12772:6;12825:2;12813:9;12804:7;12800:23;12796:32;12793:52;;;12841:1;12838;12831:12;12793:52;12873:9;12867:16;12926:5;12919:13;12912:21;12905:5;12902:32;12892:60;;12948:1;12945;12938:12\",\n \"linkReferences\": {},\n \"immutableReferences\": {\n \"65527\": [\n {\n \"start\": 593,\n \"length\": 32\n },\n {\n \"start\": 850,\n \"length\": 32\n },\n {\n \"start\": 967,\n \"length\": 32\n },\n {\n \"start\": 1103,\n \"length\": 32\n },\n {\n \"start\": 1184,\n \"length\": 32\n },\n {\n \"start\": 1300,\n \"length\": 32\n },\n {\n \"start\": 1379,\n \"length\": 32\n },\n {\n \"start\": 1460,\n \"length\": 32\n },\n {\n \"start\": 1576,\n \"length\": 32\n },\n {\n \"start\": 1681,\n \"length\": 32\n },\n {\n \"start\": 2046,\n \"length\": 32\n },\n {\n \"start\": 2277,\n \"length\": 32\n },\n {\n \"start\": 2475,\n \"length\": 32\n },\n {\n \"start\": 2668,\n \"length\": 32\n }\n ],\n \"65530\": [\n {\n \"start\": 266,\n \"length\": 32\n },\n {\n \"start\": 1008,\n \"length\": 32\n }\n ],\n \"66662\": [\n {\n \"start\": 399,\n \"length\": 32\n },\n {\n \"start\": 688,\n \"length\": 32\n }\n ]\n }\n },\n \"methodIdentifiers\": {\n \"assetOf(bytes)\": \"e170a9bf\",\n \"assetsUsed(bytes)\": \"aeffddde\",\n \"balanceOf(bytes)\": \"78415365\",\n \"claim(uint256,bytes32[])\": \"2f52ebb7\",\n \"deposit(uint256,bytes,bytes)\": \"69445c31\",\n \"depositToAaveV3Morpho(address,uint256)\": \"53cbf54c\",\n \"identifier()\": \"7998a1c4\",\n \"isDebt()\": \"89353a09\",\n \"minimumHealthFactor()\": \"1caff8b1\",\n \"morpho()\": \"d8fbc833\",\n \"morphoRewardsDistributor()\": \"5b5d4d78\",\n \"revokeApproval(address,address)\": \"d3bfe76a\",\n \"slippage()\": \"3e032a3b\",\n \"withdraw(uint256,address,bytes,bytes)\": \"c9111bd7\",\n \"withdrawFromAaveV3Morpho(address,uint256)\": \"37761272\",\n \"withdrawableFrom(bytes,bytes)\": \"fa50e5d2\"\n },\n \"rawMetadata\": \"{\\\"compiler\\\":{\\\"version\\\":\\\"0.8.16+commit.07a7930e\\\"},\\\"language\\\":\\\"Solidity\\\",\\\"output\\\":{\\\"abi\\\":[{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"_morpho\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"minHealthFactor\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"rewardDistributor\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"constructor\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__ConstructorHealthFactorTooLow\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__ExternalReceiverBlocked\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"BaseAdaptor__PricingNotSupported\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__Slippage\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__UserDepositsNotAllowed\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__UserWithdrawsNotAllowed\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"MorphoAaveV3ATokenCollateralAdaptor__HealthFactorTooLow\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"assetOf\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract ERC20\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"assetsUsed\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract ERC20[]\\\",\\\"name\\\":\\\"assets\\\",\\\"type\\\":\\\"address[]\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"balanceOf\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"claimable\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"bytes32[]\\\",\\\"name\\\":\\\"proof\\\",\\\"type\\\":\\\"bytes32[]\\\"}],\\\"name\\\":\\\"claim\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"assets\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"deposit\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"contract ERC20\\\",\\\"name\\\":\\\"tokenToDeposit\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"amountToDeposit\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"depositToAaveV3Morpho\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"identifier\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"bytes32\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes32\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"isDebt\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"bool\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bool\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"minimumHealthFactor\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"morpho\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract IMorphoV3\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"morphoRewardsDistributor\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract RewardsDistributor\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"contract ERC20\\\",\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"spender\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"revokeApproval\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"slippage\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint32\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint32\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"assets\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"receiver\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"withdraw\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"contract ERC20\\\",\\\"name\\\":\\\"tokenToWithdraw\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"amountToWithdraw\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"withdrawFromAaveV3Morpho\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"withdrawableFrom\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"}],\\\"devdoc\\\":{\\\"author\\\":\\\"crispymangoes\\\",\\\"kind\\\":\\\"dev\\\",\\\"methods\\\":{\\\"deposit(uint256,bytes,bytes)\\\":{\\\"details\\\":\\\"configurationData is NOT used\\\",\\\"params\\\":{\\\"adaptorData\\\":\\\"adaptor data containing the abi encoded ERC20 token\\\",\\\"assets\\\":\\\"the amount of assets to lend on Morpho\\\"}},\\\"depositToAaveV3Morpho(address,uint256)\\\":{\\\"details\\\":\\\"Uses `_maxAvailable` helper function, see BaseAdaptor.sol\\\",\\\"params\\\":{\\\"amountToDeposit\\\":\\\"the amount of `tokenToDeposit` to lend on Morpho.\\\",\\\"tokenToDeposit\\\":\\\"the token to lend on Morpho\\\"}},\\\"identifier()\\\":{\\\"details\\\":\\\"Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this Identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult.\\\"},\\\"revokeApproval(address,address)\\\":{\\\"params\\\":{\\\"asset\\\":\\\"the ERC20 asset to revoke `spender`s approval for\\\",\\\"spender\\\":\\\"the address to revoke approval for\\\"}},\\\"withdraw(uint256,address,bytes,bytes)\\\":{\\\"details\\\":\\\"Important to verify that external receivers are allowed if receiver is not Cellar address.\\\",\\\"params\\\":{\\\"adaptorData\\\":\\\"adaptor data containing the abi encoded aToken\\\",\\\"assets\\\":\\\"the amount of assets to withdraw from Morpho\\\",\\\"receiver\\\":\\\"the address to send withdrawn assets to\\\"}},\\\"withdrawFromAaveV3Morpho(address,uint256)\\\":{\\\"params\\\":{\\\"amountToWithdraw\\\":\\\"the amount of `tokenToWithdraw` to withdraw from Morpho\\\",\\\"tokenToWithdraw\\\":\\\"the token to withdraw from Morpho.\\\"}}},\\\"title\\\":\\\"Morpho Aave V3 aToken Adaptor\\\",\\\"version\\\":1},\\\"userdoc\\\":{\\\"errors\\\":{\\\"BaseAdaptor__ConstructorHealthFactorTooLow()\\\":[{\\\"notice\\\":\\\"Attempted to set a constructor minimum health factor to a value below `MINIMUM_CONSTRUCTOR_HEALTH_FACTOR()`.\\\"}],\\\"BaseAdaptor__ExternalReceiverBlocked()\\\":[{\\\"notice\\\":\\\"Attempted to specify an external receiver during a Cellar `callOnAdaptor` call.\\\"}],\\\"BaseAdaptor__PricingNotSupported(address)\\\":[{\\\"notice\\\":\\\"Attempted swap used unsupported output asset.\\\"}],\\\"BaseAdaptor__Slippage()\\\":[{\\\"notice\\\":\\\"Attempted swap has bad slippage.\\\"}],\\\"BaseAdaptor__UserDepositsNotAllowed()\\\":[{\\\"notice\\\":\\\"Attempted to deposit to a position where user deposits were not allowed.\\\"}],\\\"BaseAdaptor__UserWithdrawsNotAllowed()\\\":[{\\\"notice\\\":\\\"Attempted to withdraw from a position where user withdraws were not allowed.\\\"}],\\\"MorphoAaveV3ATokenCollateralAdaptor__HealthFactorTooLow()\\\":[{\\\"notice\\\":\\\"Attempted withdraw would lower Cellar health factor too low.\\\"}]},\\\"kind\\\":\\\"user\\\",\\\"methods\\\":{\\\"assetOf(bytes)\\\":{\\\"notice\\\":\\\"Returns the positions underlying asset.\\\"},\\\"assetsUsed(bytes)\\\":{\\\"notice\\\":\\\"When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup.\\\"},\\\"balanceOf(bytes)\\\":{\\\"notice\\\":\\\"Returns the cellars balance of the position in terms of underlying asset.\\\"},\\\"claim(uint256,bytes32[])\\\":{\\\"notice\\\":\\\"Allows cellars to claim Morpho Rewards.\\\"},\\\"deposit(uint256,bytes,bytes)\\\":{\\\"notice\\\":\\\"Cellar must approve Morpho to spend its assets, then call supplyCollateral to lend its assets.\\\"},\\\"depositToAaveV3Morpho(address,uint256)\\\":{\\\"notice\\\":\\\"Allows strategists to lend assets on Morpho.\\\"},\\\"isDebt()\\\":{\\\"notice\\\":\\\"This adaptor returns collateral, and not debt.\\\"},\\\"minimumHealthFactor()\\\":{\\\"notice\\\":\\\"Minimum Health Factor enforced after every aToken withdraw.\\\"},\\\"morpho()\\\":{\\\"notice\\\":\\\"The Morpho Aave V3 contract on current network.For mainnet use 0x33333aea097c193e66081E930c33020272b33333.\\\"},\\\"morphoRewardsDistributor()\\\":{\\\"notice\\\":\\\"The Morpho Aave V3 rewards handler contract on current network.For mainnet use 0x3B14E5C73e0A56D607A8688098326fD4b4292135.\\\"},\\\"revokeApproval(address,address)\\\":{\\\"notice\\\":\\\"Allows strategists to zero out an approval for a given `asset`.\\\"},\\\"slippage()\\\":{\\\"notice\\\":\\\"Max possible slippage when making a swap router swap.\\\"},\\\"withdraw(uint256,address,bytes,bytes)\\\":{\\\"notice\\\":\\\"Cellars must withdraw from Morpho, check if collateral is backing any loans and prevent withdraws if so.\\\"},\\\"withdrawFromAaveV3Morpho(address,uint256)\\\":{\\\"notice\\\":\\\"Allows strategists to withdraw assets from Morpho.\\\"},\\\"withdrawableFrom(bytes,bytes)\\\":{\\\"notice\\\":\\\"Checks that cellar has no active borrows, and if so returns 0.\\\"}},\\\"notice\\\":\\\"Allows Cellars to interact with Morpho Aave V3 positions.\\\",\\\"version\\\":1}},\\\"settings\\\":{\\\"compilationTarget\\\":{\\\"src/modules/adaptors/Morpho/MorphoAaveV3ATokenCollateralAdaptor.sol\\\":\\\"MorphoAaveV3ATokenCollateralAdaptor\\\"},\\\"evmVersion\\\":\\\"london\\\",\\\"libraries\\\":{},\\\"metadata\\\":{\\\"bytecodeHash\\\":\\\"ipfs\\\"},\\\"optimizer\\\":{\\\"enabled\\\":true,\\\"runs\\\":200},\\\"remappings\\\":[\\\":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/\\\",\\\":@balancer/=lib/balancer-v2-monorepo/pkg/\\\",\\\":@chainlink/=lib/chainlink/\\\",\\\":@ds-test/=lib/forge-std/lib/ds-test/src/\\\",\\\":@ensdomains/=node_modules/@ensdomains/\\\",\\\":@forge-std/=lib/forge-std/src/\\\",\\\":@openzeppelin/=lib/openzeppelin-contracts/\\\",\\\":@solmate/=lib/solmate/src/\\\",\\\":@uniswap/v3-core/=lib/v3-core/\\\",\\\":@uniswap/v3-periphery/=lib/v3-periphery/\\\",\\\":@uniswapV3C/=lib/v3-core/contracts/\\\",\\\":@uniswapV3P/=lib/v3-periphery/contracts/\\\",\\\":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/\\\",\\\":balancer-v2-monorepo/=lib/balancer-v2-monorepo/\\\",\\\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\\\",\\\":compound-protocol/=lib/compound-protocol/\\\",\\\":ds-test/=lib/forge-std/lib/ds-test/src/\\\",\\\":eth-gas-reporter/=node_modules/eth-gas-reporter/\\\",\\\":forge-std/=lib/forge-std/src/\\\",\\\":hardhat/=node_modules/hardhat/\\\",\\\":openzeppelin-contracts/=lib/openzeppelin-contracts/\\\",\\\":solmate/=lib/solmate/src/\\\",\\\":v3-core.git/=lib/v3-core.git/contracts/\\\",\\\":v3-core/=lib/v3-core/contracts/\\\",\\\":v3-periphery.git/=lib/v3-periphery.git/contracts/\\\",\\\":v3-periphery/=lib/v3-periphery/contracts/\\\"]},\\\"sources\\\":{\\\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\\\":{\\\"keccak256\\\":\\\"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\\\",\\\"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\\\"]},\\\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\\\":{\\\"keccak256\\\":\\\"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\\\",\\\"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\\\"]},\\\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\\\":{\\\"keccak256\\\":\\\"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\\\",\\\"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\\\"]},\\\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\\\":{\\\"keccak256\\\":\\\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\\\",\\\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\\\"]},\\\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\\\":{\\\"keccak256\\\":\\\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\\\",\\\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\\\"]},\\\"lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol\\\":{\\\"keccak256\\\":\\\"0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf\\\",\\\"dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e\\\"]},\\\"lib/openzeppelin-contracts/contracts/utils/Address.sol\\\":{\\\"keccak256\\\":\\\"0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de\\\",\\\"dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V\\\"]},\\\"lib/openzeppelin-contracts/contracts/utils/Context.sol\\\":{\\\"keccak256\\\":\\\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\\\",\\\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\\\"]},\\\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\\\":{\\\"keccak256\\\":\\\"0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929\\\",\\\"dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg\\\"]},\\\"lib/solmate/src/auth/Owned.sol\\\":{\\\"keccak256\\\":\\\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\\\",\\\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\\\"]},\\\"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\\\":{\\\"keccak256\\\":\\\"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\\\",\\\"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\\\":{\\\"keccak256\\\":\\\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\\\",\\\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\\\":{\\\"keccak256\\\":\\\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\\\",\\\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\\\":{\\\"keccak256\\\":\\\"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\\\",\\\"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\\\":{\\\"keccak256\\\":\\\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\\\",\\\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\\\":{\\\"keccak256\\\":\\\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\\\",\\\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\\\":{\\\"keccak256\\\":\\\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\\\",\\\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\\\":{\\\"keccak256\\\":\\\"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\\\",\\\"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\\\"]},\\\"lib/v3-core/contracts/libraries/FullMath.sol\\\":{\\\"keccak256\\\":\\\"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\\\",\\\"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\\\"]},\\\"lib/v3-core/contracts/libraries/TickMath.sol\\\":{\\\"keccak256\\\":\\\"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\\\",\\\"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\\\"]},\\\"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\\\":{\\\"keccak256\\\":\\\"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\\\",\\\"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\\\"]},\\\"src/Registry.sol\\\":{\\\"keccak256\\\":\\\"0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189\\\",\\\"dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK\\\"]},\\\"src/base/Cellar.sol\\\":{\\\"keccak256\\\":\\\"0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058\\\",\\\"dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs\\\"]},\\\"src/base/ERC20.sol\\\":{\\\"keccak256\\\":\\\"0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4\\\",\\\"dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf\\\"]},\\\"src/base/ERC4626.sol\\\":{\\\"keccak256\\\":\\\"0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469\\\",\\\"dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE\\\"]},\\\"src/base/Multicall.sol\\\":{\\\"keccak256\\\":\\\"0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c\\\",\\\"dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K\\\"]},\\\"src/base/SafeTransferLib.sol\\\":{\\\"keccak256\\\":\\\"0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a\\\",\\\"dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3\\\"]},\\\"src/interfaces/IMulticall.sol\\\":{\\\"keccak256\\\":\\\"0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0\\\",\\\"dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5\\\"]},\\\"src/interfaces/external/IChainlinkAggregator.sol\\\":{\\\"keccak256\\\":\\\"0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2\\\",\\\"dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs\\\"]},\\\"src/interfaces/external/IGravity.sol\\\":{\\\"keccak256\\\":\\\"0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51\\\",\\\"dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c\\\"]},\\\"src/interfaces/external/IUniswapV2Router02.sol\\\":{\\\"keccak256\\\":\\\"0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a\\\",\\\"dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo\\\"]},\\\"src/interfaces/external/IUniswapV3Router.sol\\\":{\\\"keccak256\\\":\\\"0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd\\\",\\\"dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK\\\"]},\\\"src/interfaces/external/Morpho/IMorphoV3.sol\\\":{\\\"keccak256\\\":\\\"0xb7d9b09efb93ccd8deacb62a899512f2e8d467682158dc73e936c27aedba3dd9\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://6ed4d09ea863c00bad9b19e1b8bc1ab8568a5b1c972b2ef4c02901f019d58241\\\",\\\"dweb:/ipfs/Qmd4873kMieGZd4K5BuKU6eCPxmczFEQ8BqaGyVbh3YtYE\\\"]},\\\"src/interfaces/external/UniswapV3Pool.sol\\\":{\\\"keccak256\\\":\\\"0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb\\\",\\\"urls\\\":[\\\"bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9\\\",\\\"dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh\\\"]},\\\"src/modules/adaptors/BaseAdaptor.sol\\\":{\\\"keccak256\\\":\\\"0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee\\\",\\\"dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd\\\"]},\\\"src/modules/adaptors/Morpho/MorphoAaveV3ATokenCollateralAdaptor.sol\\\":{\\\"keccak256\\\":\\\"0x019df734e952225534e6ae0d75a868833a92fd54edf0e717e380b20ce44ee449\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://c223a0ee330b6ea2c8af0ceb7f30ac396d52ec00f8f049e0051a97b89bfb1197\\\",\\\"dweb:/ipfs/QmTxTpwqF8osJjYeDEGVh9zoySTREFtRKoHws5ZaRvLFuK\\\"]},\\\"src/modules/adaptors/Morpho/MorphoAaveV3HealthFactorLogic.sol\\\":{\\\"keccak256\\\":\\\"0x2e5863d04838373cd7d8e5bb96105bbd170b5b99faaf7aa22b58be42d433ed9f\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://c246aee962bb5a21a4ee17b87b6b30b1eef98c21facd43724d3e4c972da37188\\\",\\\"dweb:/ipfs/QmWH8Aq1V9RUPCxQhdBeACy2RGxznub6J7cKE6hqK55Aoh\\\"]},\\\"src/modules/adaptors/Morpho/MorphoRewardHandler.sol\\\":{\\\"keccak256\\\":\\\"0xc1461e49dacbb75fe03a4aa08a58bec9639416d57fed6c6595ade2f343520480\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://b2cc897411f203e04233ee37d60e70bed92f310df63beb5adede89009c8cfc54\\\",\\\"dweb:/ipfs/QmSgJ6xXXqRLTcmyDf5uPtd5FqLvEmuK4QQ5LBXuk5dbhp\\\"]},\\\"src/modules/price-router/Extensions/Extension.sol\\\":{\\\"keccak256\\\":\\\"0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1\\\",\\\"dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo\\\"]},\\\"src/modules/price-router/PriceRouter.sol\\\":{\\\"keccak256\\\":\\\"0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66\\\",\\\"dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K\\\"]},\\\"src/modules/swap-router/SwapRouter.sol\\\":{\\\"keccak256\\\":\\\"0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818\\\",\\\"dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr\\\"]},\\\"src/utils/Math.sol\\\":{\\\"keccak256\\\":\\\"0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312\\\",\\\"dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r\\\"]},\\\"src/utils/Uint32Array.sol\\\":{\\\"keccak256\\\":\\\"0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944\\\",\\\"dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3\\\"]}},\\\"version\\\":1}\",\n \"metadata\": {\n \"compiler\": {\n \"version\": \"0.8.16+commit.07a7930e\"\n },\n \"language\": \"Solidity\",\n \"output\": {\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_morpho\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minHealthFactor\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"rewardDistributor\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__ConstructorHealthFactorTooLow\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__ExternalReceiverBlocked\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"asset\",\n \"type\": \"address\"\n }\n ],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__PricingNotSupported\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__Slippage\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__UserDepositsNotAllowed\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__UserWithdrawsNotAllowed\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"MorphoAaveV3ATokenCollateralAdaptor__HealthFactorTooLow\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"assetOf\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"assetsUsed\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20[]\",\n \"name\": \"assets\",\n \"type\": \"address[]\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimable\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"claim\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"assets\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"deposit\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"tokenToDeposit\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountToDeposit\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"depositToAaveV3Morpho\"\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"identifier\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"isDebt\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"minimumHealthFactor\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"morpho\",\n \"outputs\": [\n {\n \"internalType\": \"contract IMorphoV3\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"morphoRewardsDistributor\",\n \"outputs\": [\n {\n \"internalType\": \"contract RewardsDistributor\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"asset\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"revokeApproval\"\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"slippage\",\n \"outputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"\",\n \"type\": \"uint32\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"assets\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"withdraw\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"tokenToWithdraw\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountToWithdraw\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"withdrawFromAaveV3Morpho\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"withdrawableFrom\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ]\n }\n ],\n \"devdoc\": {\n \"kind\": \"dev\",\n \"methods\": {\n \"deposit(uint256,bytes,bytes)\": {\n \"details\": \"configurationData is NOT used\",\n \"params\": {\n \"adaptorData\": \"adaptor data containing the abi encoded ERC20 token\",\n \"assets\": \"the amount of assets to lend on Morpho\"\n }\n },\n \"depositToAaveV3Morpho(address,uint256)\": {\n \"details\": \"Uses `_maxAvailable` helper function, see BaseAdaptor.sol\",\n \"params\": {\n \"amountToDeposit\": \"the amount of `tokenToDeposit` to lend on Morpho.\",\n \"tokenToDeposit\": \"the token to lend on Morpho\"\n }\n },\n \"identifier()\": {\n \"details\": \"Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this Identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult.\"\n },\n \"revokeApproval(address,address)\": {\n \"params\": {\n \"asset\": \"the ERC20 asset to revoke `spender`s approval for\",\n \"spender\": \"the address to revoke approval for\"\n }\n },\n \"withdraw(uint256,address,bytes,bytes)\": {\n \"details\": \"Important to verify that external receivers are allowed if receiver is not Cellar address.\",\n \"params\": {\n \"adaptorData\": \"adaptor data containing the abi encoded aToken\",\n \"assets\": \"the amount of assets to withdraw from Morpho\",\n \"receiver\": \"the address to send withdrawn assets to\"\n }\n },\n \"withdrawFromAaveV3Morpho(address,uint256)\": {\n \"params\": {\n \"amountToWithdraw\": \"the amount of `tokenToWithdraw` to withdraw from Morpho\",\n \"tokenToWithdraw\": \"the token to withdraw from Morpho.\"\n }\n }\n },\n \"version\": 1\n },\n \"userdoc\": {\n \"kind\": \"user\",\n \"methods\": {\n \"assetOf(bytes)\": {\n \"notice\": \"Returns the positions underlying asset.\"\n },\n \"assetsUsed(bytes)\": {\n \"notice\": \"When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup.\"\n },\n \"balanceOf(bytes)\": {\n \"notice\": \"Returns the cellars balance of the position in terms of underlying asset.\"\n },\n \"claim(uint256,bytes32[])\": {\n \"notice\": \"Allows cellars to claim Morpho Rewards.\"\n },\n \"deposit(uint256,bytes,bytes)\": {\n \"notice\": \"Cellar must approve Morpho to spend its assets, then call supplyCollateral to lend its assets.\"\n },\n \"depositToAaveV3Morpho(address,uint256)\": {\n \"notice\": \"Allows strategists to lend assets on Morpho.\"\n },\n \"isDebt()\": {\n \"notice\": \"This adaptor returns collateral, and not debt.\"\n },\n \"minimumHealthFactor()\": {\n \"notice\": \"Minimum Health Factor enforced after every aToken withdraw.\"\n },\n \"morpho()\": {\n \"notice\": \"The Morpho Aave V3 contract on current network.For mainnet use 0x33333aea097c193e66081E930c33020272b33333.\"\n },\n \"morphoRewardsDistributor()\": {\n \"notice\": \"The Morpho Aave V3 rewards handler contract on current network.For mainnet use 0x3B14E5C73e0A56D607A8688098326fD4b4292135.\"\n },\n \"revokeApproval(address,address)\": {\n \"notice\": \"Allows strategists to zero out an approval for a given `asset`.\"\n },\n \"slippage()\": {\n \"notice\": \"Max possible slippage when making a swap router swap.\"\n },\n \"withdraw(uint256,address,bytes,bytes)\": {\n \"notice\": \"Cellars must withdraw from Morpho, check if collateral is backing any loans and prevent withdraws if so.\"\n },\n \"withdrawFromAaveV3Morpho(address,uint256)\": {\n \"notice\": \"Allows strategists to withdraw assets from Morpho.\"\n },\n \"withdrawableFrom(bytes,bytes)\": {\n \"notice\": \"Checks that cellar has no active borrows, and if so returns 0.\"\n }\n },\n \"version\": 1\n }\n },\n \"settings\": {\n \"remappings\": [\n \":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/\",\n \":@balancer/=lib/balancer-v2-monorepo/pkg/\",\n \":@chainlink/=lib/chainlink/\",\n \":@ds-test/=lib/forge-std/lib/ds-test/src/\",\n \":@ensdomains/=node_modules/@ensdomains/\",\n \":@forge-std/=lib/forge-std/src/\",\n \":@openzeppelin/=lib/openzeppelin-contracts/\",\n \":@solmate/=lib/solmate/src/\",\n \":@uniswap/v3-core/=lib/v3-core/\",\n \":@uniswap/v3-periphery/=lib/v3-periphery/\",\n \":@uniswapV3C/=lib/v3-core/contracts/\",\n \":@uniswapV3P/=lib/v3-periphery/contracts/\",\n \":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/\",\n \":balancer-v2-monorepo/=lib/balancer-v2-monorepo/\",\n \":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\n \":compound-protocol/=lib/compound-protocol/\",\n \":ds-test/=lib/forge-std/lib/ds-test/src/\",\n \":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\n \":forge-std/=lib/forge-std/src/\",\n \":hardhat/=node_modules/hardhat/\",\n \":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\n \":solmate/=lib/solmate/src/\",\n \":v3-core.git/=lib/v3-core.git/contracts/\",\n \":v3-core/=lib/v3-core/contracts/\",\n \":v3-periphery.git/=lib/v3-periphery.git/contracts/\",\n \":v3-periphery/=lib/v3-periphery/contracts/\"\n ],\n \"optimizer\": {\n \"enabled\": true,\n \"runs\": 200\n },\n \"metadata\": {\n \"bytecodeHash\": \"ipfs\"\n },\n \"compilationTarget\": {\n \"src/modules/adaptors/Morpho/MorphoAaveV3ATokenCollateralAdaptor.sol\": \"MorphoAaveV3ATokenCollateralAdaptor\"\n },\n \"libraries\": {}\n },\n \"sources\": {\n \"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\": {\n \"keccak256\": \"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\",\n \"urls\": [\n \"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\",\n \"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\": {\n \"keccak256\": \"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\",\n \"urls\": [\n \"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\",\n \"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\": {\n \"keccak256\": \"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\",\n \"urls\": [\n \"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\",\n \"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\": {\n \"keccak256\": \"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\n \"urls\": [\n \"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\n \"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\": {\n \"keccak256\": \"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\n \"urls\": [\n \"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\n \"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol\": {\n \"keccak256\": \"0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028\",\n \"urls\": [\n \"bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf\",\n \"dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/utils/Address.sol\": {\n \"keccak256\": \"0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700\",\n \"urls\": [\n \"bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de\",\n \"dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/utils/Context.sol\": {\n \"keccak256\": \"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\n \"urls\": [\n \"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\n \"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\": {\n \"keccak256\": \"0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb\",\n \"urls\": [\n \"bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929\",\n \"dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/solmate/src/auth/Owned.sol\": {\n \"keccak256\": \"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\n \"urls\": [\n \"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\n \"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\": {\n \"keccak256\": \"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\",\n \"urls\": [\n \"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\",\n \"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\": {\n \"keccak256\": \"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\n \"urls\": [\n \"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\n \"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\": {\n \"keccak256\": \"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\n \"urls\": [\n \"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\n \"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\": {\n \"keccak256\": \"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\",\n \"urls\": [\n \"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\",\n \"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\": {\n \"keccak256\": \"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\n \"urls\": [\n \"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\n \"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\": {\n \"keccak256\": \"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\n \"urls\": [\n \"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\n \"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\": {\n \"keccak256\": \"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\n \"urls\": [\n \"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\n \"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\": {\n \"keccak256\": \"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\",\n \"urls\": [\n \"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\",\n \"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/libraries/FullMath.sol\": {\n \"keccak256\": \"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\",\n \"urls\": [\n \"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\",\n \"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/v3-core/contracts/libraries/TickMath.sol\": {\n \"keccak256\": \"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\",\n \"urls\": [\n \"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\",\n \"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\": {\n \"keccak256\": \"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\",\n \"urls\": [\n \"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\",\n \"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/Registry.sol\": {\n \"keccak256\": \"0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47\",\n \"urls\": [\n \"bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189\",\n \"dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/base/Cellar.sol\": {\n \"keccak256\": \"0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47\",\n \"urls\": [\n \"bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058\",\n \"dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/base/ERC20.sol\": {\n \"keccak256\": \"0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02\",\n \"urls\": [\n \"bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4\",\n \"dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"src/base/ERC4626.sol\": {\n \"keccak256\": \"0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7\",\n \"urls\": [\n \"bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469\",\n \"dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"src/base/Multicall.sol\": {\n \"keccak256\": \"0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9\",\n \"urls\": [\n \"bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c\",\n \"dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/base/SafeTransferLib.sol\": {\n \"keccak256\": \"0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324\",\n \"urls\": [\n \"bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a\",\n \"dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"src/interfaces/IMulticall.sol\": {\n \"keccak256\": \"0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e\",\n \"urls\": [\n \"bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0\",\n \"dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/interfaces/external/IChainlinkAggregator.sol\": {\n \"keccak256\": \"0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d\",\n \"urls\": [\n \"bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2\",\n \"dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/IGravity.sol\": {\n \"keccak256\": \"0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11\",\n \"urls\": [\n \"bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51\",\n \"dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/IUniswapV2Router02.sol\": {\n \"keccak256\": \"0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f\",\n \"urls\": [\n \"bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a\",\n \"dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/IUniswapV3Router.sol\": {\n \"keccak256\": \"0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355\",\n \"urls\": [\n \"bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd\",\n \"dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/interfaces/external/Morpho/IMorphoV3.sol\": {\n \"keccak256\": \"0xb7d9b09efb93ccd8deacb62a899512f2e8d467682158dc73e936c27aedba3dd9\",\n \"urls\": [\n \"bzz-raw://6ed4d09ea863c00bad9b19e1b8bc1ab8568a5b1c972b2ef4c02901f019d58241\",\n \"dweb:/ipfs/Qmd4873kMieGZd4K5BuKU6eCPxmczFEQ8BqaGyVbh3YtYE\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/UniswapV3Pool.sol\": {\n \"keccak256\": \"0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb\",\n \"urls\": [\n \"bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9\",\n \"dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh\"\n ],\n \"license\": null\n },\n \"src/modules/adaptors/BaseAdaptor.sol\": {\n \"keccak256\": \"0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c\",\n \"urls\": [\n \"bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee\",\n \"dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/adaptors/Morpho/MorphoAaveV3ATokenCollateralAdaptor.sol\": {\n \"keccak256\": \"0x019df734e952225534e6ae0d75a868833a92fd54edf0e717e380b20ce44ee449\",\n \"urls\": [\n \"bzz-raw://c223a0ee330b6ea2c8af0ceb7f30ac396d52ec00f8f049e0051a97b89bfb1197\",\n \"dweb:/ipfs/QmTxTpwqF8osJjYeDEGVh9zoySTREFtRKoHws5ZaRvLFuK\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/adaptors/Morpho/MorphoAaveV3HealthFactorLogic.sol\": {\n \"keccak256\": \"0x2e5863d04838373cd7d8e5bb96105bbd170b5b99faaf7aa22b58be42d433ed9f\",\n \"urls\": [\n \"bzz-raw://c246aee962bb5a21a4ee17b87b6b30b1eef98c21facd43724d3e4c972da37188\",\n \"dweb:/ipfs/QmWH8Aq1V9RUPCxQhdBeACy2RGxznub6J7cKE6hqK55Aoh\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/adaptors/Morpho/MorphoRewardHandler.sol\": {\n \"keccak256\": \"0xc1461e49dacbb75fe03a4aa08a58bec9639416d57fed6c6595ade2f343520480\",\n \"urls\": [\n \"bzz-raw://b2cc897411f203e04233ee37d60e70bed92f310df63beb5adede89009c8cfc54\",\n \"dweb:/ipfs/QmSgJ6xXXqRLTcmyDf5uPtd5FqLvEmuK4QQ5LBXuk5dbhp\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/price-router/Extensions/Extension.sol\": {\n \"keccak256\": \"0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d\",\n \"urls\": [\n \"bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1\",\n \"dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/price-router/PriceRouter.sol\": {\n \"keccak256\": \"0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9\",\n \"urls\": [\n \"bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66\",\n \"dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/swap-router/SwapRouter.sol\": {\n \"keccak256\": \"0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80\",\n \"urls\": [\n \"bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818\",\n \"dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/utils/Math.sol\": {\n \"keccak256\": \"0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f\",\n \"urls\": [\n \"bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312\",\n \"dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/utils/Uint32Array.sol\": {\n \"keccak256\": \"0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9\",\n \"urls\": [\n \"bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944\",\n \"dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3\"\n ],\n \"license\": \"Apache-2.0\"\n }\n },\n \"version\": 1\n },\n \"ast\": {\n \"absolutePath\": \"src/modules/adaptors/Morpho/MorphoAaveV3ATokenCollateralAdaptor.sol\",\n \"id\": 65891,\n \"exportedSymbols\": {\n \"BaseAdaptor\": [\n 61644\n ],\n \"ERC20\": [\n 45747\n ],\n \"IMorphoV3\": [\n 53563\n ],\n \"MorphoAaveV3ATokenCollateralAdaptor\": [\n 65890\n ],\n \"MorphoAaveV3HealthFactorLogic\": [\n 66644\n ],\n \"MorphoRewardHandler\": [\n 66696\n ],\n \"SafeTransferLib\": [\n 46498\n ]\n },\n \"nodeType\": \"SourceUnit\",\n \"src\": \"39:7130:199\",\n \"nodes\": [\n {\n \"id\": 65499,\n \"nodeType\": \"PragmaDirective\",\n \"src\": \"39:23:199\",\n \"nodes\": [],\n \"literals\": [\n \"solidity\",\n \"0.8\",\n \".16\"\n ]\n },\n {\n \"id\": 65503,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"64:91:199\",\n \"nodes\": [],\n \"absolutePath\": \"src/modules/adaptors/BaseAdaptor.sol\",\n \"file\": \"src/modules/adaptors/BaseAdaptor.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 65891,\n \"sourceUnit\": 61645,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 65500,\n \"name\": \"BaseAdaptor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61644,\n \"src\": \"73:11:199\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 65501,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 45747,\n \"src\": \"86:5:199\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 65502,\n \"name\": \"SafeTransferLib\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 46498,\n \"src\": \"93:15:199\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 65505,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"156:73:199\",\n \"nodes\": [],\n \"absolutePath\": \"src/interfaces/external/Morpho/IMorphoV3.sol\",\n \"file\": \"src/interfaces/external/Morpho/IMorphoV3.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 65891,\n \"sourceUnit\": 53564,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 65504,\n \"name\": \"IMorphoV3\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53563,\n \"src\": \"165:9:199\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 65507,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"230:90:199\",\n \"nodes\": [],\n \"absolutePath\": \"src/modules/adaptors/Morpho/MorphoRewardHandler.sol\",\n \"file\": \"src/modules/adaptors/Morpho/MorphoRewardHandler.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 65891,\n \"sourceUnit\": 66697,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 65506,\n \"name\": \"MorphoRewardHandler\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66696,\n \"src\": \"239:19:199\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 65509,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"321:110:199\",\n \"nodes\": [],\n \"absolutePath\": \"src/modules/adaptors/Morpho/MorphoAaveV3HealthFactorLogic.sol\",\n \"file\": \"src/modules/adaptors/Morpho/MorphoAaveV3HealthFactorLogic.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 65891,\n \"sourceUnit\": 66645,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 65508,\n \"name\": \"MorphoAaveV3HealthFactorLogic\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66644,\n \"src\": \"330:29:199\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 65890,\n \"nodeType\": \"ContractDefinition\",\n \"src\": \"575:6593:199\",\n \"nodes\": [\n {\n \"id\": 65520,\n \"nodeType\": \"UsingForDirective\",\n \"src\": \"693:32:199\",\n \"nodes\": [],\n \"global\": false,\n \"libraryName\": {\n \"id\": 65517,\n \"name\": \"SafeTransferLib\",\n \"nameLocations\": [\n \"699:15:199\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 46498,\n \"src\": \"699:15:199\"\n },\n \"typeName\": {\n \"id\": 65519,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 65518,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"719:5:199\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"719:5:199\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"719:5:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n }\n },\n {\n \"id\": 65523,\n \"nodeType\": \"ErrorDefinition\",\n \"src\": \"1194:64:199\",\n \"nodes\": [],\n \"documentation\": {\n \"id\": 65521,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"1104:85:199\",\n \"text\": \"@notice Attempted withdraw would lower Cellar health factor too low.\"\n },\n \"errorSelector\": \"cbb67098\",\n \"name\": \"MorphoAaveV3ATokenCollateralAdaptor__HealthFactorTooLow\",\n \"nameLocation\": \"1200:55:199\",\n \"parameters\": {\n \"id\": 65522,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"1255:2:199\"\n }\n },\n {\n \"id\": 65527,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"1418:33:199\",\n \"nodes\": [],\n \"constant\": false,\n \"documentation\": {\n \"id\": 65524,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"1264:149:199\",\n \"text\": \" @notice The Morpho Aave V3 contract on current network.\\n @notice For mainnet use 0x33333aea097c193e66081E930c33020272b33333.\"\n },\n \"functionSelector\": \"d8fbc833\",\n \"mutability\": \"immutable\",\n \"name\": \"morpho\",\n \"nameLocation\": \"1445:6:199\",\n \"scope\": 65890,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n },\n \"typeName\": {\n \"id\": 65526,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 65525,\n \"name\": \"IMorphoV3\",\n \"nameLocations\": [\n \"1418:9:199\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 53563,\n \"src\": \"1418:9:199\"\n },\n \"referencedDeclaration\": 53563,\n \"src\": \"1418:9:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"visibility\": \"public\"\n },\n {\n \"id\": 65530,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"1549:44:199\",\n \"nodes\": [],\n \"constant\": false,\n \"documentation\": {\n \"id\": 65528,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"1458:86:199\",\n \"text\": \" @notice Minimum Health Factor enforced after every aToken withdraw.\"\n },\n \"functionSelector\": \"1caff8b1\",\n \"mutability\": \"immutable\",\n \"name\": \"minimumHealthFactor\",\n \"nameLocation\": \"1574:19:199\",\n \"scope\": 65890,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65529,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1549:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"public\"\n },\n {\n \"id\": 65557,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"1600:305:199\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65556,\n \"nodeType\": \"Block\",\n \"src\": \"1750:155:199\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 65543,\n \"name\": \"minHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65534,\n \"src\": \"1798:15:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"id\": 65542,\n \"name\": \"_verifyConstructorMinimumHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61626,\n \"src\": \"1760:37:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_pure$_t_uint256_$returns$__$\",\n \"typeString\": \"function (uint256) pure\"\n }\n },\n \"id\": 65544,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"1760:54:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 65545,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"1760:54:199\"\n },\n {\n \"expression\": {\n \"id\": 65550,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 65546,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65527,\n \"src\": \"1824:6:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"id\": 65548,\n \"name\": \"_morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65532,\n \"src\": \"1843:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 65547,\n \"name\": \"IMorphoV3\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53563,\n \"src\": \"1833:9:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IMorphoV3_$53563_$\",\n \"typeString\": \"type(contract IMorphoV3)\"\n }\n },\n \"id\": 65549,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"1833:18:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"src\": \"1824:27:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"id\": 65551,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"1824:27:199\"\n },\n {\n \"expression\": {\n \"id\": 65554,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 65552,\n \"name\": \"minimumHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65530,\n \"src\": \"1861:19:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"id\": 65553,\n \"name\": \"minHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65534,\n \"src\": \"1883:15:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"1861:37:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 65555,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"1861:37:199\"\n }\n ]\n },\n \"implemented\": true,\n \"kind\": \"constructor\",\n \"modifiers\": [\n {\n \"arguments\": [\n {\n \"id\": 65539,\n \"name\": \"rewardDistributor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65536,\n \"src\": \"1731:17:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"id\": 65540,\n \"kind\": \"baseConstructorSpecifier\",\n \"modifierName\": {\n \"id\": 65538,\n \"name\": \"MorphoRewardHandler\",\n \"nameLocations\": [\n \"1711:19:199\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 66696,\n \"src\": \"1711:19:199\"\n },\n \"nodeType\": \"ModifierInvocation\",\n \"src\": \"1711:38:199\"\n }\n ],\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"parameters\": {\n \"id\": 65537,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65532,\n \"mutability\": \"mutable\",\n \"name\": \"_morpho\",\n \"nameLocation\": \"1629:7:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65557,\n \"src\": \"1621:15:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 65531,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1621:7:199\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65534,\n \"mutability\": \"mutable\",\n \"name\": \"minHealthFactor\",\n \"nameLocation\": \"1654:15:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65557,\n \"src\": \"1646:23:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65533,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1646:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65536,\n \"mutability\": \"mutable\",\n \"name\": \"rewardDistributor\",\n \"nameLocation\": \"1687:17:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65557,\n \"src\": \"1679:25:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 65535,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1679:7:199\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"1611:99:199\"\n },\n \"returnParameters\": {\n \"id\": 65541,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"1750:0:199\"\n },\n \"scope\": 65890,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65572,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"2324:156:199\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65571,\n \"nodeType\": \"Block\",\n \"src\": \"2385:95:199\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"hexValue\": \"4d6f7270686f20416176652056332061546f6b656e20436f6c6c61746572616c2041646170746f72205620312e32\",\n \"id\": 65567,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"string\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"2423:48:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_stringliteral_766a65b86580aba38320cc8670ef1305de9d8a9d7928b7fb434318bb57e0185b\",\n \"typeString\": \"literal_string \\\"Morpho Aave V3 aToken Collateral Adaptor V 1.2\\\"\"\n },\n \"value\": \"Morpho Aave V3 aToken Collateral Adaptor V 1.2\"\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_stringliteral_766a65b86580aba38320cc8670ef1305de9d8a9d7928b7fb434318bb57e0185b\",\n \"typeString\": \"literal_string \\\"Morpho Aave V3 aToken Collateral Adaptor V 1.2\\\"\"\n }\n ],\n \"expression\": {\n \"id\": 65565,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"2412:3:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 65566,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"2416:6:199\",\n \"memberName\": \"encode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"2412:10:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$\",\n \"typeString\": \"function () pure returns (bytes memory)\"\n }\n },\n \"id\": 65568,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"2412:60:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n ],\n \"id\": 65564,\n \"name\": \"keccak256\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -8,\n \"src\": \"2402:9:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$\",\n \"typeString\": \"function (bytes memory) pure returns (bytes32)\"\n }\n },\n \"id\": 65569,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"2402:71:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"functionReturnParameters\": 65563,\n \"id\": 65570,\n \"nodeType\": \"Return\",\n \"src\": \"2395:78:199\"\n }\n ]\n },\n \"baseFunctions\": [\n 61410\n ],\n \"documentation\": {\n \"id\": 65558,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"2023:296:199\",\n \"text\": \" @dev Identifier unique to this adaptor for a shared registry.\\n Normally the identifier would just be the address of this contract, but this\\n Identifier is needed during Cellar Delegate Call Operations, so getting the address\\n of the adaptor is more difficult.\"\n },\n \"functionSelector\": \"7998a1c4\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"identifier\",\n \"nameLocation\": \"2333:10:199\",\n \"overrides\": {\n \"id\": 65560,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"2358:8:199\"\n },\n \"parameters\": {\n \"id\": 65559,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"2343:2:199\"\n },\n \"returnParameters\": {\n \"id\": 65563,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65562,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65572,\n \"src\": \"2376:7:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n \"typeName\": {\n \"id\": 65561,\n \"name\": \"bytes32\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2376:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"2375:9:199\"\n },\n \"scope\": 65890,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65626,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"2912:436:199\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65625,\n \"nodeType\": \"Block\",\n \"src\": \"3001:347:199\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 65585\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65585,\n \"mutability\": \"mutable\",\n \"name\": \"underlying\",\n \"nameLocation\": \"3054:10:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65625,\n \"src\": \"3048:16:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 65584,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 65583,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"3048:5:199\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"3048:5:199\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"3048:5:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65592,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 65588,\n \"name\": \"adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65577,\n \"src\": \"3078:11:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 65589,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 45747,\n \"src\": \"3092:5:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n }\n ],\n \"id\": 65590,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"3091:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n ],\n \"expression\": {\n \"id\": 65586,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"3067:3:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 65587,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"3071:6:199\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"3067:10:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 65591,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3067:32:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"3048:51:199\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 65598,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65527,\n \"src\": \"3140:6:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n ],\n \"id\": 65597,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"3132:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65596,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3132:7:199\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65599,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3132:15:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 65600,\n \"name\": \"assets\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65575,\n \"src\": \"3149:6:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 65593,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65585,\n \"src\": \"3109:10:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 65595,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"3120:11:199\",\n \"memberName\": \"safeApprove\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 46497,\n \"src\": \"3109:22:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"function (contract ERC20,address,uint256)\"\n }\n },\n \"id\": 65601,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3109:47:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 65602,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"3109:47:199\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 65608,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65585,\n \"src\": \"3199:10:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n ],\n \"id\": 65607,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"3191:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65606,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3191:7:199\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65609,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3191:19:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 65610,\n \"name\": \"assets\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65575,\n \"src\": \"3212:6:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 65613,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"3228:4:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890\",\n \"typeString\": \"contract MorphoAaveV3ATokenCollateralAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890\",\n \"typeString\": \"contract MorphoAaveV3ATokenCollateralAdaptor\"\n }\n ],\n \"id\": 65612,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"3220:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65611,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3220:7:199\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65614,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3220:13:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 65603,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65527,\n \"src\": \"3167:6:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"id\": 65605,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"3174:16:199\",\n \"memberName\": \"supplyCollateral\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53534,\n \"src\": \"3167:23:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address,uint256,address) external returns (uint256)\"\n }\n },\n \"id\": 65615,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3167:67:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 65616,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"3167:67:199\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 65618,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65585,\n \"src\": \"3313:10:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 65621,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65527,\n \"src\": \"3333:6:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n ],\n \"id\": 65620,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"3325:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65619,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3325:7:199\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65622,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3325:15:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 65617,\n \"name\": \"_revokeExternalApproval\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61585,\n \"src\": \"3289:23:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$returns$__$\",\n \"typeString\": \"function (contract ERC20,address)\"\n }\n },\n \"id\": 65623,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3289:52:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 65624,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"3289:52:199\"\n }\n ]\n },\n \"baseFunctions\": [\n 61454\n ],\n \"documentation\": {\n \"id\": 65573,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"2606:301:199\",\n \"text\": \" @notice Cellar must approve Morpho to spend its assets, then call supplyCollateral to lend its assets.\\n @param assets the amount of assets to lend on Morpho\\n @param adaptorData adaptor data containing the abi encoded ERC20 token\\n @dev configurationData is NOT used\"\n },\n \"functionSelector\": \"69445c31\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"deposit\",\n \"nameLocation\": \"2921:7:199\",\n \"overrides\": {\n \"id\": 65581,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"2992:8:199\"\n },\n \"parameters\": {\n \"id\": 65580,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65575,\n \"mutability\": \"mutable\",\n \"name\": \"assets\",\n \"nameLocation\": \"2937:6:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65626,\n \"src\": \"2929:14:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65574,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2929:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65577,\n \"mutability\": \"mutable\",\n \"name\": \"adaptorData\",\n \"nameLocation\": \"2958:11:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65626,\n \"src\": \"2945:24:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 65576,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2945:5:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65579,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65626,\n \"src\": \"2971:12:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 65578,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2971:5:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"2928:56:199\"\n },\n \"returnParameters\": {\n \"id\": 65582,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"3001:0:199\"\n },\n \"scope\": 65890,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65687,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"3806:584:199\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65686,\n \"nodeType\": \"Block\",\n \"src\": \"3914:476:199\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 65640,\n \"name\": \"receiver\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65631,\n \"src\": \"3987:8:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 65639,\n \"name\": \"_externalReceiverCheck\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61611,\n \"src\": \"3964:22:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_view$_t_address_$returns$__$\",\n \"typeString\": \"function (address) view\"\n }\n },\n \"id\": 65641,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3964:32:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 65642,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"3964:32:199\"\n },\n {\n \"assignments\": [\n 65647\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65647,\n \"mutability\": \"mutable\",\n \"name\": \"borrows\",\n \"nameLocation\": \"4074:7:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65686,\n \"src\": \"4057:24:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_address_$dyn_memory_ptr\",\n \"typeString\": \"address[]\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 65645,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4057:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"id\": 65646,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"4057:9:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_address_$dyn_storage_ptr\",\n \"typeString\": \"address[]\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65655,\n \"initialValue\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 65652,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"4111:4:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890\",\n \"typeString\": \"contract MorphoAaveV3ATokenCollateralAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890\",\n \"typeString\": \"contract MorphoAaveV3ATokenCollateralAdaptor\"\n }\n ],\n \"id\": 65651,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"4103:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65650,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4103:7:199\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65653,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4103:13:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 65648,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65527,\n \"src\": \"4084:6:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"id\": 65649,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"4091:11:199\",\n \"memberName\": \"userBorrows\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53421,\n \"src\": \"4084:18:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$\",\n \"typeString\": \"function (address) view external returns (address[] memory)\"\n }\n },\n \"id\": 65654,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4084:33:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_address_$dyn_memory_ptr\",\n \"typeString\": \"address[] memory\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"4057:60:199\"\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 65659,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"expression\": {\n \"id\": 65656,\n \"name\": \"borrows\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65647,\n \"src\": \"4131:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_address_$dyn_memory_ptr\",\n \"typeString\": \"address[] memory\"\n }\n },\n \"id\": 65657,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"4139:6:199\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"4131:14:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \">\",\n \"rightExpression\": {\n \"hexValue\": \"30\",\n \"id\": 65658,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"4148:1:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n },\n \"value\": \"0\"\n },\n \"src\": \"4131:18:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 65663,\n \"nodeType\": \"IfStatement\",\n \"src\": \"4127:69:199\",\n \"trueBody\": {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 65660,\n \"name\": \"BaseAdaptor__UserWithdrawsNotAllowed\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61385,\n \"src\": \"4158:36:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 65661,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4158:38:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 65662,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"4151:45:199\"\n }\n },\n {\n \"assignments\": [\n 65665\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65665,\n \"mutability\": \"mutable\",\n \"name\": \"underlying\",\n \"nameLocation\": \"4215:10:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65686,\n \"src\": \"4207:18:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 65664,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4207:7:199\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65673,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 65668,\n \"name\": \"adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65633,\n \"src\": \"4239:11:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 65670,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"4253:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65669,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4253:7:199\",\n \"typeDescriptions\": {}\n }\n }\n ],\n \"id\": 65671,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"4252:9:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n ],\n \"expression\": {\n \"id\": 65666,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"4228:3:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 65667,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"4232:6:199\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"4228:10:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 65672,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4228:34:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address_payable\",\n \"typeString\": \"address payable\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"4207:55:199\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 65677,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65665,\n \"src\": \"4339:10:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 65678,\n \"name\": \"assets\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65629,\n \"src\": \"4351:6:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 65681,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"4367:4:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890\",\n \"typeString\": \"contract MorphoAaveV3ATokenCollateralAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890\",\n \"typeString\": \"contract MorphoAaveV3ATokenCollateralAdaptor\"\n }\n ],\n \"id\": 65680,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"4359:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65679,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4359:7:199\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65682,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4359:13:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 65683,\n \"name\": \"receiver\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65631,\n \"src\": \"4374:8:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 65674,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65527,\n \"src\": \"4313:6:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"id\": 65676,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"4320:18:199\",\n \"memberName\": \"withdrawCollateral\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53562,\n \"src\": \"4313:25:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address,uint256,address,address) external returns (uint256)\"\n }\n },\n \"id\": 65684,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4313:70:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 65685,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"4313:70:199\"\n }\n ]\n },\n \"baseFunctions\": [\n 61466\n ],\n \"documentation\": {\n \"id\": 65627,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"3354:447:199\",\n \"text\": \"@notice Cellars must withdraw from Morpho, check if collateral is backing any loans\\n and prevent withdraws if so.\\n @dev Important to verify that external receivers are allowed if receiver is not Cellar address.\\n @param assets the amount of assets to withdraw from Morpho\\n @param receiver the address to send withdrawn assets to\\n @param adaptorData adaptor data containing the abi encoded aToken\"\n },\n \"functionSelector\": \"c9111bd7\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"withdraw\",\n \"nameLocation\": \"3815:8:199\",\n \"overrides\": {\n \"id\": 65637,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"3905:8:199\"\n },\n \"parameters\": {\n \"id\": 65636,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65629,\n \"mutability\": \"mutable\",\n \"name\": \"assets\",\n \"nameLocation\": \"3832:6:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65687,\n \"src\": \"3824:14:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65628,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3824:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65631,\n \"mutability\": \"mutable\",\n \"name\": \"receiver\",\n \"nameLocation\": \"3848:8:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65687,\n \"src\": \"3840:16:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 65630,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3840:7:199\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65633,\n \"mutability\": \"mutable\",\n \"name\": \"adaptorData\",\n \"nameLocation\": \"3871:11:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65687,\n \"src\": \"3858:24:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 65632,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3858:5:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65635,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65687,\n \"src\": \"3884:12:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 65634,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3884:5:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"3823:74:199\"\n },\n \"returnParameters\": {\n \"id\": 65638,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"3914:0:199\"\n },\n \"scope\": 65890,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65735,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"4490:384:199\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65734,\n \"nodeType\": \"Block\",\n \"src\": \"4595:279:199\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 65702\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65702,\n \"mutability\": \"mutable\",\n \"name\": \"borrows\",\n \"nameLocation\": \"4622:7:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65734,\n \"src\": \"4605:24:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_address_$dyn_memory_ptr\",\n \"typeString\": \"address[]\"\n },\n \"typeName\": {\n \"baseType\": {\n \"id\": 65700,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4605:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"id\": 65701,\n \"nodeType\": \"ArrayTypeName\",\n \"src\": \"4605:9:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_address_$dyn_storage_ptr\",\n \"typeString\": \"address[]\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65708,\n \"initialValue\": {\n \"arguments\": [\n {\n \"expression\": {\n \"id\": 65705,\n \"name\": \"msg\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -15,\n \"src\": \"4651:3:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_message\",\n \"typeString\": \"msg\"\n }\n },\n \"id\": 65706,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"4655:6:199\",\n \"memberName\": \"sender\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"4651:10:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 65703,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65527,\n \"src\": \"4632:6:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"id\": 65704,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"4639:11:199\",\n \"memberName\": \"userBorrows\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53421,\n \"src\": \"4632:18:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$\",\n \"typeString\": \"function (address) view external returns (address[] memory)\"\n }\n },\n \"id\": 65707,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4632:30:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_address_$dyn_memory_ptr\",\n \"typeString\": \"address[] memory\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"4605:57:199\"\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 65712,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"expression\": {\n \"id\": 65709,\n \"name\": \"borrows\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65702,\n \"src\": \"4676:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_array$_t_address_$dyn_memory_ptr\",\n \"typeString\": \"address[] memory\"\n }\n },\n \"id\": 65710,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"4684:6:199\",\n \"memberName\": \"length\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"4676:14:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \">\",\n \"rightExpression\": {\n \"hexValue\": \"30\",\n \"id\": 65711,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"4693:1:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n },\n \"value\": \"0\"\n },\n \"src\": \"4676:18:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"falseBody\": {\n \"id\": 65732,\n \"nodeType\": \"Block\",\n \"src\": \"4719:149:199\",\n \"statements\": [\n {\n \"assignments\": [\n 65716\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65716,\n \"mutability\": \"mutable\",\n \"name\": \"underlying\",\n \"nameLocation\": \"4741:10:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65732,\n \"src\": \"4733:18:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 65715,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4733:7:199\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65724,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 65719,\n \"name\": \"adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65690,\n \"src\": \"4765:11:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 65721,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"4779:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65720,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4779:7:199\",\n \"typeDescriptions\": {}\n }\n }\n ],\n \"id\": 65722,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"4778:9:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n ],\n \"expression\": {\n \"id\": 65717,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"4754:3:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 65718,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"4758:6:199\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"4754:10:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 65723,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4754:34:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address_payable\",\n \"typeString\": \"address payable\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"4733:55:199\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 65727,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65716,\n \"src\": \"4834:10:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"expression\": {\n \"id\": 65728,\n \"name\": \"msg\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -15,\n \"src\": \"4846:3:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_message\",\n \"typeString\": \"msg\"\n }\n },\n \"id\": 65729,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"4850:6:199\",\n \"memberName\": \"sender\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"4846:10:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 65725,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65527,\n \"src\": \"4809:6:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"id\": 65726,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"4816:17:199\",\n \"memberName\": \"collateralBalance\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53430,\n \"src\": \"4809:24:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address,address) view external returns (uint256)\"\n }\n },\n \"id\": 65730,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4809:48:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"functionReturnParameters\": 65697,\n \"id\": 65731,\n \"nodeType\": \"Return\",\n \"src\": \"4802:55:199\"\n }\n ]\n },\n \"id\": 65733,\n \"nodeType\": \"IfStatement\",\n \"src\": \"4672:196:199\",\n \"trueBody\": {\n \"expression\": {\n \"hexValue\": \"30\",\n \"id\": 65713,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"4703:1:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n },\n \"value\": \"0\"\n },\n \"functionReturnParameters\": 65697,\n \"id\": 65714,\n \"nodeType\": \"Return\",\n \"src\": \"4696:8:199\"\n }\n }\n ]\n },\n \"baseFunctions\": [\n 61484\n ],\n \"documentation\": {\n \"id\": 65688,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"4396:89:199\",\n \"text\": \" @notice Checks that cellar has no active borrows, and if so returns 0.\"\n },\n \"functionSelector\": \"fa50e5d2\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"withdrawableFrom\",\n \"nameLocation\": \"4499:16:199\",\n \"overrides\": {\n \"id\": 65694,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"4568:8:199\"\n },\n \"parameters\": {\n \"id\": 65693,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65690,\n \"mutability\": \"mutable\",\n \"name\": \"adaptorData\",\n \"nameLocation\": \"4529:11:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65735,\n \"src\": \"4516:24:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 65689,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4516:5:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65692,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65735,\n \"src\": \"4542:12:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 65691,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4542:5:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"4515:40:199\"\n },\n \"returnParameters\": {\n \"id\": 65697,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65696,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65735,\n \"src\": \"4586:7:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65695,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4586:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"4585:9:199\"\n },\n \"scope\": 65890,\n \"stateMutability\": \"view\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65762,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"4985:221:199\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65761,\n \"nodeType\": \"Block\",\n \"src\": \"5069:137:199\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 65745\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65745,\n \"mutability\": \"mutable\",\n \"name\": \"underlying\",\n \"nameLocation\": \"5087:10:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65761,\n \"src\": \"5079:18:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 65744,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5079:7:199\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65753,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 65748,\n \"name\": \"adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65738,\n \"src\": \"5111:11:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 65750,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"5125:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65749,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5125:7:199\",\n \"typeDescriptions\": {}\n }\n }\n ],\n \"id\": 65751,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"5124:9:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n ],\n \"expression\": {\n \"id\": 65746,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"5100:3:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 65747,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"5104:6:199\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"5100:10:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 65752,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5100:34:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address_payable\",\n \"typeString\": \"address payable\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"5079:55:199\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 65756,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65745,\n \"src\": \"5176:10:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"expression\": {\n \"id\": 65757,\n \"name\": \"msg\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -15,\n \"src\": \"5188:3:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_message\",\n \"typeString\": \"msg\"\n }\n },\n \"id\": 65758,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"5192:6:199\",\n \"memberName\": \"sender\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"5188:10:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 65754,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65527,\n \"src\": \"5151:6:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"id\": 65755,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"5158:17:199\",\n \"memberName\": \"collateralBalance\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53430,\n \"src\": \"5151:24:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address,address) view external returns (uint256)\"\n }\n },\n \"id\": 65759,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5151:48:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"functionReturnParameters\": 65743,\n \"id\": 65760,\n \"nodeType\": \"Return\",\n \"src\": \"5144:55:199\"\n }\n ]\n },\n \"baseFunctions\": [\n 61474\n ],\n \"documentation\": {\n \"id\": 65736,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"4880:100:199\",\n \"text\": \" @notice Returns the cellars balance of the position in terms of underlying asset.\"\n },\n \"functionSelector\": \"78415365\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"balanceOf\",\n \"nameLocation\": \"4994:9:199\",\n \"overrides\": {\n \"id\": 65740,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"5042:8:199\"\n },\n \"parameters\": {\n \"id\": 65739,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65738,\n \"mutability\": \"mutable\",\n \"name\": \"adaptorData\",\n \"nameLocation\": \"5017:11:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65762,\n \"src\": \"5004:24:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 65737,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5004:5:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"5003:26:199\"\n },\n \"returnParameters\": {\n \"id\": 65743,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65742,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65762,\n \"src\": \"5060:7:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65741,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5060:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"5059:9:199\"\n },\n \"scope\": 65890,\n \"stateMutability\": \"view\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65785,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"5283:175:199\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65784,\n \"nodeType\": \"Block\",\n \"src\": \"5363:95:199\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 65774\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65774,\n \"mutability\": \"mutable\",\n \"name\": \"underlying\",\n \"nameLocation\": \"5379:10:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65784,\n \"src\": \"5373:16:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 65773,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 65772,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"5373:5:199\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"5373:5:199\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"5373:5:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65781,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 65777,\n \"name\": \"adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65765,\n \"src\": \"5403:11:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 65778,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 45747,\n \"src\": \"5417:5:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n }\n ],\n \"id\": 65779,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"5416:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n ],\n \"expression\": {\n \"id\": 65775,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"5392:3:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 65776,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"5396:6:199\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"5392:10:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 65780,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5392:32:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"5373:51:199\"\n },\n {\n \"expression\": {\n \"id\": 65782,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65774,\n \"src\": \"5441:10:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"functionReturnParameters\": 65771,\n \"id\": 65783,\n \"nodeType\": \"Return\",\n \"src\": \"5434:17:199\"\n }\n ]\n },\n \"baseFunctions\": [\n 61493\n ],\n \"documentation\": {\n \"id\": 65763,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"5212:66:199\",\n \"text\": \" @notice Returns the positions underlying asset.\"\n },\n \"functionSelector\": \"e170a9bf\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"assetOf\",\n \"nameLocation\": \"5292:7:199\",\n \"overrides\": {\n \"id\": 65767,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"5338:8:199\"\n },\n \"parameters\": {\n \"id\": 65766,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65765,\n \"mutability\": \"mutable\",\n \"name\": \"adaptorData\",\n \"nameLocation\": \"5313:11:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65785,\n \"src\": \"5300:24:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 65764,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5300:5:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"5299:26:199\"\n },\n \"returnParameters\": {\n \"id\": 65771,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65770,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65785,\n \"src\": \"5356:5:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 65769,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 65768,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"5356:5:199\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"5356:5:199\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"5356:5:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"5355:7:199\"\n },\n \"scope\": 65890,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65795,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"5542:83:199\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65794,\n \"nodeType\": \"Block\",\n \"src\": \"5596:29:199\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"hexValue\": \"66616c7365\",\n \"id\": 65792,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"bool\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"5613:5:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"value\": \"false\"\n },\n \"functionReturnParameters\": 65791,\n \"id\": 65793,\n \"nodeType\": \"Return\",\n \"src\": \"5606:12:199\"\n }\n ]\n },\n \"baseFunctions\": [\n 61527\n ],\n \"documentation\": {\n \"id\": 65786,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"5464:73:199\",\n \"text\": \" @notice This adaptor returns collateral, and not debt.\"\n },\n \"functionSelector\": \"89353a09\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"isDebt\",\n \"nameLocation\": \"5551:6:199\",\n \"overrides\": {\n \"id\": 65788,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"5572:8:199\"\n },\n \"parameters\": {\n \"id\": 65787,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"5557:2:199\"\n },\n \"returnParameters\": {\n \"id\": 65791,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65790,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65795,\n \"src\": \"5590:4:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"typeName\": {\n \"id\": 65789,\n \"name\": \"bool\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5590:4:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"5589:6:199\"\n },\n \"scope\": 65890,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65844,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"6030:437:199\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65843,\n \"nodeType\": \"Block\",\n \"src\": \"6115:352:199\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"id\": 65809,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 65804,\n \"name\": \"amountToDeposit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65801,\n \"src\": \"6125:15:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"id\": 65806,\n \"name\": \"tokenToDeposit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65799,\n \"src\": \"6157:14:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n {\n \"id\": 65807,\n \"name\": \"amountToDeposit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65801,\n \"src\": \"6173:15:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"id\": 65805,\n \"name\": \"_maxAvailable\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61557,\n \"src\": \"6143:13:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_view$_t_contract$_ERC20_$45747_$_t_uint256_$returns$_t_uint256_$\",\n \"typeString\": \"function (contract ERC20,uint256) view returns (uint256)\"\n }\n },\n \"id\": 65808,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6143:46:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"6125:64:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 65810,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"6125:64:199\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 65816,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65527,\n \"src\": \"6234:6:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n ],\n \"id\": 65815,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"6226:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65814,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6226:7:199\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65817,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6226:15:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 65818,\n \"name\": \"amountToDeposit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65801,\n \"src\": \"6243:15:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 65811,\n \"name\": \"tokenToDeposit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65799,\n \"src\": \"6199:14:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 65813,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"6214:11:199\",\n \"memberName\": \"safeApprove\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 46497,\n \"src\": \"6199:26:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"function (contract ERC20,address,uint256)\"\n }\n },\n \"id\": 65819,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6199:60:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 65820,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"6199:60:199\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 65826,\n \"name\": \"tokenToDeposit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65799,\n \"src\": \"6301:14:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n ],\n \"id\": 65825,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"6293:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65824,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6293:7:199\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65827,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6293:23:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 65828,\n \"name\": \"amountToDeposit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65801,\n \"src\": \"6318:15:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 65831,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"6343:4:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890\",\n \"typeString\": \"contract MorphoAaveV3ATokenCollateralAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890\",\n \"typeString\": \"contract MorphoAaveV3ATokenCollateralAdaptor\"\n }\n ],\n \"id\": 65830,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"6335:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65829,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6335:7:199\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65832,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6335:13:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 65821,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65527,\n \"src\": \"6269:6:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"id\": 65823,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"6276:16:199\",\n \"memberName\": \"supplyCollateral\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53534,\n \"src\": \"6269:23:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address,uint256,address) external returns (uint256)\"\n }\n },\n \"id\": 65833,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6269:80:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 65834,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"6269:80:199\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 65836,\n \"name\": \"tokenToDeposit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65799,\n \"src\": \"6428:14:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 65839,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65527,\n \"src\": \"6452:6:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n ],\n \"id\": 65838,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"6444:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65837,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6444:7:199\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65840,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6444:15:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 65835,\n \"name\": \"_revokeExternalApproval\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61585,\n \"src\": \"6404:23:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$returns$__$\",\n \"typeString\": \"function (contract ERC20,address)\"\n }\n },\n \"id\": 65841,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6404:56:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 65842,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"6404:56:199\"\n }\n ]\n },\n \"documentation\": {\n \"id\": 65796,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"5747:278:199\",\n \"text\": \" @notice Allows strategists to lend assets on Morpho.\\n @dev Uses `_maxAvailable` helper function, see BaseAdaptor.sol\\n @param tokenToDeposit the token to lend on Morpho\\n @param amountToDeposit the amount of `tokenToDeposit` to lend on Morpho.\"\n },\n \"functionSelector\": \"53cbf54c\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"depositToAaveV3Morpho\",\n \"nameLocation\": \"6039:21:199\",\n \"parameters\": {\n \"id\": 65802,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65799,\n \"mutability\": \"mutable\",\n \"name\": \"tokenToDeposit\",\n \"nameLocation\": \"6067:14:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65844,\n \"src\": \"6061:20:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 65798,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 65797,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"6061:5:199\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"6061:5:199\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"6061:5:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65801,\n \"mutability\": \"mutable\",\n \"name\": \"amountToDeposit\",\n \"nameLocation\": \"6091:15:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65844,\n \"src\": \"6083:23:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65800,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6083:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"6060:47:199\"\n },\n \"returnParameters\": {\n \"id\": 65803,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"6115:0:199\"\n },\n \"scope\": 65890,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65889,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"6707:459:199\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65888,\n \"nodeType\": \"Block\",\n \"src\": \"6797:369:199\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 65858,\n \"name\": \"tokenToWithdraw\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65848,\n \"src\": \"6841:15:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n ],\n \"id\": 65857,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"6833:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65856,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6833:7:199\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65859,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6833:24:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 65860,\n \"name\": \"amountToWithdraw\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65850,\n \"src\": \"6859:16:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 65863,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"6885:4:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890\",\n \"typeString\": \"contract MorphoAaveV3ATokenCollateralAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890\",\n \"typeString\": \"contract MorphoAaveV3ATokenCollateralAdaptor\"\n }\n ],\n \"id\": 65862,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"6877:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65861,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6877:7:199\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65864,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6877:13:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 65867,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"6900:4:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890\",\n \"typeString\": \"contract MorphoAaveV3ATokenCollateralAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890\",\n \"typeString\": \"contract MorphoAaveV3ATokenCollateralAdaptor\"\n }\n ],\n \"id\": 65866,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"6892:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65865,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6892:7:199\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65868,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6892:13:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 65853,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65527,\n \"src\": \"6807:6:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"id\": 65855,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"6814:18:199\",\n \"memberName\": \"withdrawCollateral\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53562,\n \"src\": \"6807:25:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address,uint256,address,address) external returns (uint256)\"\n }\n },\n \"id\": 65869,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6807:99:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 65870,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"6807:99:199\"\n },\n {\n \"assignments\": [\n 65872\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65872,\n \"mutability\": \"mutable\",\n \"name\": \"healthFactor\",\n \"nameLocation\": \"6987:12:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65888,\n \"src\": \"6979:20:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65871,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6979:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65880,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 65874,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65527,\n \"src\": \"7023:6:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 65877,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"7039:4:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890\",\n \"typeString\": \"contract MorphoAaveV3ATokenCollateralAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenCollateralAdaptor_$65890\",\n \"typeString\": \"contract MorphoAaveV3ATokenCollateralAdaptor\"\n }\n ],\n \"id\": 65876,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"7031:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65875,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"7031:7:199\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65878,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7031:13:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 65873,\n \"name\": \"_getUserHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66643,\n \"src\": \"7002:20:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_view$_t_contract$_IMorphoV3_$53563_$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (contract IMorphoV3,address) view returns (uint256)\"\n }\n },\n \"id\": 65879,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7002:43:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"6979:66:199\"\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 65883,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 65881,\n \"name\": \"healthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65872,\n \"src\": \"7059:12:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"<\",\n \"rightExpression\": {\n \"id\": 65882,\n \"name\": \"minimumHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65530,\n \"src\": \"7074:19:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"7059:34:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 65887,\n \"nodeType\": \"IfStatement\",\n \"src\": \"7055:104:199\",\n \"trueBody\": {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 65884,\n \"name\": \"MorphoAaveV3ATokenCollateralAdaptor__HealthFactorTooLow\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65523,\n \"src\": \"7102:55:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 65885,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7102:57:199\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 65886,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"7095:64:199\"\n }\n }\n ]\n },\n \"documentation\": {\n \"id\": 65845,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"6473:229:199\",\n \"text\": \" @notice Allows strategists to withdraw assets from Morpho.\\n @param tokenToWithdraw the token to withdraw from Morpho.\\n @param amountToWithdraw the amount of `tokenToWithdraw` to withdraw from Morpho\"\n },\n \"functionSelector\": \"37761272\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"withdrawFromAaveV3Morpho\",\n \"nameLocation\": \"6716:24:199\",\n \"parameters\": {\n \"id\": 65851,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65848,\n \"mutability\": \"mutable\",\n \"name\": \"tokenToWithdraw\",\n \"nameLocation\": \"6747:15:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65889,\n \"src\": \"6741:21:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 65847,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 65846,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"6741:5:199\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"6741:5:199\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"6741:5:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65850,\n \"mutability\": \"mutable\",\n \"name\": \"amountToWithdraw\",\n \"nameLocation\": \"6772:16:199\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65889,\n \"src\": \"6764:24:199\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65849,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6764:7:199\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"6740:49:199\"\n },\n \"returnParameters\": {\n \"id\": 65852,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"6797:0:199\"\n },\n \"scope\": 65890,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n }\n ],\n \"abstract\": false,\n \"baseContracts\": [\n {\n \"baseName\": {\n \"id\": 65511,\n \"name\": \"BaseAdaptor\",\n \"nameLocations\": [\n \"623:11:199\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 61644,\n \"src\": \"623:11:199\"\n },\n \"id\": 65512,\n \"nodeType\": \"InheritanceSpecifier\",\n \"src\": \"623:11:199\"\n },\n {\n \"baseName\": {\n \"id\": 65513,\n \"name\": \"MorphoRewardHandler\",\n \"nameLocations\": [\n \"636:19:199\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 66696,\n \"src\": \"636:19:199\"\n },\n \"id\": 65514,\n \"nodeType\": \"InheritanceSpecifier\",\n \"src\": \"636:19:199\"\n },\n {\n \"baseName\": {\n \"id\": 65515,\n \"name\": \"MorphoAaveV3HealthFactorLogic\",\n \"nameLocations\": [\n \"657:29:199\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 66644,\n \"src\": \"657:29:199\"\n },\n \"id\": 65516,\n \"nodeType\": \"InheritanceSpecifier\",\n \"src\": \"657:29:199\"\n }\n ],\n \"canonicalName\": \"MorphoAaveV3ATokenCollateralAdaptor\",\n \"contractDependencies\": [],\n \"contractKind\": \"contract\",\n \"documentation\": {\n \"id\": 65510,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"433:141:199\",\n \"text\": \" @title Morpho Aave V3 aToken Adaptor\\n @notice Allows Cellars to interact with Morpho Aave V3 positions.\\n @author crispymangoes\"\n },\n \"fullyImplemented\": true,\n \"linearizedBaseContracts\": [\n 65890,\n 66644,\n 66696,\n 61644\n ],\n \"name\": \"MorphoAaveV3ATokenCollateralAdaptor\",\n \"nameLocation\": \"584:35:199\",\n \"scope\": 65891,\n \"usedErrors\": [\n 61379,\n 61382,\n 61385,\n 61388,\n 61393,\n 61396,\n 65523\n ]\n }\n ],\n \"license\": \"Apache-2.0\"\n },\n \"id\": 199\n}") . expect ("invalid abi") + }); + #[derive(Clone)] + pub struct MorphoAaveV3ATokenCollateralAdaptorV1(ethers::contract::Contract); + impl std::ops::Deref for MorphoAaveV3ATokenCollateralAdaptorV1 { + type Target = ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl std::fmt::Debug + for MorphoAaveV3ATokenCollateralAdaptorV1 + { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + f.debug_tuple(stringify!(MorphoAaveV3ATokenCollateralAdaptorV1)) + .field(&self.address()) + .finish() + } + } + impl<'a, M: ethers::providers::Middleware> MorphoAaveV3ATokenCollateralAdaptorV1 { + #[doc = r" Creates a new contract instance with the specified `ethers`"] + #[doc = r" client at the given `Address`. The contract derefs to a `ethers::Contract`"] + #[doc = r" object"] + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + let contract = ethers::contract::Contract::new( + address.into(), + MORPHOAAVEV3ATOKENCOLLATERALADAPTORV1_ABI.clone(), + client, + ); + Self(contract) + } + #[doc = "Calls the contract's `assetOf` (0xe170a9bf) function"] + pub fn asset_of( + &self, + adaptor_data: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([225, 112, 169, 191], adaptor_data) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `assetsUsed` (0xaeffddde) function"] + pub fn assets_used( + &self, + adaptor_data: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec, + > { + self.0 + .method_hash([174, 255, 221, 222], adaptor_data) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `balanceOf` (0x78415365) function"] + pub fn balance_of( + &self, + adaptor_data: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([120, 65, 83, 101], adaptor_data) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `claim` (0x2f52ebb7) function"] + pub fn claim( + &self, + claimable: ethers::core::types::U256, + proof: ::std::vec::Vec<[u8; 32]>, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([47, 82, 235, 183], (claimable, proof)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `deposit` (0x69445c31) function"] + pub fn deposit( + &self, + assets: ethers::core::types::U256, + adaptor_data: ethers::core::types::Bytes, + p2: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([105, 68, 92, 49], (assets, adaptor_data, p2)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `depositToAaveV3Morpho` (0x53cbf54c) function"] + pub fn deposit_to_aave_v3_morpho( + &self, + token_to_deposit: ethers::core::types::Address, + amount_to_deposit: ethers::core::types::U256, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([83, 203, 245, 76], (token_to_deposit, amount_to_deposit)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `identifier` (0x7998a1c4) function"] + pub fn identifier(&self) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([121, 152, 161, 196], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `isDebt` (0x89353a09) function"] + pub fn is_debt(&self) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([137, 53, 58, 9], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `minimumHealthFactor` (0x1caff8b1) function"] + pub fn minimum_health_factor( + &self, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([28, 175, 248, 177], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `morpho` (0xd8fbc833) function"] + pub fn morpho( + &self, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([216, 251, 200, 51], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `morphoRewardsDistributor` (0x5b5d4d78) function"] + pub fn morpho_rewards_distributor( + &self, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([91, 93, 77, 120], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `revokeApproval` (0xd3bfe76a) function"] + pub fn revoke_approval( + &self, + asset: ethers::core::types::Address, + spender: ethers::core::types::Address, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([211, 191, 231, 106], (asset, spender)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `slippage` (0x3e032a3b) function"] + pub fn slippage(&self) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([62, 3, 42, 59], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `withdraw` (0xc9111bd7) function"] + pub fn withdraw( + &self, + assets: ethers::core::types::U256, + receiver: ethers::core::types::Address, + adaptor_data: ethers::core::types::Bytes, + p3: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([201, 17, 27, 215], (assets, receiver, adaptor_data, p3)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `withdrawFromAaveV3Morpho` (0x37761272) function"] + pub fn withdraw_from_aave_v3_morpho( + &self, + token_to_withdraw: ethers::core::types::Address, + amount_to_withdraw: ethers::core::types::U256, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([55, 118, 18, 114], (token_to_withdraw, amount_to_withdraw)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `withdrawableFrom` (0xfa50e5d2) function"] + pub fn withdrawable_from( + &self, + adaptor_data: ethers::core::types::Bytes, + p1: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([250, 80, 229, 210], (adaptor_data, p1)) + .expect("method not found (this should never happen)") + } + } + #[doc = "Container type for all input parameters for the `assetOf`function with signature `assetOf(bytes)` and selector `[225, 112, 169, 191]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "assetOf", abi = "assetOf(bytes)")] + pub struct AssetOfCall { + pub adaptor_data: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `assetsUsed`function with signature `assetsUsed(bytes)` and selector `[174, 255, 221, 222]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "assetsUsed", abi = "assetsUsed(bytes)")] + pub struct AssetsUsedCall { + pub adaptor_data: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `balanceOf`function with signature `balanceOf(bytes)` and selector `[120, 65, 83, 101]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "balanceOf", abi = "balanceOf(bytes)")] + pub struct BalanceOfCall { + pub adaptor_data: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `claim`function with signature `claim(uint256,bytes32[])` and selector `[47, 82, 235, 183]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "claim", abi = "claim(uint256,bytes32[])")] + pub struct ClaimCall { + pub claimable: ethers::core::types::U256, + pub proof: ::std::vec::Vec<[u8; 32]>, + } + #[doc = "Container type for all input parameters for the `deposit`function with signature `deposit(uint256,bytes,bytes)` and selector `[105, 68, 92, 49]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "deposit", abi = "deposit(uint256,bytes,bytes)")] + pub struct DepositCall { + pub assets: ethers::core::types::U256, + pub adaptor_data: ethers::core::types::Bytes, + pub p2: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `depositToAaveV3Morpho`function with signature `depositToAaveV3Morpho(address,uint256)` and selector `[83, 203, 245, 76]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall( + name = "depositToAaveV3Morpho", + abi = "depositToAaveV3Morpho(address,uint256)" + )] + pub struct DepositToAaveV3MorphoCall { + pub token_to_deposit: ethers::core::types::Address, + pub amount_to_deposit: ethers::core::types::U256, + } + #[doc = "Container type for all input parameters for the `identifier`function with signature `identifier()` and selector `[121, 152, 161, 196]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "identifier", abi = "identifier()")] + pub struct IdentifierCall; + #[doc = "Container type for all input parameters for the `isDebt`function with signature `isDebt()` and selector `[137, 53, 58, 9]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "isDebt", abi = "isDebt()")] + pub struct IsDebtCall; + #[doc = "Container type for all input parameters for the `minimumHealthFactor`function with signature `minimumHealthFactor()` and selector `[28, 175, 248, 177]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "minimumHealthFactor", abi = "minimumHealthFactor()")] + pub struct MinimumHealthFactorCall; + #[doc = "Container type for all input parameters for the `morpho`function with signature `morpho()` and selector `[216, 251, 200, 51]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "morpho", abi = "morpho()")] + pub struct MorphoCall; + #[doc = "Container type for all input parameters for the `morphoRewardsDistributor`function with signature `morphoRewardsDistributor()` and selector `[91, 93, 77, 120]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "morphoRewardsDistributor", abi = "morphoRewardsDistributor()")] + pub struct MorphoRewardsDistributorCall; + #[doc = "Container type for all input parameters for the `revokeApproval`function with signature `revokeApproval(address,address)` and selector `[211, 191, 231, 106]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "revokeApproval", abi = "revokeApproval(address,address)")] + pub struct RevokeApprovalCall { + pub asset: ethers::core::types::Address, + pub spender: ethers::core::types::Address, + } + #[doc = "Container type for all input parameters for the `slippage`function with signature `slippage()` and selector `[62, 3, 42, 59]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "slippage", abi = "slippage()")] + pub struct SlippageCall; + #[doc = "Container type for all input parameters for the `withdraw`function with signature `withdraw(uint256,address,bytes,bytes)` and selector `[201, 17, 27, 215]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "withdraw", abi = "withdraw(uint256,address,bytes,bytes)")] + pub struct WithdrawCall { + pub assets: ethers::core::types::U256, + pub receiver: ethers::core::types::Address, + pub adaptor_data: ethers::core::types::Bytes, + pub p3: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `withdrawFromAaveV3Morpho`function with signature `withdrawFromAaveV3Morpho(address,uint256)` and selector `[55, 118, 18, 114]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall( + name = "withdrawFromAaveV3Morpho", + abi = "withdrawFromAaveV3Morpho(address,uint256)" + )] + pub struct WithdrawFromAaveV3MorphoCall { + pub token_to_withdraw: ethers::core::types::Address, + pub amount_to_withdraw: ethers::core::types::U256, + } + #[doc = "Container type for all input parameters for the `withdrawableFrom`function with signature `withdrawableFrom(bytes,bytes)` and selector `[250, 80, 229, 210]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "withdrawableFrom", abi = "withdrawableFrom(bytes,bytes)")] + pub struct WithdrawableFromCall { + pub adaptor_data: ethers::core::types::Bytes, + pub p1: ethers::core::types::Bytes, + } + #[derive(Debug, Clone, PartialEq, Eq, ethers :: contract :: EthAbiType)] + pub enum MorphoAaveV3ATokenCollateralAdaptorV1Calls { + AssetOf(AssetOfCall), + AssetsUsed(AssetsUsedCall), + BalanceOf(BalanceOfCall), + Claim(ClaimCall), + Deposit(DepositCall), + DepositToAaveV3Morpho(DepositToAaveV3MorphoCall), + Identifier(IdentifierCall), + IsDebt(IsDebtCall), + MinimumHealthFactor(MinimumHealthFactorCall), + Morpho(MorphoCall), + MorphoRewardsDistributor(MorphoRewardsDistributorCall), + RevokeApproval(RevokeApprovalCall), + Slippage(SlippageCall), + Withdraw(WithdrawCall), + WithdrawFromAaveV3Morpho(WithdrawFromAaveV3MorphoCall), + WithdrawableFrom(WithdrawableFromCall), + } + impl ethers::core::abi::AbiDecode for MorphoAaveV3ATokenCollateralAdaptorV1Calls { + fn decode(data: impl AsRef<[u8]>) -> Result { + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenCollateralAdaptorV1Calls::AssetOf(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenCollateralAdaptorV1Calls::AssetsUsed( + decoded, + )); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenCollateralAdaptorV1Calls::BalanceOf( + decoded, + )); + } + if let Ok(decoded) = ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenCollateralAdaptorV1Calls::Claim(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenCollateralAdaptorV1Calls::Deposit(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok( + MorphoAaveV3ATokenCollateralAdaptorV1Calls::DepositToAaveV3Morpho(decoded), + ); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenCollateralAdaptorV1Calls::Identifier( + decoded, + )); + } + if let Ok(decoded) = ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenCollateralAdaptorV1Calls::IsDebt(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok( + MorphoAaveV3ATokenCollateralAdaptorV1Calls::MinimumHealthFactor(decoded), + ); + } + if let Ok(decoded) = ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenCollateralAdaptorV1Calls::Morpho(decoded)); + } + if let Ok(decoded) = + ::decode( + data.as_ref(), + ) + { + return Ok( + MorphoAaveV3ATokenCollateralAdaptorV1Calls::MorphoRewardsDistributor(decoded), + ); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenCollateralAdaptorV1Calls::RevokeApproval( + decoded, + )); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenCollateralAdaptorV1Calls::Slippage( + decoded, + )); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenCollateralAdaptorV1Calls::Withdraw( + decoded, + )); + } + if let Ok(decoded) = + ::decode( + data.as_ref(), + ) + { + return Ok( + MorphoAaveV3ATokenCollateralAdaptorV1Calls::WithdrawFromAaveV3Morpho(decoded), + ); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenCollateralAdaptorV1Calls::WithdrawableFrom(decoded)); + } + Err(ethers::core::abi::Error::InvalidData.into()) + } + } + impl ethers::core::abi::AbiEncode for MorphoAaveV3ATokenCollateralAdaptorV1Calls { + fn encode(self) -> Vec { + match self { + MorphoAaveV3ATokenCollateralAdaptorV1Calls::AssetOf(element) => element.encode(), + MorphoAaveV3ATokenCollateralAdaptorV1Calls::AssetsUsed(element) => element.encode(), + MorphoAaveV3ATokenCollateralAdaptorV1Calls::BalanceOf(element) => element.encode(), + MorphoAaveV3ATokenCollateralAdaptorV1Calls::Claim(element) => element.encode(), + MorphoAaveV3ATokenCollateralAdaptorV1Calls::Deposit(element) => element.encode(), + MorphoAaveV3ATokenCollateralAdaptorV1Calls::DepositToAaveV3Morpho(element) => { + element.encode() + } + MorphoAaveV3ATokenCollateralAdaptorV1Calls::Identifier(element) => element.encode(), + MorphoAaveV3ATokenCollateralAdaptorV1Calls::IsDebt(element) => element.encode(), + MorphoAaveV3ATokenCollateralAdaptorV1Calls::MinimumHealthFactor(element) => { + element.encode() + } + MorphoAaveV3ATokenCollateralAdaptorV1Calls::Morpho(element) => element.encode(), + MorphoAaveV3ATokenCollateralAdaptorV1Calls::MorphoRewardsDistributor(element) => { + element.encode() + } + MorphoAaveV3ATokenCollateralAdaptorV1Calls::RevokeApproval(element) => { + element.encode() + } + MorphoAaveV3ATokenCollateralAdaptorV1Calls::Slippage(element) => element.encode(), + MorphoAaveV3ATokenCollateralAdaptorV1Calls::Withdraw(element) => element.encode(), + MorphoAaveV3ATokenCollateralAdaptorV1Calls::WithdrawFromAaveV3Morpho(element) => { + element.encode() + } + MorphoAaveV3ATokenCollateralAdaptorV1Calls::WithdrawableFrom(element) => { + element.encode() + } + } + } + } + impl ::std::fmt::Display for MorphoAaveV3ATokenCollateralAdaptorV1Calls { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + match self { + MorphoAaveV3ATokenCollateralAdaptorV1Calls::AssetOf(element) => element.fmt(f), + MorphoAaveV3ATokenCollateralAdaptorV1Calls::AssetsUsed(element) => element.fmt(f), + MorphoAaveV3ATokenCollateralAdaptorV1Calls::BalanceOf(element) => element.fmt(f), + MorphoAaveV3ATokenCollateralAdaptorV1Calls::Claim(element) => element.fmt(f), + MorphoAaveV3ATokenCollateralAdaptorV1Calls::Deposit(element) => element.fmt(f), + MorphoAaveV3ATokenCollateralAdaptorV1Calls::DepositToAaveV3Morpho(element) => { + element.fmt(f) + } + MorphoAaveV3ATokenCollateralAdaptorV1Calls::Identifier(element) => element.fmt(f), + MorphoAaveV3ATokenCollateralAdaptorV1Calls::IsDebt(element) => element.fmt(f), + MorphoAaveV3ATokenCollateralAdaptorV1Calls::MinimumHealthFactor(element) => { + element.fmt(f) + } + MorphoAaveV3ATokenCollateralAdaptorV1Calls::Morpho(element) => element.fmt(f), + MorphoAaveV3ATokenCollateralAdaptorV1Calls::MorphoRewardsDistributor(element) => { + element.fmt(f) + } + MorphoAaveV3ATokenCollateralAdaptorV1Calls::RevokeApproval(element) => { + element.fmt(f) + } + MorphoAaveV3ATokenCollateralAdaptorV1Calls::Slippage(element) => element.fmt(f), + MorphoAaveV3ATokenCollateralAdaptorV1Calls::Withdraw(element) => element.fmt(f), + MorphoAaveV3ATokenCollateralAdaptorV1Calls::WithdrawFromAaveV3Morpho(element) => { + element.fmt(f) + } + MorphoAaveV3ATokenCollateralAdaptorV1Calls::WithdrawableFrom(element) => { + element.fmt(f) + } + } + } + } + impl ::std::convert::From for MorphoAaveV3ATokenCollateralAdaptorV1Calls { + fn from(var: AssetOfCall) -> Self { + MorphoAaveV3ATokenCollateralAdaptorV1Calls::AssetOf(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenCollateralAdaptorV1Calls { + fn from(var: AssetsUsedCall) -> Self { + MorphoAaveV3ATokenCollateralAdaptorV1Calls::AssetsUsed(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenCollateralAdaptorV1Calls { + fn from(var: BalanceOfCall) -> Self { + MorphoAaveV3ATokenCollateralAdaptorV1Calls::BalanceOf(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenCollateralAdaptorV1Calls { + fn from(var: ClaimCall) -> Self { + MorphoAaveV3ATokenCollateralAdaptorV1Calls::Claim(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenCollateralAdaptorV1Calls { + fn from(var: DepositCall) -> Self { + MorphoAaveV3ATokenCollateralAdaptorV1Calls::Deposit(var) + } + } + impl ::std::convert::From + for MorphoAaveV3ATokenCollateralAdaptorV1Calls + { + fn from(var: DepositToAaveV3MorphoCall) -> Self { + MorphoAaveV3ATokenCollateralAdaptorV1Calls::DepositToAaveV3Morpho(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenCollateralAdaptorV1Calls { + fn from(var: IdentifierCall) -> Self { + MorphoAaveV3ATokenCollateralAdaptorV1Calls::Identifier(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenCollateralAdaptorV1Calls { + fn from(var: IsDebtCall) -> Self { + MorphoAaveV3ATokenCollateralAdaptorV1Calls::IsDebt(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenCollateralAdaptorV1Calls { + fn from(var: MinimumHealthFactorCall) -> Self { + MorphoAaveV3ATokenCollateralAdaptorV1Calls::MinimumHealthFactor(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenCollateralAdaptorV1Calls { + fn from(var: MorphoCall) -> Self { + MorphoAaveV3ATokenCollateralAdaptorV1Calls::Morpho(var) + } + } + impl ::std::convert::From + for MorphoAaveV3ATokenCollateralAdaptorV1Calls + { + fn from(var: MorphoRewardsDistributorCall) -> Self { + MorphoAaveV3ATokenCollateralAdaptorV1Calls::MorphoRewardsDistributor(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenCollateralAdaptorV1Calls { + fn from(var: RevokeApprovalCall) -> Self { + MorphoAaveV3ATokenCollateralAdaptorV1Calls::RevokeApproval(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenCollateralAdaptorV1Calls { + fn from(var: SlippageCall) -> Self { + MorphoAaveV3ATokenCollateralAdaptorV1Calls::Slippage(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenCollateralAdaptorV1Calls { + fn from(var: WithdrawCall) -> Self { + MorphoAaveV3ATokenCollateralAdaptorV1Calls::Withdraw(var) + } + } + impl ::std::convert::From + for MorphoAaveV3ATokenCollateralAdaptorV1Calls + { + fn from(var: WithdrawFromAaveV3MorphoCall) -> Self { + MorphoAaveV3ATokenCollateralAdaptorV1Calls::WithdrawFromAaveV3Morpho(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenCollateralAdaptorV1Calls { + fn from(var: WithdrawableFromCall) -> Self { + MorphoAaveV3ATokenCollateralAdaptorV1Calls::WithdrawableFrom(var) + } + } +} diff --git a/steward_abi/src/morpho_aave_v3_a_token_p2p_adaptor_v1.rs b/steward_abi/src/morpho_aave_v3_a_token_p2p_adaptor_v1.rs new file mode 100644 index 00000000..225b630f --- /dev/null +++ b/steward_abi/src/morpho_aave_v3_a_token_p2p_adaptor_v1.rs @@ -0,0 +1,685 @@ +pub use morphoaavev3atokenp2padaptorv1_mod::*; +#[allow(clippy::too_many_arguments)] +mod morphoaavev3atokenp2padaptorv1_mod { + #![allow(clippy::enum_variant_names)] + #![allow(dead_code)] + #![allow(clippy::type_complexity)] + #![allow(unused_imports)] + use ethers::contract::{ + builders::{ContractCall, Event}, + Contract, Lazy, + }; + use ethers::core::{ + abi::{Abi, Detokenize, InvalidOutputType, Token, Tokenizable}, + types::*, + }; + use ethers::providers::Middleware; + #[doc = "MorphoAaveV3ATokenP2PAdaptorV1 was auto-generated with ethers-rs Abigen. More information at: https://github.com/gakonst/ethers-rs"] + use std::sync::Arc; + pub static MORPHOAAVEV3ATOKENP2PADAPTORV1_ABI: ethers::contract::Lazy = + ethers::contract::Lazy::new(|| { + serde_json :: from_str ("{\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_morpho\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"rewardDistributor\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__ConstructorHealthFactorTooLow\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__ExternalReceiverBlocked\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"asset\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"BaseAdaptor__PricingNotSupported\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__Slippage\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__UserDepositsNotAllowed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__UserWithdrawsNotAllowed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"assetOf\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"assetsUsed\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20[]\",\n \"name\": \"assets\",\n \"type\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimable\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"name\": \"claim\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"assets\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"configurationData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"deposit\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"tokenToDeposit\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountToDeposit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxIterations\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"depositToAaveV3Morpho\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"identifier\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"isDebt\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"morpho\",\n \"outputs\": [\n {\n \"internalType\": \"contract IMorphoV3\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"morphoRewardsDistributor\",\n \"outputs\": [\n {\n \"internalType\": \"contract RewardsDistributor\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"asset\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"revokeApproval\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"slippage\",\n \"outputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"\",\n \"type\": \"uint32\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"assets\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"configurationData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"tokenToWithdraw\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountToWithdraw\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxIterations\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"withdrawFromAaveV3Morpho\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"withdrawableFrom\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": {\n \"object\": \"0x60c060405234801561001057600080fd5b5060405161116238038061116283398101604081905261002f91610062565b6001600160a01b039081166080521660a052610095565b80516001600160a01b038116811461005d57600080fd5b919050565b6000806040838503121561007557600080fd5b61007e83610046565b915061008c60208401610046565b90509250929050565b60805160a05161105b6101076000396000818161021f0152818161033d015281816103d70152818161045d015281816104d10152818161053b0152818161064e015281816106a60152818161071a0152818161081b015261090201526000818161013c015261027e015261105b6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80637ca4c4b711610097578063d3bfe76a11610066578063d3bfe76a14610207578063d8fbc8331461021a578063e170a9bf14610241578063fa50e5d21461025457600080fd5b80637ca4c4b7146101b257806389353a09146101c5578063aeffddde146101d4578063c9111bd7146101f457600080fd5b80635b5d4d78116100d35780635b5d4d781461013757806369445c311461017657806378415365146101895780637998a1c4146101aa57600080fd5b80632f52ebb7146100fa57806335340a271461010f5780633e032a3b14610122575b600080fd5b61010d610108366004610be2565b610267565b005b61010d61011d366004610ca9565b6102ed565b60405161232881526020015b60405180910390f35b61015e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161012e565b61010d610184366004610d4e565b6103b0565b61019c610197366004610dbb565b6104fc565b60405190815260200161012e565b61019c6105af565b61010d6101c0366004610ca9565b61061d565b6040516000815260200161012e565b6101e76101e2366004610dbb565b610743565b60405161012e9190610df0565b61010d610202366004610e3d565b6107a6565b61010d610215366004610ebd565b610893565b61015e7f000000000000000000000000000000000000000000000000000000000000000081565b61015e61024f366004610dbb565b6108ac565b61019c610262366004610ef6565b6108c3565b604051630f44fe1d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633d13f874906102b790309086908690600401610f5a565b600060405180830381600087803b1580156102d157600080fd5b505af11580156102e5573d6000803e3d6000fd5b505050505050565b8015806102fa5750600a81115b15610303575060045b604051632a80f8e360e11b81526001600160a01b0384811660048301526024820184905230604483018190526064830152608482018390527f00000000000000000000000000000000000000000000000000000000000000001690635501f1c69060a4016020604051808303816000875af1158015610386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103aa9190610fb7565b50505050565b6000828060200190518101906103c69190610fd0565b90506103fc6001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000086610979565b6000828060200190518101906104129190610fb7565b90508015806104215750600a81115b1561042a575060045b604051633a71cd6760e21b81526001600160a01b03838116600483015260248201879052306044830152606482018390527f0000000000000000000000000000000000000000000000000000000000000000169063e9c7359c906084016020604051808303816000875af11580156104a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ca9190610fb7565b506104f5827f00000000000000000000000000000000000000000000000000000000000000006109f4565b5050505050565b600080828060200190518101906105139190610fd0565b6040516351e2e5b960e11b81526001600160a01b0380831660048301523360248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a3c5cb7290604401602060405180830381865afa158015610584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a89190610fb7565b9392505050565b60006040516020016106029060208082526027908201527f4d6f7270686f20416176652056332061546f6b656e205032502041646170746f60408201526639102b1018971960c91b606082015260800190565b60405160208183030381529060405280519060200120905090565b80158061062a5750600a81115b15610633575060045b61063d8383610a83565b91506106736001600160a01b0384167f000000000000000000000000000000000000000000000000000000000000000084610979565b604051633a71cd6760e21b81526001600160a01b03848116600483015260248201849052306044830152606482018390527f0000000000000000000000000000000000000000000000000000000000000000169063e9c7359c906084016020604051808303816000875af11580156106ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107139190610fb7565b5061073e837f00000000000000000000000000000000000000000000000000000000000000006109f4565b505050565b6040805160018082528183019092526060916020808301908036833701905050905061076e826108ac565b8160008151811061078157610781610fed565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b6107af83610b04565b6000828060200190518101906107c59190610fd0565b90506000828060200190518101906107dd9190610fb7565b604051632a80f8e360e11b81526001600160a01b038481166004830152602482018990523060448301528781166064830152608482018390529192507f000000000000000000000000000000000000000000000000000000000000000090911690635501f1c69060a4016020604051808303816000875af1158015610866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088a9190610fb7565b50505050505050565b6108a86001600160a01b038316826000610979565b5050565b600080828060200190518101906105a89190610fd0565b600080838060200190518101906108da9190610fd0565b6040516351e2e5b960e11b81526001600160a01b0380831660048301523360248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a3c5cb7290604401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610fb7565b9150505b92915050565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806103aa5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b604482015260640160405180910390fd5b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa158015610a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a689190610fb7565b11156108a8576108a86001600160a01b038316826000610979565b60006000198203610afd576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af69190610fb7565b9050610973565b5080610973565b6001600160a01b0381163014801590610b7a5750306001600160a01b0316634c4602da6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a9190611003565b15610b98576040516307de9b5160e21b815260040160405180910390fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610bda57610bda610b9b565b604052919050565b60008060408385031215610bf557600080fd5b8235915060208084013567ffffffffffffffff80821115610c1557600080fd5b818601915086601f830112610c2957600080fd5b813581811115610c3b57610c3b610b9b565b8060051b9150610c4c848301610bb1565b8181529183018401918481019089841115610c6657600080fd5b938501935b83851015610c8457843582529385019390850190610c6b565b8096505050505050509250929050565b6001600160a01b0381168114610b9857600080fd5b600080600060608486031215610cbe57600080fd5b8335610cc981610c94565b95602085013595506040909401359392505050565b600082601f830112610cef57600080fd5b813567ffffffffffffffff811115610d0957610d09610b9b565b610d1c601f8201601f1916602001610bb1565b818152846020838601011115610d3157600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215610d6357600080fd5b83359250602084013567ffffffffffffffff80821115610d8257600080fd5b610d8e87838801610cde565b93506040860135915080821115610da457600080fd5b50610db186828701610cde565b9150509250925092565b600060208284031215610dcd57600080fd5b813567ffffffffffffffff811115610de457600080fd5b61096f84828501610cde565b6020808252825182820181905260009190848201906040850190845b81811015610e315783516001600160a01b031683529284019291840191600101610e0c565b50909695505050505050565b60008060008060808587031215610e5357600080fd5b843593506020850135610e6581610c94565b9250604085013567ffffffffffffffff80821115610e8257600080fd5b610e8e88838901610cde565b93506060870135915080821115610ea457600080fd5b50610eb187828801610cde565b91505092959194509250565b60008060408385031215610ed057600080fd5b8235610edb81610c94565b91506020830135610eeb81610c94565b809150509250929050565b60008060408385031215610f0957600080fd5b823567ffffffffffffffff80821115610f2157600080fd5b610f2d86838701610cde565b93506020850135915080821115610f4357600080fd5b50610f5085828601610cde565b9150509250929050565b6001600160a01b038416815260208082018490526060604083018190528351908301819052600091848101916080850190845b81811015610fa957845183529383019391830191600101610f8d565b509098975050505050505050565b600060208284031215610fc957600080fd5b5051919050565b600060208284031215610fe257600080fd5b81516105a881610c94565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561101557600080fd5b815180151581146105a857600080fdfea264697066735822122035c4efd5c6303e30507a76738adbf547094bc900853feea9ef41338e39d574c564736f6c63430008100033\",\n \"sourceMap\": \"464:6629:200:-:0;;;1444:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;629:72:203;;;;;1549:27:200::1;;::::0;464:6629;;14:177:258;93:13;;-1:-1:-1;;;;;135:31:258;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;:::-;464:6629:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\",\n \"linkReferences\": {}\n },\n \"deployedBytecode\": {\n \"object\": \"0x608060405234801561001057600080fd5b50600436106100f55760003560e01c80637ca4c4b711610097578063d3bfe76a11610066578063d3bfe76a14610207578063d8fbc8331461021a578063e170a9bf14610241578063fa50e5d21461025457600080fd5b80637ca4c4b7146101b257806389353a09146101c5578063aeffddde146101d4578063c9111bd7146101f457600080fd5b80635b5d4d78116100d35780635b5d4d781461013757806369445c311461017657806378415365146101895780637998a1c4146101aa57600080fd5b80632f52ebb7146100fa57806335340a271461010f5780633e032a3b14610122575b600080fd5b61010d610108366004610be2565b610267565b005b61010d61011d366004610ca9565b6102ed565b60405161232881526020015b60405180910390f35b61015e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161012e565b61010d610184366004610d4e565b6103b0565b61019c610197366004610dbb565b6104fc565b60405190815260200161012e565b61019c6105af565b61010d6101c0366004610ca9565b61061d565b6040516000815260200161012e565b6101e76101e2366004610dbb565b610743565b60405161012e9190610df0565b61010d610202366004610e3d565b6107a6565b61010d610215366004610ebd565b610893565b61015e7f000000000000000000000000000000000000000000000000000000000000000081565b61015e61024f366004610dbb565b6108ac565b61019c610262366004610ef6565b6108c3565b604051630f44fe1d60e21b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633d13f874906102b790309086908690600401610f5a565b600060405180830381600087803b1580156102d157600080fd5b505af11580156102e5573d6000803e3d6000fd5b505050505050565b8015806102fa5750600a81115b15610303575060045b604051632a80f8e360e11b81526001600160a01b0384811660048301526024820184905230604483018190526064830152608482018390527f00000000000000000000000000000000000000000000000000000000000000001690635501f1c69060a4016020604051808303816000875af1158015610386573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103aa9190610fb7565b50505050565b6000828060200190518101906103c69190610fd0565b90506103fc6001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000086610979565b6000828060200190518101906104129190610fb7565b90508015806104215750600a81115b1561042a575060045b604051633a71cd6760e21b81526001600160a01b03838116600483015260248201879052306044830152606482018390527f0000000000000000000000000000000000000000000000000000000000000000169063e9c7359c906084016020604051808303816000875af11580156104a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ca9190610fb7565b506104f5827f00000000000000000000000000000000000000000000000000000000000000006109f4565b5050505050565b600080828060200190518101906105139190610fd0565b6040516351e2e5b960e11b81526001600160a01b0380831660048301523360248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a3c5cb7290604401602060405180830381865afa158015610584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a89190610fb7565b9392505050565b60006040516020016106029060208082526027908201527f4d6f7270686f20416176652056332061546f6b656e205032502041646170746f60408201526639102b1018971960c91b606082015260800190565b60405160208183030381529060405280519060200120905090565b80158061062a5750600a81115b15610633575060045b61063d8383610a83565b91506106736001600160a01b0384167f000000000000000000000000000000000000000000000000000000000000000084610979565b604051633a71cd6760e21b81526001600160a01b03848116600483015260248201849052306044830152606482018390527f0000000000000000000000000000000000000000000000000000000000000000169063e9c7359c906084016020604051808303816000875af11580156106ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107139190610fb7565b5061073e837f00000000000000000000000000000000000000000000000000000000000000006109f4565b505050565b6040805160018082528183019092526060916020808301908036833701905050905061076e826108ac565b8160008151811061078157610781610fed565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b6107af83610b04565b6000828060200190518101906107c59190610fd0565b90506000828060200190518101906107dd9190610fb7565b604051632a80f8e360e11b81526001600160a01b038481166004830152602482018990523060448301528781166064830152608482018390529192507f000000000000000000000000000000000000000000000000000000000000000090911690635501f1c69060a4016020604051808303816000875af1158015610866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088a9190610fb7565b50505050505050565b6108a86001600160a01b038316826000610979565b5050565b600080828060200190518101906105a89190610fd0565b600080838060200190518101906108da9190610fd0565b6040516351e2e5b960e11b81526001600160a01b0380831660048301523360248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a3c5cb7290604401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610fb7565b9150505b92915050565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806103aa5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b604482015260640160405180910390fd5b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa158015610a44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a689190610fb7565b11156108a8576108a86001600160a01b038316826000610979565b60006000198203610afd576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af69190610fb7565b9050610973565b5080610973565b6001600160a01b0381163014801590610b7a5750306001600160a01b0316634c4602da6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b56573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7a9190611003565b15610b98576040516307de9b5160e21b815260040160405180910390fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610bda57610bda610b9b565b604052919050565b60008060408385031215610bf557600080fd5b8235915060208084013567ffffffffffffffff80821115610c1557600080fd5b818601915086601f830112610c2957600080fd5b813581811115610c3b57610c3b610b9b565b8060051b9150610c4c848301610bb1565b8181529183018401918481019089841115610c6657600080fd5b938501935b83851015610c8457843582529385019390850190610c6b565b8096505050505050509250929050565b6001600160a01b0381168114610b9857600080fd5b600080600060608486031215610cbe57600080fd5b8335610cc981610c94565b95602085013595506040909401359392505050565b600082601f830112610cef57600080fd5b813567ffffffffffffffff811115610d0957610d09610b9b565b610d1c601f8201601f1916602001610bb1565b818152846020838601011115610d3157600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215610d6357600080fd5b83359250602084013567ffffffffffffffff80821115610d8257600080fd5b610d8e87838801610cde565b93506040860135915080821115610da457600080fd5b50610db186828701610cde565b9150509250925092565b600060208284031215610dcd57600080fd5b813567ffffffffffffffff811115610de457600080fd5b61096f84828501610cde565b6020808252825182820181905260009190848201906040850190845b81811015610e315783516001600160a01b031683529284019291840191600101610e0c565b50909695505050505050565b60008060008060808587031215610e5357600080fd5b843593506020850135610e6581610c94565b9250604085013567ffffffffffffffff80821115610e8257600080fd5b610e8e88838901610cde565b93506060870135915080821115610ea457600080fd5b50610eb187828801610cde565b91505092959194509250565b60008060408385031215610ed057600080fd5b8235610edb81610c94565b91506020830135610eeb81610c94565b809150509250929050565b60008060408385031215610f0957600080fd5b823567ffffffffffffffff80821115610f2157600080fd5b610f2d86838701610cde565b93506020850135915080821115610f4357600080fd5b50610f5085828601610cde565b9150509250929050565b6001600160a01b038416815260208082018490526060604083018190528351908301819052600091848101916080850190845b81811015610fa957845183529383019391830191600101610f8d565b509098975050505050505050565b600060208284031215610fc957600080fd5b5051919050565b600060208284031215610fe257600080fd5b81516105a881610c94565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561101557600080fd5b815180151581146105a857600080fdfea264697066735822122035c4efd5c6303e30507a76738adbf547094bc900853feea9ef41338e39d574c564736f6c63430008100033\",\n \"sourceMap\": \"464:6629:200:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;902:145:203;;;;;;:::i;:::-;;:::i;:::-;;6665:426:200;;;;;;:::i;:::-;;:::i;2415:78:188:-;;;2481:5;2142:42:258;;2130:2;2115:18;2415:78:188;;;;;;;;505:60:203;;;;;;;;-1:-1:-1;;;;;2387:32:258;;;2369:51;;2357:2;2342:18;505:60:203;2195:231:258;2586:620:200;;;;;;:::i;:::-;;:::i;4549:217::-;;;;;;:::i;:::-;;:::i;:::-;;;4049:25:258;;;4037:2;4022:18;4549:217:200;3903:177:258;2002:149:200;;;:::i;5679:657::-;;;;;;:::i;:::-;;:::i;5102:83::-;;;5150:4;4407:41:258;;4395:2;4380:18;5102:83:200;4267:187:258;5934:180:188;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3652:513:200:-;;;;;;:::i;:::-;;:::i;9204:107:188:-;;;;;;:::i;:::-;;:::i;1404:33:200:-;;;;;4843:175;;;;;;:::i;:::-;;:::i;4241:238::-;;;;;;:::i;:::-;;:::i;902:145:203:-;977:63;;-1:-1:-1;;;977:63:203;;-1:-1:-1;;;;;977:24:203;:30;;;;:63;;1016:4;;1023:9;;1034:5;;977:63;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;902:145;;:::o;6665:426:200:-;6882:18;;;:52;;;1187:2;6904:13;:30;6882:52;6878:92;;;-1:-1:-1;1242:1:200;6878:92;6980:104;;-1:-1:-1;;;6980:104:200;;-1:-1:-1;;;;;8429:15:258;;;6980:104:200;;;8411:34:258;8461:18;;;8454:34;;;7048:4:200;8504:18:258;;;8497:43;;;8556:18;;;8549:43;8608:19;;;8601:35;;;6980:6:200;:15;;;;8345:19:258;;6980:104:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6665:426;;;:::o;2586:620::-;2740:16;2770:11;2759:32;;;;;;;;;;;;:::i;:::-;2740:51;-1:-1:-1;2801:47:200;-1:-1:-1;;;;;2801:22:200;;2832:6;2841;2801:22;:47::i;:::-;2859:18;2891:17;2880:40;;;;;;;;;;;;:::i;:::-;2859:61;-1:-1:-1;2934:15:200;;;:46;;;1187:2;2953:10;:27;2934:46;2930:83;;;-1:-1:-1;1242:1:200;2930:83;3023:69;;-1:-1:-1;;;3023:69:200;;-1:-1:-1;;;;;9401:15:258;;;3023:69:200;;;9383:34:258;9433:18;;;9426:34;;;3074:4:200;9476:18:258;;;9469:43;9528:18;;;9521:34;;;3023:6:200;:13;;;;9317:19:258;;3023:69:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3147:52;3171:10;3191:6;3147:23;:52::i;:::-;2693:513;;2586:620;;;:::o;4549:217::-;4624:7;4643:18;4675:11;4664:34;;;;;;;;;;;;:::i;:::-;4715:44;;-1:-1:-1;;;4715:44:200;;-1:-1:-1;;;;;10067:15:258;;;4715:44:200;;;10049:34:258;4748:10:200;10099:18:258;;;10092:43;4643:55:200;;-1:-1:-1;4715:6:200;:20;;;;;;9984:18:258;;4715:44:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4708:51;4549:217;-1:-1:-1;;;4549:217:200:o;2002:149::-;2054:7;2090:53;;;;;;10348:2:258;10330:21;;;10387:2;10367:18;;;10360:30;10426:34;10421:2;10406:18;;10399:62;-1:-1:-1;;;10492:2:258;10477:18;;10470:37;10539:3;10524:19;;10146:403;2090:53:200;;;;;;;;;;;;;2080:64;;;;;;2073:71;;2002:149;:::o;5679:657::-;5890:18;;;:52;;;1187:2;5912:13;:30;5890:52;5886:92;;;-1:-1:-1;1242:1:200;5886:92;6007:46;6021:14;6037:15;6007:13;:46::i;:::-;5989:64;-1:-1:-1;6063:60:200;-1:-1:-1;;;;;6063:26:200;;6098:6;5989:64;6063:26;:60::i;:::-;6133:85;;-1:-1:-1;;;6133:85:200;;-1:-1:-1;;;;;9401:15:258;;;6133:85:200;;;9383:34:258;9433:18;;;9426:34;;;6197:4:200;9476:18:258;;;9469:43;9528:18;;;9521:34;;;6133:6:200;:13;;;;9317:19:258;;6133:85:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6273:56;6297:14;6321:6;6273:23;:56::i;:::-;5679:657;;;:::o;5934:180:188:-;6051:14;;;6063:1;6051:14;;;;;;;;;6009:21;;6051:14;;;;;;;;;;;-1:-1:-1;6051:14:188;6042:23;;6087:20;6095:11;6087:7;:20::i;:::-;6075:6;6082:1;6075:9;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;6075:32:188;;;-1:-1:-1;;;;;6075:32:188;;;;;5934:180;;;:::o;3652:513:200:-;3866:32;3889:8;3866:22;:32::i;:::-;3909:18;3941:11;3930:34;;;;;;;;;;;;:::i;:::-;3909:55;;3974:18;4006:17;3995:40;;;;;;;;;;;;:::i;:::-;4086:72;;-1:-1:-1;;;4086:72:200;;-1:-1:-1;;;;;8429:15:258;;;4086:72:200;;;8411:34:258;8461:18;;;8454:34;;;4130:4:200;8504:18:258;;;8497:43;8576:15;;;8556:18;;;8549:43;8608:19;;;8601:35;;;3974:61:200;;-1:-1:-1;4086:6:200;:15;;;;;;8345:19:258;;4086:72:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3816:349;;3652:513;;;;:::o;9204:107:188:-;9275:29;-1:-1:-1;;;;;9275:17:188;;9293:7;9302:1;9275:17;:29::i;:::-;9204:107;;:::o;4843:175:200:-;4916:5;4933:16;4963:11;4952:32;;;;;;;;;;;;:::i;4241:238::-;4337:7;4356:18;4388:11;4377:34;;;;;;;;;;;;:::i;:::-;4428:44;;-1:-1:-1;;;4428:44:200;;-1:-1:-1;;;;;10067:15:258;;;4428:44:200;;;10049:34:258;4461:10:200;10099:18:258;;;10092:43;4356:55:200;;-1:-1:-1;4428:6:200;:20;;;;;;9984:18:258;;4428:44:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4421:51;;;4241:238;;;;;:::o;4327:1454:104:-;4438:12;4565:4;4559:11;-1:-1:-1;;;4688:17:104;4681:93;4821:2;4817:1;4798:17;4794:25;4787:37;4901:6;4896:2;4877:17;4873:26;4866:42;5703:2;5700:1;5696:2;5677:17;5674:1;5667:5;5660;5655:51;5224:16;5217:24;5211:2;5193:16;5190:24;5186:1;5182;5176:8;5173:15;5169:46;5166:76;4966:754;4955:765;;;5748:7;5740:34;;;;-1:-1:-1;;;5740:34:104;;10888:2:258;5740:34:104;;;10870:21:258;10927:2;10907:18;;;10900:30;-1:-1:-1;;;10946:18:258;;;10939:44;11000:18;;5740:34:104;;;;;;;8158:167:188;8244:39;;-1:-1:-1;;;8244:39:188;;8268:4;8244:39;;;10049:34:258;-1:-1:-1;;;;;10119:15:258;;;10099:18;;;10092:43;8286:1:188;;8244:15;;;;;;9984:18:258;;8244:39:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;8240:78;;;8289:29;-1:-1:-1;;;;;8289:17:188;;8307:7;8316:1;8289:17;:29::i;7816:207::-;7899:7;-1:-1:-1;;7922:6:188;:27;7918:98;;7958:30;;-1:-1:-1;;;7958:30:188;;7982:4;7958:30;;;2369:51:258;-1:-1:-1;;;;;7958:15:188;;;;;2342:18:258;;7958:30:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7951:37;;;;7918:98;-1:-1:-1;8010:6:188;8003:13;;8425:218;-1:-1:-1;;;;;8503:25:188;;8523:4;8503:25;;;;:74;;;8547:4;-1:-1:-1;;;;;8532:43:188;;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8499:137;;;8598:38;;-1:-1:-1;;;8598:38:188;;;;;;;;;;;8499:137;8425:218;:::o;14:127:258:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:275;217:2;211:9;282:2;263:13;;-1:-1:-1;;259:27:258;247:40;;317:18;302:34;;338:22;;;299:62;296:88;;;364:18;;:::i;:::-;400:2;393:22;146:275;;-1:-1:-1;146:275:258:o;426:1014::-;519:6;527;580:2;568:9;559:7;555:23;551:32;548:52;;;596:1;593;586:12;548:52;632:9;619:23;609:33;;661:2;714;703:9;699:18;686:32;737:18;778:2;770:6;767:14;764:34;;;794:1;791;784:12;764:34;832:6;821:9;817:22;807:32;;877:7;870:4;866:2;862:13;858:27;848:55;;899:1;896;889:12;848:55;935:2;922:16;957:2;953;950:10;947:36;;;963:18;;:::i;:::-;1009:2;1006:1;1002:10;992:20;;1032:28;1056:2;1052;1048:11;1032:28;:::i;:::-;1094:15;;;1164:11;;;1160:20;;;1125:12;;;;1192:19;;;1189:39;;;1224:1;1221;1214:12;1189:39;1248:11;;;;1268:142;1284:6;1279:3;1276:15;1268:142;;;1350:17;;1338:30;;1301:12;;;;1388;;;;1268:142;;;1429:5;1419:15;;;;;;;;426:1014;;;;;:::o;1445:138::-;-1:-1:-1;;;;;1527:31:258;;1517:42;;1507:70;;1573:1;1570;1563:12;1588:405;1680:6;1688;1696;1749:2;1737:9;1728:7;1724:23;1720:32;1717:52;;;1765:1;1762;1755:12;1717:52;1804:9;1791:23;1823:38;1855:5;1823:38;:::i;:::-;1880:5;1932:2;1917:18;;1904:32;;-1:-1:-1;1983:2:258;1968:18;;;1955:32;;1588:405;-1:-1:-1;;;1588:405:258:o;2431:530::-;2473:5;2526:3;2519:4;2511:6;2507:17;2503:27;2493:55;;2544:1;2541;2534:12;2493:55;2580:6;2567:20;2606:18;2602:2;2599:26;2596:52;;;2628:18;;:::i;:::-;2672:55;2715:2;2696:13;;-1:-1:-1;;2692:27:258;2721:4;2688:38;2672:55;:::i;:::-;2752:2;2743:7;2736:19;2798:3;2791:4;2786:2;2778:6;2774:15;2770:26;2767:35;2764:55;;;2815:1;2812;2805:12;2764:55;2880:2;2873:4;2865:6;2861:17;2854:4;2845:7;2841:18;2828:55;2928:1;2903:16;;;2921:4;2899:27;2892:38;;;;2907:7;2431:530;-1:-1:-1;;;2431:530:258:o;2966:607::-;3061:6;3069;3077;3130:2;3118:9;3109:7;3105:23;3101:32;3098:52;;;3146:1;3143;3136:12;3098:52;3182:9;3169:23;3159:33;;3243:2;3232:9;3228:18;3215:32;3266:18;3307:2;3299:6;3296:14;3293:34;;;3323:1;3320;3313:12;3293:34;3346:49;3387:7;3378:6;3367:9;3363:22;3346:49;:::i;:::-;3336:59;;3448:2;3437:9;3433:18;3420:32;3404:48;;3477:2;3467:8;3464:16;3461:36;;;3493:1;3490;3483:12;3461:36;;3516:51;3559:7;3548:8;3537:9;3533:24;3516:51;:::i;:::-;3506:61;;;2966:607;;;;;:::o;3578:320::-;3646:6;3699:2;3687:9;3678:7;3674:23;3670:32;3667:52;;;3715:1;3712;3705:12;3667:52;3755:9;3742:23;3788:18;3780:6;3777:30;3774:50;;;3820:1;3817;3810:12;3774:50;3843:49;3884:7;3875:6;3864:9;3860:22;3843:49;:::i;4459:673::-;4645:2;4697:21;;;4767:13;;4670:18;;;4789:22;;;4616:4;;4645:2;4868:15;;;;4842:2;4827:18;;;4616:4;4911:195;4925:6;4922:1;4919:13;4911:195;;;4990:13;;-1:-1:-1;;;;;4986:39:258;4974:52;;5081:15;;;;5046:12;;;;5022:1;4940:9;4911:195;;;-1:-1:-1;5123:3:258;;4459:673;-1:-1:-1;;;;;;4459:673:258:o;5137:750::-;5241:6;5249;5257;5265;5318:3;5306:9;5297:7;5293:23;5289:33;5286:53;;;5335:1;5332;5325:12;5286:53;5371:9;5358:23;5348:33;;5431:2;5420:9;5416:18;5403:32;5444:38;5476:5;5444:38;:::i;:::-;5501:5;-1:-1:-1;5557:2:258;5542:18;;5529:32;5580:18;5610:14;;;5607:34;;;5637:1;5634;5627:12;5607:34;5660:49;5701:7;5692:6;5681:9;5677:22;5660:49;:::i;:::-;5650:59;;5762:2;5751:9;5747:18;5734:32;5718:48;;5791:2;5781:8;5778:16;5775:36;;;5807:1;5804;5797:12;5775:36;;5830:51;5873:7;5862:8;5851:9;5847:24;5830:51;:::i;:::-;5820:61;;;5137:750;;;;;;;:::o;5892:417::-;5975:6;5983;6036:2;6024:9;6015:7;6011:23;6007:32;6004:52;;;6052:1;6049;6042:12;6004:52;6091:9;6078:23;6110:38;6142:5;6110:38;:::i;:::-;6167:5;-1:-1:-1;6224:2:258;6209:18;;6196:32;6237:40;6196:32;6237:40;:::i;:::-;6296:7;6286:17;;;5892:417;;;;;:::o;6764:539::-;6850:6;6858;6911:2;6899:9;6890:7;6886:23;6882:32;6879:52;;;6927:1;6924;6917:12;6879:52;6967:9;6954:23;6996:18;7037:2;7029:6;7026:14;7023:34;;;7053:1;7050;7043:12;7023:34;7076:49;7117:7;7108:6;7097:9;7093:22;7076:49;:::i;:::-;7066:59;;7178:2;7167:9;7163:18;7150:32;7134:48;;7207:2;7197:8;7194:16;7191:36;;;7223:1;7220;7213:12;7191:36;;7246:51;7289:7;7278:8;7267:9;7263:24;7246:51;:::i;:::-;7236:61;;;6764:539;;;;;:::o;7308:801::-;-1:-1:-1;;;;;7584:32:258;;7566:51;;7636:2;7654:18;;;7647:34;;;7554:2;7712;7697:18;;7690:30;;;7769:13;;7539:18;;;7791:22;;;7506:4;;7871:15;;;;7844:3;7829:19;;;7506:4;7914:169;7928:6;7925:1;7922:13;7914:169;;;7989:13;;7977:26;;8058:15;;;;8023:12;;;;7950:1;7943:9;7914:169;;;-1:-1:-1;8100:3:258;;7308:801;-1:-1:-1;;;;;;;;7308:801:258:o;8647:184::-;8717:6;8770:2;8758:9;8749:7;8745:23;8741:32;8738:52;;;8786:1;8783;8776:12;8738:52;-1:-1:-1;8809:16:258;;8647:184;-1:-1:-1;8647:184:258:o;8836:273::-;8921:6;8974:2;8962:9;8953:7;8949:23;8945:32;8942:52;;;8990:1;8987;8980:12;8942:52;9022:9;9016:16;9041:38;9073:5;9041:38;:::i;10554:127::-;10615:10;10610:3;10606:20;10603:1;10596:31;10646:4;10643:1;10636:15;10670:4;10667:1;10660:15;11237:277;11304:6;11357:2;11345:9;11336:7;11332:23;11328:32;11325:52;;;11373:1;11370;11363:12;11325:52;11405:9;11399:16;11458:5;11451:13;11444:21;11437:5;11434:32;11424:60;;11480:1;11477;11470:12\",\n \"linkReferences\": {},\n \"immutableReferences\": {\n \"65919\": [\n {\n \"start\": 543,\n \"length\": 32\n },\n {\n \"start\": 829,\n \"length\": 32\n },\n {\n \"start\": 983,\n \"length\": 32\n },\n {\n \"start\": 1117,\n \"length\": 32\n },\n {\n \"start\": 1233,\n \"length\": 32\n },\n {\n \"start\": 1339,\n \"length\": 32\n },\n {\n \"start\": 1614,\n \"length\": 32\n },\n {\n \"start\": 1702,\n \"length\": 32\n },\n {\n \"start\": 1818,\n \"length\": 32\n },\n {\n \"start\": 2075,\n \"length\": 32\n },\n {\n \"start\": 2306,\n \"length\": 32\n }\n ],\n \"66662\": [\n {\n \"start\": 316,\n \"length\": 32\n },\n {\n \"start\": 638,\n \"length\": 32\n }\n ]\n }\n },\n \"methodIdentifiers\": {\n \"assetOf(bytes)\": \"e170a9bf\",\n \"assetsUsed(bytes)\": \"aeffddde\",\n \"balanceOf(bytes)\": \"78415365\",\n \"claim(uint256,bytes32[])\": \"2f52ebb7\",\n \"deposit(uint256,bytes,bytes)\": \"69445c31\",\n \"depositToAaveV3Morpho(address,uint256,uint256)\": \"7ca4c4b7\",\n \"identifier()\": \"7998a1c4\",\n \"isDebt()\": \"89353a09\",\n \"morpho()\": \"d8fbc833\",\n \"morphoRewardsDistributor()\": \"5b5d4d78\",\n \"revokeApproval(address,address)\": \"d3bfe76a\",\n \"slippage()\": \"3e032a3b\",\n \"withdraw(uint256,address,bytes,bytes)\": \"c9111bd7\",\n \"withdrawFromAaveV3Morpho(address,uint256,uint256)\": \"35340a27\",\n \"withdrawableFrom(bytes,bytes)\": \"fa50e5d2\"\n },\n \"rawMetadata\": \"{\\\"compiler\\\":{\\\"version\\\":\\\"0.8.16+commit.07a7930e\\\"},\\\"language\\\":\\\"Solidity\\\",\\\"output\\\":{\\\"abi\\\":[{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"_morpho\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"rewardDistributor\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"constructor\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__ConstructorHealthFactorTooLow\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__ExternalReceiverBlocked\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"BaseAdaptor__PricingNotSupported\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__Slippage\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__UserDepositsNotAllowed\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__UserWithdrawsNotAllowed\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"assetOf\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract ERC20\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"assetsUsed\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract ERC20[]\\\",\\\"name\\\":\\\"assets\\\",\\\"type\\\":\\\"address[]\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"balanceOf\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"claimable\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"bytes32[]\\\",\\\"name\\\":\\\"proof\\\",\\\"type\\\":\\\"bytes32[]\\\"}],\\\"name\\\":\\\"claim\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"assets\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"configurationData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"deposit\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"contract ERC20\\\",\\\"name\\\":\\\"tokenToDeposit\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"amountToDeposit\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"maxIterations\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"depositToAaveV3Morpho\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"identifier\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"bytes32\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes32\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"isDebt\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"bool\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bool\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"morpho\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract IMorphoV3\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"morphoRewardsDistributor\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract RewardsDistributor\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"contract ERC20\\\",\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"spender\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"revokeApproval\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"slippage\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint32\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint32\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"assets\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"receiver\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"configurationData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"withdraw\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"contract ERC20\\\",\\\"name\\\":\\\"tokenToWithdraw\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"amountToWithdraw\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"maxIterations\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"withdrawFromAaveV3Morpho\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"withdrawableFrom\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"}],\\\"devdoc\\\":{\\\"author\\\":\\\"crispymangoes\\\",\\\"kind\\\":\\\"dev\\\",\\\"methods\\\":{\\\"deposit(uint256,bytes,bytes)\\\":{\\\"params\\\":{\\\"adaptorData\\\":\\\"adaptor data containining the abi encoded aToken\\\",\\\"assets\\\":\\\"the amount of assets to lend on Morpho\\\",\\\"configurationData\\\":\\\"abi encoded maxIterations\\\"}},\\\"depositToAaveV3Morpho(address,uint256,uint256)\\\":{\\\"details\\\":\\\"Uses `_maxAvailable` helper function, see BaseAdaptor.sol\\\",\\\"params\\\":{\\\"amountToDeposit\\\":\\\"the amount of `tokenToDeposit` to lend on Morpho.\\\",\\\"maxIterations\\\":\\\"maximum number of iterations for Morphos p2p matching engine\\\",\\\"tokenToDeposit\\\":\\\"the token to lend on Morpho\\\"}},\\\"identifier()\\\":{\\\"details\\\":\\\"Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this Identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult.\\\"},\\\"revokeApproval(address,address)\\\":{\\\"params\\\":{\\\"asset\\\":\\\"the ERC20 asset to revoke `spender`s approval for\\\",\\\"spender\\\":\\\"the address to revoke approval for\\\"}},\\\"withdraw(uint256,address,bytes,bytes)\\\":{\\\"details\\\":\\\"Important to verify that external receivers are allowed if receiver is not Cellar address.\\\",\\\"params\\\":{\\\"adaptorData\\\":\\\"adaptor data containining the abi encoded ERC20 token\\\",\\\"assets\\\":\\\"the amount of assets to withdraw from Morpho\\\",\\\"configurationData\\\":\\\"abi encoded maximum iterations.\\\",\\\"receiver\\\":\\\"the address to send withdrawn assets to\\\"}},\\\"withdrawFromAaveV3Morpho(address,uint256,uint256)\\\":{\\\"params\\\":{\\\"amountToWithdraw\\\":\\\"the amount of `tokenToWithdraw` to withdraw from Morpho\\\",\\\"maxIterations\\\":\\\"maximum number of iterations for Morphos p2p matching engine\\\",\\\"tokenToWithdraw\\\":\\\"the token to withdraw from Morpho.\\\"}}},\\\"title\\\":\\\"Morpho Aave V3 aToken Adaptor\\\",\\\"version\\\":1},\\\"userdoc\\\":{\\\"errors\\\":{\\\"BaseAdaptor__ConstructorHealthFactorTooLow()\\\":[{\\\"notice\\\":\\\"Attempted to set a constructor minimum health factor to a value below `MINIMUM_CONSTRUCTOR_HEALTH_FACTOR()`.\\\"}],\\\"BaseAdaptor__ExternalReceiverBlocked()\\\":[{\\\"notice\\\":\\\"Attempted to specify an external receiver during a Cellar `callOnAdaptor` call.\\\"}],\\\"BaseAdaptor__PricingNotSupported(address)\\\":[{\\\"notice\\\":\\\"Attempted swap used unsupported output asset.\\\"}],\\\"BaseAdaptor__Slippage()\\\":[{\\\"notice\\\":\\\"Attempted swap has bad slippage.\\\"}],\\\"BaseAdaptor__UserDepositsNotAllowed()\\\":[{\\\"notice\\\":\\\"Attempted to deposit to a position where user deposits were not allowed.\\\"}],\\\"BaseAdaptor__UserWithdrawsNotAllowed()\\\":[{\\\"notice\\\":\\\"Attempted to withdraw from a position where user withdraws were not allowed.\\\"}]},\\\"kind\\\":\\\"user\\\",\\\"methods\\\":{\\\"assetOf(bytes)\\\":{\\\"notice\\\":\\\"Returns the positions underlying asset.\\\"},\\\"assetsUsed(bytes)\\\":{\\\"notice\\\":\\\"When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup.\\\"},\\\"balanceOf(bytes)\\\":{\\\"notice\\\":\\\"Returns the cellars p2p balance.\\\"},\\\"claim(uint256,bytes32[])\\\":{\\\"notice\\\":\\\"Allows cellars to claim Morpho Rewards.\\\"},\\\"deposit(uint256,bytes,bytes)\\\":{\\\"notice\\\":\\\"Cellar must approve Morpho to spend its assets, then call supply to lend its assets.\\\"},\\\"depositToAaveV3Morpho(address,uint256,uint256)\\\":{\\\"notice\\\":\\\"Allows strategists to lend assets on Morpho.\\\"},\\\"isDebt()\\\":{\\\"notice\\\":\\\"This adaptor returns collateral, and not debt.\\\"},\\\"morpho()\\\":{\\\"notice\\\":\\\"The Morpho Aave V3 contract on current network.For mainnet use 0x33333aea097c193e66081E930c33020272b33333.\\\"},\\\"morphoRewardsDistributor()\\\":{\\\"notice\\\":\\\"The Morpho Aave V3 rewards handler contract on current network.For mainnet use 0x3B14E5C73e0A56D607A8688098326fD4b4292135.\\\"},\\\"revokeApproval(address,address)\\\":{\\\"notice\\\":\\\"Allows strategists to zero out an approval for a given `asset`.\\\"},\\\"slippage()\\\":{\\\"notice\\\":\\\"Max possible slippage when making a swap router swap.\\\"},\\\"withdraw(uint256,address,bytes,bytes)\\\":{\\\"notice\\\":\\\"Allows cellars to withdraw Morpho.\\\"},\\\"withdrawFromAaveV3Morpho(address,uint256,uint256)\\\":{\\\"notice\\\":\\\"Allows strategists to withdraw assets from Morpho.\\\"},\\\"withdrawableFrom(bytes,bytes)\\\":{\\\"notice\\\":\\\"Returns the p2p balance of the cellar.\\\"}},\\\"notice\\\":\\\"Allows Cellars to interact with Morpho Aave V3 positions.\\\",\\\"version\\\":1}},\\\"settings\\\":{\\\"compilationTarget\\\":{\\\"src/modules/adaptors/Morpho/MorphoAaveV3ATokenP2PAdaptor.sol\\\":\\\"MorphoAaveV3ATokenP2PAdaptor\\\"},\\\"evmVersion\\\":\\\"london\\\",\\\"libraries\\\":{},\\\"metadata\\\":{\\\"bytecodeHash\\\":\\\"ipfs\\\"},\\\"optimizer\\\":{\\\"enabled\\\":true,\\\"runs\\\":200},\\\"remappings\\\":[\\\":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/\\\",\\\":@balancer/=lib/balancer-v2-monorepo/pkg/\\\",\\\":@chainlink/=lib/chainlink/\\\",\\\":@ds-test/=lib/forge-std/lib/ds-test/src/\\\",\\\":@ensdomains/=node_modules/@ensdomains/\\\",\\\":@forge-std/=lib/forge-std/src/\\\",\\\":@openzeppelin/=lib/openzeppelin-contracts/\\\",\\\":@solmate/=lib/solmate/src/\\\",\\\":@uniswap/v3-core/=lib/v3-core/\\\",\\\":@uniswap/v3-periphery/=lib/v3-periphery/\\\",\\\":@uniswapV3C/=lib/v3-core/contracts/\\\",\\\":@uniswapV3P/=lib/v3-periphery/contracts/\\\",\\\":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/\\\",\\\":balancer-v2-monorepo/=lib/balancer-v2-monorepo/\\\",\\\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\\\",\\\":compound-protocol/=lib/compound-protocol/\\\",\\\":ds-test/=lib/forge-std/lib/ds-test/src/\\\",\\\":eth-gas-reporter/=node_modules/eth-gas-reporter/\\\",\\\":forge-std/=lib/forge-std/src/\\\",\\\":hardhat/=node_modules/hardhat/\\\",\\\":openzeppelin-contracts/=lib/openzeppelin-contracts/\\\",\\\":solmate/=lib/solmate/src/\\\",\\\":v3-core.git/=lib/v3-core.git/contracts/\\\",\\\":v3-core/=lib/v3-core/contracts/\\\",\\\":v3-periphery.git/=lib/v3-periphery.git/contracts/\\\",\\\":v3-periphery/=lib/v3-periphery/contracts/\\\"]},\\\"sources\\\":{\\\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\\\":{\\\"keccak256\\\":\\\"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\\\",\\\"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\\\"]},\\\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\\\":{\\\"keccak256\\\":\\\"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\\\",\\\"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\\\"]},\\\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\\\":{\\\"keccak256\\\":\\\"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\\\",\\\"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\\\"]},\\\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\\\":{\\\"keccak256\\\":\\\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\\\",\\\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\\\"]},\\\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\\\":{\\\"keccak256\\\":\\\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\\\",\\\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\\\"]},\\\"lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol\\\":{\\\"keccak256\\\":\\\"0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf\\\",\\\"dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e\\\"]},\\\"lib/openzeppelin-contracts/contracts/utils/Address.sol\\\":{\\\"keccak256\\\":\\\"0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de\\\",\\\"dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V\\\"]},\\\"lib/openzeppelin-contracts/contracts/utils/Context.sol\\\":{\\\"keccak256\\\":\\\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\\\",\\\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\\\"]},\\\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\\\":{\\\"keccak256\\\":\\\"0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929\\\",\\\"dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg\\\"]},\\\"lib/solmate/src/auth/Owned.sol\\\":{\\\"keccak256\\\":\\\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\\\",\\\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\\\"]},\\\"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\\\":{\\\"keccak256\\\":\\\"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\\\",\\\"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\\\":{\\\"keccak256\\\":\\\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\\\",\\\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\\\":{\\\"keccak256\\\":\\\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\\\",\\\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\\\":{\\\"keccak256\\\":\\\"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\\\",\\\"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\\\":{\\\"keccak256\\\":\\\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\\\",\\\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\\\":{\\\"keccak256\\\":\\\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\\\",\\\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\\\":{\\\"keccak256\\\":\\\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\\\",\\\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\\\":{\\\"keccak256\\\":\\\"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\\\",\\\"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\\\"]},\\\"lib/v3-core/contracts/libraries/FullMath.sol\\\":{\\\"keccak256\\\":\\\"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\\\",\\\"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\\\"]},\\\"lib/v3-core/contracts/libraries/TickMath.sol\\\":{\\\"keccak256\\\":\\\"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\\\",\\\"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\\\"]},\\\"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\\\":{\\\"keccak256\\\":\\\"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\\\",\\\"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\\\"]},\\\"src/Registry.sol\\\":{\\\"keccak256\\\":\\\"0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189\\\",\\\"dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK\\\"]},\\\"src/base/Cellar.sol\\\":{\\\"keccak256\\\":\\\"0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058\\\",\\\"dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs\\\"]},\\\"src/base/ERC20.sol\\\":{\\\"keccak256\\\":\\\"0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4\\\",\\\"dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf\\\"]},\\\"src/base/ERC4626.sol\\\":{\\\"keccak256\\\":\\\"0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469\\\",\\\"dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE\\\"]},\\\"src/base/Multicall.sol\\\":{\\\"keccak256\\\":\\\"0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c\\\",\\\"dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K\\\"]},\\\"src/base/SafeTransferLib.sol\\\":{\\\"keccak256\\\":\\\"0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a\\\",\\\"dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3\\\"]},\\\"src/interfaces/IMulticall.sol\\\":{\\\"keccak256\\\":\\\"0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0\\\",\\\"dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5\\\"]},\\\"src/interfaces/external/IChainlinkAggregator.sol\\\":{\\\"keccak256\\\":\\\"0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2\\\",\\\"dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs\\\"]},\\\"src/interfaces/external/IGravity.sol\\\":{\\\"keccak256\\\":\\\"0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51\\\",\\\"dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c\\\"]},\\\"src/interfaces/external/IUniswapV2Router02.sol\\\":{\\\"keccak256\\\":\\\"0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a\\\",\\\"dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo\\\"]},\\\"src/interfaces/external/IUniswapV3Router.sol\\\":{\\\"keccak256\\\":\\\"0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd\\\",\\\"dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK\\\"]},\\\"src/interfaces/external/Morpho/IMorphoV3.sol\\\":{\\\"keccak256\\\":\\\"0xb7d9b09efb93ccd8deacb62a899512f2e8d467682158dc73e936c27aedba3dd9\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://6ed4d09ea863c00bad9b19e1b8bc1ab8568a5b1c972b2ef4c02901f019d58241\\\",\\\"dweb:/ipfs/Qmd4873kMieGZd4K5BuKU6eCPxmczFEQ8BqaGyVbh3YtYE\\\"]},\\\"src/interfaces/external/UniswapV3Pool.sol\\\":{\\\"keccak256\\\":\\\"0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb\\\",\\\"urls\\\":[\\\"bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9\\\",\\\"dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh\\\"]},\\\"src/modules/adaptors/BaseAdaptor.sol\\\":{\\\"keccak256\\\":\\\"0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee\\\",\\\"dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd\\\"]},\\\"src/modules/adaptors/Morpho/MorphoAaveV3ATokenP2PAdaptor.sol\\\":{\\\"keccak256\\\":\\\"0x4d8aab372a599e69c545f5b4cb991530dd18c301f3cfd775858ab37b09332aea\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://41f7b060c85e6ef1e90546a95b942c14d0a325aec1bffe259b9911b0fd534ea5\\\",\\\"dweb:/ipfs/QmXYkhfDHzb6NnuEpnYndRs4osEbDn4bQpNCcUSAqQuLE7\\\"]},\\\"src/modules/adaptors/Morpho/MorphoRewardHandler.sol\\\":{\\\"keccak256\\\":\\\"0xc1461e49dacbb75fe03a4aa08a58bec9639416d57fed6c6595ade2f343520480\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://b2cc897411f203e04233ee37d60e70bed92f310df63beb5adede89009c8cfc54\\\",\\\"dweb:/ipfs/QmSgJ6xXXqRLTcmyDf5uPtd5FqLvEmuK4QQ5LBXuk5dbhp\\\"]},\\\"src/modules/price-router/Extensions/Extension.sol\\\":{\\\"keccak256\\\":\\\"0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1\\\",\\\"dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo\\\"]},\\\"src/modules/price-router/PriceRouter.sol\\\":{\\\"keccak256\\\":\\\"0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66\\\",\\\"dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K\\\"]},\\\"src/modules/swap-router/SwapRouter.sol\\\":{\\\"keccak256\\\":\\\"0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818\\\",\\\"dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr\\\"]},\\\"src/utils/Math.sol\\\":{\\\"keccak256\\\":\\\"0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312\\\",\\\"dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r\\\"]},\\\"src/utils/Uint32Array.sol\\\":{\\\"keccak256\\\":\\\"0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944\\\",\\\"dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3\\\"]}},\\\"version\\\":1}\",\n \"metadata\": {\n \"compiler\": {\n \"version\": \"0.8.16+commit.07a7930e\"\n },\n \"language\": \"Solidity\",\n \"output\": {\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_morpho\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"rewardDistributor\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__ConstructorHealthFactorTooLow\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__ExternalReceiverBlocked\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"asset\",\n \"type\": \"address\"\n }\n ],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__PricingNotSupported\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__Slippage\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__UserDepositsNotAllowed\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__UserWithdrawsNotAllowed\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"assetOf\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"assetsUsed\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20[]\",\n \"name\": \"assets\",\n \"type\": \"address[]\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"claimable\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes32[]\",\n \"name\": \"proof\",\n \"type\": \"bytes32[]\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"claim\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"assets\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"configurationData\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"deposit\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"tokenToDeposit\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountToDeposit\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxIterations\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"depositToAaveV3Morpho\"\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"identifier\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"isDebt\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"morpho\",\n \"outputs\": [\n {\n \"internalType\": \"contract IMorphoV3\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"morphoRewardsDistributor\",\n \"outputs\": [\n {\n \"internalType\": \"contract RewardsDistributor\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"asset\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"revokeApproval\"\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"slippage\",\n \"outputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"\",\n \"type\": \"uint32\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"assets\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"receiver\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"configurationData\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"withdraw\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"tokenToWithdraw\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountToWithdraw\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxIterations\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"withdrawFromAaveV3Morpho\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"withdrawableFrom\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ]\n }\n ],\n \"devdoc\": {\n \"kind\": \"dev\",\n \"methods\": {\n \"deposit(uint256,bytes,bytes)\": {\n \"params\": {\n \"adaptorData\": \"adaptor data containining the abi encoded aToken\",\n \"assets\": \"the amount of assets to lend on Morpho\",\n \"configurationData\": \"abi encoded maxIterations\"\n }\n },\n \"depositToAaveV3Morpho(address,uint256,uint256)\": {\n \"details\": \"Uses `_maxAvailable` helper function, see BaseAdaptor.sol\",\n \"params\": {\n \"amountToDeposit\": \"the amount of `tokenToDeposit` to lend on Morpho.\",\n \"maxIterations\": \"maximum number of iterations for Morphos p2p matching engine\",\n \"tokenToDeposit\": \"the token to lend on Morpho\"\n }\n },\n \"identifier()\": {\n \"details\": \"Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this Identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult.\"\n },\n \"revokeApproval(address,address)\": {\n \"params\": {\n \"asset\": \"the ERC20 asset to revoke `spender`s approval for\",\n \"spender\": \"the address to revoke approval for\"\n }\n },\n \"withdraw(uint256,address,bytes,bytes)\": {\n \"details\": \"Important to verify that external receivers are allowed if receiver is not Cellar address.\",\n \"params\": {\n \"adaptorData\": \"adaptor data containining the abi encoded ERC20 token\",\n \"assets\": \"the amount of assets to withdraw from Morpho\",\n \"configurationData\": \"abi encoded maximum iterations.\",\n \"receiver\": \"the address to send withdrawn assets to\"\n }\n },\n \"withdrawFromAaveV3Morpho(address,uint256,uint256)\": {\n \"params\": {\n \"amountToWithdraw\": \"the amount of `tokenToWithdraw` to withdraw from Morpho\",\n \"maxIterations\": \"maximum number of iterations for Morphos p2p matching engine\",\n \"tokenToWithdraw\": \"the token to withdraw from Morpho.\"\n }\n }\n },\n \"version\": 1\n },\n \"userdoc\": {\n \"kind\": \"user\",\n \"methods\": {\n \"assetOf(bytes)\": {\n \"notice\": \"Returns the positions underlying asset.\"\n },\n \"assetsUsed(bytes)\": {\n \"notice\": \"When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup.\"\n },\n \"balanceOf(bytes)\": {\n \"notice\": \"Returns the cellars p2p balance.\"\n },\n \"claim(uint256,bytes32[])\": {\n \"notice\": \"Allows cellars to claim Morpho Rewards.\"\n },\n \"deposit(uint256,bytes,bytes)\": {\n \"notice\": \"Cellar must approve Morpho to spend its assets, then call supply to lend its assets.\"\n },\n \"depositToAaveV3Morpho(address,uint256,uint256)\": {\n \"notice\": \"Allows strategists to lend assets on Morpho.\"\n },\n \"isDebt()\": {\n \"notice\": \"This adaptor returns collateral, and not debt.\"\n },\n \"morpho()\": {\n \"notice\": \"The Morpho Aave V3 contract on current network.For mainnet use 0x33333aea097c193e66081E930c33020272b33333.\"\n },\n \"morphoRewardsDistributor()\": {\n \"notice\": \"The Morpho Aave V3 rewards handler contract on current network.For mainnet use 0x3B14E5C73e0A56D607A8688098326fD4b4292135.\"\n },\n \"revokeApproval(address,address)\": {\n \"notice\": \"Allows strategists to zero out an approval for a given `asset`.\"\n },\n \"slippage()\": {\n \"notice\": \"Max possible slippage when making a swap router swap.\"\n },\n \"withdraw(uint256,address,bytes,bytes)\": {\n \"notice\": \"Allows cellars to withdraw Morpho.\"\n },\n \"withdrawFromAaveV3Morpho(address,uint256,uint256)\": {\n \"notice\": \"Allows strategists to withdraw assets from Morpho.\"\n },\n \"withdrawableFrom(bytes,bytes)\": {\n \"notice\": \"Returns the p2p balance of the cellar.\"\n }\n },\n \"version\": 1\n }\n },\n \"settings\": {\n \"remappings\": [\n \":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/\",\n \":@balancer/=lib/balancer-v2-monorepo/pkg/\",\n \":@chainlink/=lib/chainlink/\",\n \":@ds-test/=lib/forge-std/lib/ds-test/src/\",\n \":@ensdomains/=node_modules/@ensdomains/\",\n \":@forge-std/=lib/forge-std/src/\",\n \":@openzeppelin/=lib/openzeppelin-contracts/\",\n \":@solmate/=lib/solmate/src/\",\n \":@uniswap/v3-core/=lib/v3-core/\",\n \":@uniswap/v3-periphery/=lib/v3-periphery/\",\n \":@uniswapV3C/=lib/v3-core/contracts/\",\n \":@uniswapV3P/=lib/v3-periphery/contracts/\",\n \":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/\",\n \":balancer-v2-monorepo/=lib/balancer-v2-monorepo/\",\n \":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\n \":compound-protocol/=lib/compound-protocol/\",\n \":ds-test/=lib/forge-std/lib/ds-test/src/\",\n \":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\n \":forge-std/=lib/forge-std/src/\",\n \":hardhat/=node_modules/hardhat/\",\n \":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\n \":solmate/=lib/solmate/src/\",\n \":v3-core.git/=lib/v3-core.git/contracts/\",\n \":v3-core/=lib/v3-core/contracts/\",\n \":v3-periphery.git/=lib/v3-periphery.git/contracts/\",\n \":v3-periphery/=lib/v3-periphery/contracts/\"\n ],\n \"optimizer\": {\n \"enabled\": true,\n \"runs\": 200\n },\n \"metadata\": {\n \"bytecodeHash\": \"ipfs\"\n },\n \"compilationTarget\": {\n \"src/modules/adaptors/Morpho/MorphoAaveV3ATokenP2PAdaptor.sol\": \"MorphoAaveV3ATokenP2PAdaptor\"\n },\n \"libraries\": {}\n },\n \"sources\": {\n \"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\": {\n \"keccak256\": \"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\",\n \"urls\": [\n \"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\",\n \"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\": {\n \"keccak256\": \"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\",\n \"urls\": [\n \"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\",\n \"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\": {\n \"keccak256\": \"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\",\n \"urls\": [\n \"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\",\n \"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\": {\n \"keccak256\": \"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\n \"urls\": [\n \"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\n \"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\": {\n \"keccak256\": \"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\n \"urls\": [\n \"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\n \"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol\": {\n \"keccak256\": \"0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028\",\n \"urls\": [\n \"bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf\",\n \"dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/utils/Address.sol\": {\n \"keccak256\": \"0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700\",\n \"urls\": [\n \"bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de\",\n \"dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/utils/Context.sol\": {\n \"keccak256\": \"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\n \"urls\": [\n \"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\n \"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\": {\n \"keccak256\": \"0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb\",\n \"urls\": [\n \"bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929\",\n \"dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/solmate/src/auth/Owned.sol\": {\n \"keccak256\": \"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\n \"urls\": [\n \"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\n \"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\": {\n \"keccak256\": \"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\",\n \"urls\": [\n \"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\",\n \"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\": {\n \"keccak256\": \"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\n \"urls\": [\n \"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\n \"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\": {\n \"keccak256\": \"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\n \"urls\": [\n \"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\n \"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\": {\n \"keccak256\": \"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\",\n \"urls\": [\n \"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\",\n \"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\": {\n \"keccak256\": \"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\n \"urls\": [\n \"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\n \"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\": {\n \"keccak256\": \"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\n \"urls\": [\n \"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\n \"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\": {\n \"keccak256\": \"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\n \"urls\": [\n \"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\n \"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\": {\n \"keccak256\": \"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\",\n \"urls\": [\n \"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\",\n \"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/libraries/FullMath.sol\": {\n \"keccak256\": \"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\",\n \"urls\": [\n \"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\",\n \"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/v3-core/contracts/libraries/TickMath.sol\": {\n \"keccak256\": \"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\",\n \"urls\": [\n \"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\",\n \"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\": {\n \"keccak256\": \"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\",\n \"urls\": [\n \"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\",\n \"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/Registry.sol\": {\n \"keccak256\": \"0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47\",\n \"urls\": [\n \"bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189\",\n \"dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/base/Cellar.sol\": {\n \"keccak256\": \"0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47\",\n \"urls\": [\n \"bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058\",\n \"dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/base/ERC20.sol\": {\n \"keccak256\": \"0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02\",\n \"urls\": [\n \"bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4\",\n \"dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"src/base/ERC4626.sol\": {\n \"keccak256\": \"0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7\",\n \"urls\": [\n \"bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469\",\n \"dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"src/base/Multicall.sol\": {\n \"keccak256\": \"0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9\",\n \"urls\": [\n \"bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c\",\n \"dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/base/SafeTransferLib.sol\": {\n \"keccak256\": \"0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324\",\n \"urls\": [\n \"bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a\",\n \"dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"src/interfaces/IMulticall.sol\": {\n \"keccak256\": \"0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e\",\n \"urls\": [\n \"bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0\",\n \"dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/interfaces/external/IChainlinkAggregator.sol\": {\n \"keccak256\": \"0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d\",\n \"urls\": [\n \"bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2\",\n \"dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/IGravity.sol\": {\n \"keccak256\": \"0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11\",\n \"urls\": [\n \"bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51\",\n \"dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/IUniswapV2Router02.sol\": {\n \"keccak256\": \"0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f\",\n \"urls\": [\n \"bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a\",\n \"dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/IUniswapV3Router.sol\": {\n \"keccak256\": \"0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355\",\n \"urls\": [\n \"bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd\",\n \"dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/interfaces/external/Morpho/IMorphoV3.sol\": {\n \"keccak256\": \"0xb7d9b09efb93ccd8deacb62a899512f2e8d467682158dc73e936c27aedba3dd9\",\n \"urls\": [\n \"bzz-raw://6ed4d09ea863c00bad9b19e1b8bc1ab8568a5b1c972b2ef4c02901f019d58241\",\n \"dweb:/ipfs/Qmd4873kMieGZd4K5BuKU6eCPxmczFEQ8BqaGyVbh3YtYE\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/UniswapV3Pool.sol\": {\n \"keccak256\": \"0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb\",\n \"urls\": [\n \"bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9\",\n \"dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh\"\n ],\n \"license\": null\n },\n \"src/modules/adaptors/BaseAdaptor.sol\": {\n \"keccak256\": \"0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c\",\n \"urls\": [\n \"bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee\",\n \"dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/adaptors/Morpho/MorphoAaveV3ATokenP2PAdaptor.sol\": {\n \"keccak256\": \"0x4d8aab372a599e69c545f5b4cb991530dd18c301f3cfd775858ab37b09332aea\",\n \"urls\": [\n \"bzz-raw://41f7b060c85e6ef1e90546a95b942c14d0a325aec1bffe259b9911b0fd534ea5\",\n \"dweb:/ipfs/QmXYkhfDHzb6NnuEpnYndRs4osEbDn4bQpNCcUSAqQuLE7\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/adaptors/Morpho/MorphoRewardHandler.sol\": {\n \"keccak256\": \"0xc1461e49dacbb75fe03a4aa08a58bec9639416d57fed6c6595ade2f343520480\",\n \"urls\": [\n \"bzz-raw://b2cc897411f203e04233ee37d60e70bed92f310df63beb5adede89009c8cfc54\",\n \"dweb:/ipfs/QmSgJ6xXXqRLTcmyDf5uPtd5FqLvEmuK4QQ5LBXuk5dbhp\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/price-router/Extensions/Extension.sol\": {\n \"keccak256\": \"0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d\",\n \"urls\": [\n \"bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1\",\n \"dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/price-router/PriceRouter.sol\": {\n \"keccak256\": \"0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9\",\n \"urls\": [\n \"bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66\",\n \"dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/swap-router/SwapRouter.sol\": {\n \"keccak256\": \"0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80\",\n \"urls\": [\n \"bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818\",\n \"dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/utils/Math.sol\": {\n \"keccak256\": \"0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f\",\n \"urls\": [\n \"bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312\",\n \"dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/utils/Uint32Array.sol\": {\n \"keccak256\": \"0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9\",\n \"urls\": [\n \"bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944\",\n \"dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3\"\n ],\n \"license\": \"Apache-2.0\"\n }\n },\n \"version\": 1\n },\n \"ast\": {\n \"absolutePath\": \"src/modules/adaptors/Morpho/MorphoAaveV3ATokenP2PAdaptor.sol\",\n \"id\": 66277,\n \"exportedSymbols\": {\n \"BaseAdaptor\": [\n 61644\n ],\n \"ERC20\": [\n 45747\n ],\n \"IMorphoV3\": [\n 53563\n ],\n \"MorphoAaveV3ATokenP2PAdaptor\": [\n 66276\n ],\n \"MorphoRewardHandler\": [\n 66696\n ],\n \"SafeTransferLib\": [\n 46498\n ]\n },\n \"nodeType\": \"SourceUnit\",\n \"src\": \"39:7055:200\",\n \"nodes\": [\n {\n \"id\": 65892,\n \"nodeType\": \"PragmaDirective\",\n \"src\": \"39:23:200\",\n \"nodes\": [],\n \"literals\": [\n \"solidity\",\n \"0.8\",\n \".16\"\n ]\n },\n {\n \"id\": 65896,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"64:91:200\",\n \"nodes\": [],\n \"absolutePath\": \"src/modules/adaptors/BaseAdaptor.sol\",\n \"file\": \"src/modules/adaptors/BaseAdaptor.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 66277,\n \"sourceUnit\": 61645,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 65893,\n \"name\": \"BaseAdaptor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61644,\n \"src\": \"73:11:200\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 65894,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 45747,\n \"src\": \"86:5:200\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 65895,\n \"name\": \"SafeTransferLib\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 46498,\n \"src\": \"93:15:200\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 65898,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"156:73:200\",\n \"nodes\": [],\n \"absolutePath\": \"src/interfaces/external/Morpho/IMorphoV3.sol\",\n \"file\": \"src/interfaces/external/Morpho/IMorphoV3.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 66277,\n \"sourceUnit\": 53564,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 65897,\n \"name\": \"IMorphoV3\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53563,\n \"src\": \"165:9:200\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 65900,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"230:90:200\",\n \"nodes\": [],\n \"absolutePath\": \"src/modules/adaptors/Morpho/MorphoRewardHandler.sol\",\n \"file\": \"src/modules/adaptors/Morpho/MorphoRewardHandler.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 66277,\n \"sourceUnit\": 66697,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 65899,\n \"name\": \"MorphoRewardHandler\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66696,\n \"src\": \"239:19:200\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 66276,\n \"nodeType\": \"ContractDefinition\",\n \"src\": \"464:6629:200\",\n \"nodes\": [\n {\n \"id\": 65909,\n \"nodeType\": \"UsingForDirective\",\n \"src\": \"544:32:200\",\n \"nodes\": [],\n \"global\": false,\n \"libraryName\": {\n \"id\": 65906,\n \"name\": \"SafeTransferLib\",\n \"nameLocations\": [\n \"550:15:200\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 46498,\n \"src\": \"550:15:200\"\n },\n \"typeName\": {\n \"id\": 65908,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 65907,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"570:5:200\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"570:5:200\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"570:5:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n }\n },\n {\n \"id\": 65912,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"1144:45:200\",\n \"nodes\": [],\n \"constant\": true,\n \"mutability\": \"constant\",\n \"name\": \"MAX_ITERATIONS\",\n \"nameLocation\": \"1170:14:200\",\n \"scope\": 66276,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65910,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1144:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"value\": {\n \"hexValue\": \"3130\",\n \"id\": 65911,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"1187:2:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_10_by_1\",\n \"typeString\": \"int_const 10\"\n },\n \"value\": \"10\"\n },\n \"visibility\": \"internal\"\n },\n {\n \"id\": 65915,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"1195:48:200\",\n \"nodes\": [],\n \"constant\": true,\n \"mutability\": \"constant\",\n \"name\": \"OPTIMAL_ITERATIONS\",\n \"nameLocation\": \"1221:18:200\",\n \"scope\": 66276,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65913,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1195:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"value\": {\n \"hexValue\": \"34\",\n \"id\": 65914,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"1242:1:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_4_by_1\",\n \"typeString\": \"int_const 4\"\n },\n \"value\": \"4\"\n },\n \"visibility\": \"internal\"\n },\n {\n \"id\": 65919,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"1404:33:200\",\n \"nodes\": [],\n \"constant\": false,\n \"documentation\": {\n \"id\": 65916,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"1250:149:200\",\n \"text\": \" @notice The Morpho Aave V3 contract on current network.\\n @notice For mainnet use 0x33333aea097c193e66081E930c33020272b33333.\"\n },\n \"functionSelector\": \"d8fbc833\",\n \"mutability\": \"immutable\",\n \"name\": \"morpho\",\n \"nameLocation\": \"1431:6:200\",\n \"scope\": 66276,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n },\n \"typeName\": {\n \"id\": 65918,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 65917,\n \"name\": \"IMorphoV3\",\n \"nameLocations\": [\n \"1404:9:200\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 53563,\n \"src\": \"1404:9:200\"\n },\n \"referencedDeclaration\": 53563,\n \"src\": \"1404:9:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"visibility\": \"public\"\n },\n {\n \"id\": 65936,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"1444:139:200\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65935,\n \"nodeType\": \"Block\",\n \"src\": \"1539:44:200\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"id\": 65933,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 65929,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65919,\n \"src\": \"1549:6:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"id\": 65931,\n \"name\": \"_morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65921,\n \"src\": \"1568:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 65930,\n \"name\": \"IMorphoV3\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53563,\n \"src\": \"1558:9:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IMorphoV3_$53563_$\",\n \"typeString\": \"type(contract IMorphoV3)\"\n }\n },\n \"id\": 65932,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"1558:18:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"src\": \"1549:27:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"id\": 65934,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"1549:27:200\"\n }\n ]\n },\n \"implemented\": true,\n \"kind\": \"constructor\",\n \"modifiers\": [\n {\n \"arguments\": [\n {\n \"id\": 65926,\n \"name\": \"rewardDistributor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65923,\n \"src\": \"1520:17:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"id\": 65927,\n \"kind\": \"baseConstructorSpecifier\",\n \"modifierName\": {\n \"id\": 65925,\n \"name\": \"MorphoRewardHandler\",\n \"nameLocations\": [\n \"1500:19:200\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 66696,\n \"src\": \"1500:19:200\"\n },\n \"nodeType\": \"ModifierInvocation\",\n \"src\": \"1500:38:200\"\n }\n ],\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"parameters\": {\n \"id\": 65924,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65921,\n \"mutability\": \"mutable\",\n \"name\": \"_morpho\",\n \"nameLocation\": \"1464:7:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65936,\n \"src\": \"1456:15:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 65920,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1456:7:200\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65923,\n \"mutability\": \"mutable\",\n \"name\": \"rewardDistributor\",\n \"nameLocation\": \"1481:17:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65936,\n \"src\": \"1473:25:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 65922,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1473:7:200\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"1455:44:200\"\n },\n \"returnParameters\": {\n \"id\": 65928,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"1539:0:200\"\n },\n \"scope\": 66276,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 65951,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"2002:149:200\",\n \"nodes\": [],\n \"body\": {\n \"id\": 65950,\n \"nodeType\": \"Block\",\n \"src\": \"2063:88:200\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"hexValue\": \"4d6f7270686f20416176652056332061546f6b656e205032502041646170746f72205620312e32\",\n \"id\": 65946,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"string\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"2101:41:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_stringliteral_bb2002321549ba02fb73271b6d22696c0f2450a0966102d0034f5d025bf91173\",\n \"typeString\": \"literal_string \\\"Morpho Aave V3 aToken P2P Adaptor V 1.2\\\"\"\n },\n \"value\": \"Morpho Aave V3 aToken P2P Adaptor V 1.2\"\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_stringliteral_bb2002321549ba02fb73271b6d22696c0f2450a0966102d0034f5d025bf91173\",\n \"typeString\": \"literal_string \\\"Morpho Aave V3 aToken P2P Adaptor V 1.2\\\"\"\n }\n ],\n \"expression\": {\n \"id\": 65944,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"2090:3:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 65945,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"2094:6:200\",\n \"memberName\": \"encode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"2090:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$\",\n \"typeString\": \"function () pure returns (bytes memory)\"\n }\n },\n \"id\": 65947,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"2090:53:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n ],\n \"id\": 65943,\n \"name\": \"keccak256\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -8,\n \"src\": \"2080:9:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$\",\n \"typeString\": \"function (bytes memory) pure returns (bytes32)\"\n }\n },\n \"id\": 65948,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"2080:64:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"functionReturnParameters\": 65942,\n \"id\": 65949,\n \"nodeType\": \"Return\",\n \"src\": \"2073:71:200\"\n }\n ]\n },\n \"baseFunctions\": [\n 61410\n ],\n \"documentation\": {\n \"id\": 65937,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"1701:296:200\",\n \"text\": \" @dev Identifier unique to this adaptor for a shared registry.\\n Normally the identifier would just be the address of this contract, but this\\n Identifier is needed during Cellar Delegate Call Operations, so getting the address\\n of the adaptor is more difficult.\"\n },\n \"functionSelector\": \"7998a1c4\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"identifier\",\n \"nameLocation\": \"2011:10:200\",\n \"overrides\": {\n \"id\": 65939,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"2036:8:200\"\n },\n \"parameters\": {\n \"id\": 65938,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"2021:2:200\"\n },\n \"returnParameters\": {\n \"id\": 65942,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65941,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 65951,\n \"src\": \"2054:7:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n \"typeName\": {\n \"id\": 65940,\n \"name\": \"bytes32\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2054:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"2053:9:200\"\n },\n \"scope\": 66276,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 66028,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"2586:620:200\",\n \"nodes\": [],\n \"body\": {\n \"id\": 66027,\n \"nodeType\": \"Block\",\n \"src\": \"2693:513:200\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 65964\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65964,\n \"mutability\": \"mutable\",\n \"name\": \"underlying\",\n \"nameLocation\": \"2746:10:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66027,\n \"src\": \"2740:16:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 65963,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 65962,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"2740:5:200\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"2740:5:200\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"2740:5:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65971,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 65967,\n \"name\": \"adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65956,\n \"src\": \"2770:11:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 65968,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 45747,\n \"src\": \"2784:5:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n }\n ],\n \"id\": 65969,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"2783:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n ],\n \"expression\": {\n \"id\": 65965,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"2759:3:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 65966,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"2763:6:200\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"2759:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 65970,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"2759:32:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"2740:51:200\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 65977,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65919,\n \"src\": \"2832:6:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n ],\n \"id\": 65976,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"2824:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 65975,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2824:7:200\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 65978,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"2824:15:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 65979,\n \"name\": \"assets\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65954,\n \"src\": \"2841:6:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 65972,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65964,\n \"src\": \"2801:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 65974,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"2812:11:200\",\n \"memberName\": \"safeApprove\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 46497,\n \"src\": \"2801:22:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"function (contract ERC20,address,uint256)\"\n }\n },\n \"id\": 65980,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"2801:47:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 65981,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"2801:47:200\"\n },\n {\n \"assignments\": [\n 65983\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 65983,\n \"mutability\": \"mutable\",\n \"name\": \"iterations\",\n \"nameLocation\": \"2867:10:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66027,\n \"src\": \"2859:18:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65982,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2859:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 65991,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 65986,\n \"name\": \"configurationData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65958,\n \"src\": \"2891:17:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 65988,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"2911:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_uint256_$\",\n \"typeString\": \"type(uint256)\"\n },\n \"typeName\": {\n \"id\": 65987,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2911:7:200\",\n \"typeDescriptions\": {}\n }\n }\n ],\n \"id\": 65989,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"2910:9:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_uint256_$\",\n \"typeString\": \"type(uint256)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_uint256_$\",\n \"typeString\": \"type(uint256)\"\n }\n ],\n \"expression\": {\n \"id\": 65984,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"2880:3:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 65985,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"2884:6:200\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"2880:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 65990,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"2880:40:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"2859:61:200\"\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"id\": 65998,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 65994,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 65992,\n \"name\": \"iterations\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65983,\n \"src\": \"2934:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"==\",\n \"rightExpression\": {\n \"hexValue\": \"30\",\n \"id\": 65993,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"2948:1:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n },\n \"value\": \"0\"\n },\n \"src\": \"2934:15:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"||\",\n \"rightExpression\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 65997,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 65995,\n \"name\": \"iterations\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65983,\n \"src\": \"2953:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \">\",\n \"rightExpression\": {\n \"id\": 65996,\n \"name\": \"MAX_ITERATIONS\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65912,\n \"src\": \"2966:14:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"2953:27:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"src\": \"2934:46:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 66003,\n \"nodeType\": \"IfStatement\",\n \"src\": \"2930:83:200\",\n \"trueBody\": {\n \"expression\": {\n \"id\": 66001,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 65999,\n \"name\": \"iterations\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65983,\n \"src\": \"2982:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"id\": 66000,\n \"name\": \"OPTIMAL_ITERATIONS\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65915,\n \"src\": \"2995:18:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"2982:31:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 66002,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"2982:31:200\"\n }\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 66009,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65964,\n \"src\": \"3045:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n ],\n \"id\": 66008,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"3037:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66007,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3037:7:200\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 66010,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3037:19:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 66011,\n \"name\": \"assets\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65954,\n \"src\": \"3058:6:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 66014,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"3074:4:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenP2PAdaptor_$66276\",\n \"typeString\": \"contract MorphoAaveV3ATokenP2PAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenP2PAdaptor_$66276\",\n \"typeString\": \"contract MorphoAaveV3ATokenP2PAdaptor\"\n }\n ],\n \"id\": 66013,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"3066:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66012,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3066:7:200\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 66015,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3066:13:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 66016,\n \"name\": \"iterations\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65983,\n \"src\": \"3081:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 66004,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65919,\n \"src\": \"3023:6:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"id\": 66006,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"3030:6:200\",\n \"memberName\": \"supply\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53523,\n \"src\": \"3023:13:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$\",\n \"typeString\": \"function (address,uint256,address,uint256) external returns (uint256)\"\n }\n },\n \"id\": 66017,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3023:69:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 66018,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"3023:69:200\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 66020,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65964,\n \"src\": \"3171:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 66023,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65919,\n \"src\": \"3191:6:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n ],\n \"id\": 66022,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"3183:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66021,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3183:7:200\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 66024,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3183:15:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 66019,\n \"name\": \"_revokeExternalApproval\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61585,\n \"src\": \"3147:23:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$returns$__$\",\n \"typeString\": \"function (contract ERC20,address)\"\n }\n },\n \"id\": 66025,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3147:52:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 66026,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"3147:52:200\"\n }\n ]\n },\n \"baseFunctions\": [\n 61454\n ],\n \"documentation\": {\n \"id\": 65952,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"2277:304:200\",\n \"text\": \" @notice Cellar must approve Morpho to spend its assets, then call supply to lend its assets.\\n @param assets the amount of assets to lend on Morpho\\n @param adaptorData adaptor data containining the abi encoded aToken\\n @param configurationData abi encoded maxIterations\"\n },\n \"functionSelector\": \"69445c31\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"deposit\",\n \"nameLocation\": \"2595:7:200\",\n \"overrides\": {\n \"id\": 65960,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"2684:8:200\"\n },\n \"parameters\": {\n \"id\": 65959,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 65954,\n \"mutability\": \"mutable\",\n \"name\": \"assets\",\n \"nameLocation\": \"2611:6:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66028,\n \"src\": \"2603:14:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 65953,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2603:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65956,\n \"mutability\": \"mutable\",\n \"name\": \"adaptorData\",\n \"nameLocation\": \"2632:11:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66028,\n \"src\": \"2619:24:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 65955,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2619:5:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 65958,\n \"mutability\": \"mutable\",\n \"name\": \"configurationData\",\n \"nameLocation\": \"2658:17:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66028,\n \"src\": \"2645:30:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 65957,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2645:5:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"2602:74:200\"\n },\n \"returnParameters\": {\n \"id\": 65961,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"2693:0:200\"\n },\n \"scope\": 66276,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 66079,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"3652:513:200\",\n \"nodes\": [],\n \"body\": {\n \"id\": 66078,\n \"nodeType\": \"Block\",\n \"src\": \"3816:349:200\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 66042,\n \"name\": \"receiver\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66033,\n \"src\": \"3889:8:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 66041,\n \"name\": \"_externalReceiverCheck\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61611,\n \"src\": \"3866:22:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_view$_t_address_$returns$__$\",\n \"typeString\": \"function (address) view\"\n }\n },\n \"id\": 66043,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3866:32:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 66044,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"3866:32:200\"\n },\n {\n \"assignments\": [\n 66046\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 66046,\n \"mutability\": \"mutable\",\n \"name\": \"underlying\",\n \"nameLocation\": \"3917:10:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66078,\n \"src\": \"3909:18:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 66045,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3909:7:200\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 66054,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 66049,\n \"name\": \"adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66035,\n \"src\": \"3941:11:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 66051,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"3955:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66050,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3955:7:200\",\n \"typeDescriptions\": {}\n }\n }\n ],\n \"id\": 66052,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"3954:9:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n ],\n \"expression\": {\n \"id\": 66047,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"3930:3:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 66048,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"3934:6:200\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"3930:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 66053,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3930:34:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address_payable\",\n \"typeString\": \"address payable\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"3909:55:200\"\n },\n {\n \"assignments\": [\n 66056\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 66056,\n \"mutability\": \"mutable\",\n \"name\": \"iterations\",\n \"nameLocation\": \"3982:10:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66078,\n \"src\": \"3974:18:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 66055,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3974:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 66064,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 66059,\n \"name\": \"configurationData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66037,\n \"src\": \"4006:17:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 66061,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"4026:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_uint256_$\",\n \"typeString\": \"type(uint256)\"\n },\n \"typeName\": {\n \"id\": 66060,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4026:7:200\",\n \"typeDescriptions\": {}\n }\n }\n ],\n \"id\": 66062,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"4025:9:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_uint256_$\",\n \"typeString\": \"type(uint256)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_uint256_$\",\n \"typeString\": \"type(uint256)\"\n }\n ],\n \"expression\": {\n \"id\": 66057,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"3995:3:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 66058,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"3999:6:200\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"3995:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 66063,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3995:40:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"3974:61:200\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 66068,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66046,\n \"src\": \"4102:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 66069,\n \"name\": \"assets\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66031,\n \"src\": \"4114:6:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 66072,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"4130:4:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenP2PAdaptor_$66276\",\n \"typeString\": \"contract MorphoAaveV3ATokenP2PAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenP2PAdaptor_$66276\",\n \"typeString\": \"contract MorphoAaveV3ATokenP2PAdaptor\"\n }\n ],\n \"id\": 66071,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"4122:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66070,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4122:7:200\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 66073,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4122:13:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 66074,\n \"name\": \"receiver\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66033,\n \"src\": \"4137:8:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 66075,\n \"name\": \"iterations\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66056,\n \"src\": \"4147:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 66065,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65919,\n \"src\": \"4086:6:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"id\": 66067,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"4093:8:200\",\n \"memberName\": \"withdraw\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53549,\n \"src\": \"4086:15:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$\",\n \"typeString\": \"function (address,uint256,address,address,uint256) external returns (uint256)\"\n }\n },\n \"id\": 66076,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4086:72:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 66077,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"4086:72:200\"\n }\n ]\n },\n \"baseFunctions\": [\n 61466\n ],\n \"documentation\": {\n \"id\": 66029,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"3212:435:200\",\n \"text\": \"@notice Allows cellars to withdraw Morpho.\\n @dev Important to verify that external receivers are allowed if receiver is not Cellar address.\\n @param assets the amount of assets to withdraw from Morpho\\n @param receiver the address to send withdrawn assets to\\n @param adaptorData adaptor data containining the abi encoded ERC20 token\\n @param configurationData abi encoded maximum iterations.\"\n },\n \"functionSelector\": \"c9111bd7\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"withdraw\",\n \"nameLocation\": \"3661:8:200\",\n \"overrides\": {\n \"id\": 66039,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"3807:8:200\"\n },\n \"parameters\": {\n \"id\": 66038,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66031,\n \"mutability\": \"mutable\",\n \"name\": \"assets\",\n \"nameLocation\": \"3687:6:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66079,\n \"src\": \"3679:14:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 66030,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3679:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 66033,\n \"mutability\": \"mutable\",\n \"name\": \"receiver\",\n \"nameLocation\": \"3711:8:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66079,\n \"src\": \"3703:16:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 66032,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3703:7:200\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 66035,\n \"mutability\": \"mutable\",\n \"name\": \"adaptorData\",\n \"nameLocation\": \"3742:11:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66079,\n \"src\": \"3729:24:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 66034,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3729:5:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 66037,\n \"mutability\": \"mutable\",\n \"name\": \"configurationData\",\n \"nameLocation\": \"3776:17:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66079,\n \"src\": \"3763:30:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 66036,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3763:5:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"3669:130:200\"\n },\n \"returnParameters\": {\n \"id\": 66040,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"3816:0:200\"\n },\n \"scope\": 66276,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 66108,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"4241:238:200\",\n \"nodes\": [],\n \"body\": {\n \"id\": 66107,\n \"nodeType\": \"Block\",\n \"src\": \"4346:133:200\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 66091\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 66091,\n \"mutability\": \"mutable\",\n \"name\": \"underlying\",\n \"nameLocation\": \"4364:10:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66107,\n \"src\": \"4356:18:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 66090,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4356:7:200\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 66099,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 66094,\n \"name\": \"adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66082,\n \"src\": \"4388:11:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 66096,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"4402:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66095,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4402:7:200\",\n \"typeDescriptions\": {}\n }\n }\n ],\n \"id\": 66097,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"4401:9:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n ],\n \"expression\": {\n \"id\": 66092,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"4377:3:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 66093,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"4381:6:200\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"4377:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 66098,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4377:34:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address_payable\",\n \"typeString\": \"address payable\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"4356:55:200\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 66102,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66091,\n \"src\": \"4449:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"expression\": {\n \"id\": 66103,\n \"name\": \"msg\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -15,\n \"src\": \"4461:3:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_message\",\n \"typeString\": \"msg\"\n }\n },\n \"id\": 66104,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"4465:6:200\",\n \"memberName\": \"sender\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"4461:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 66100,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65919,\n \"src\": \"4428:6:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"id\": 66101,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"4435:13:200\",\n \"memberName\": \"supplyBalance\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53439,\n \"src\": \"4428:20:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address,address) view external returns (uint256)\"\n }\n },\n \"id\": 66105,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4428:44:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"functionReturnParameters\": 66089,\n \"id\": 66106,\n \"nodeType\": \"Return\",\n \"src\": \"4421:51:200\"\n }\n ]\n },\n \"baseFunctions\": [\n 61484\n ],\n \"documentation\": {\n \"id\": 66080,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"4171:65:200\",\n \"text\": \" @notice Returns the p2p balance of the cellar.\"\n },\n \"functionSelector\": \"fa50e5d2\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"withdrawableFrom\",\n \"nameLocation\": \"4250:16:200\",\n \"overrides\": {\n \"id\": 66086,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"4319:8:200\"\n },\n \"parameters\": {\n \"id\": 66085,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66082,\n \"mutability\": \"mutable\",\n \"name\": \"adaptorData\",\n \"nameLocation\": \"4280:11:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66108,\n \"src\": \"4267:24:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 66081,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4267:5:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 66084,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66108,\n \"src\": \"4293:12:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 66083,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4293:5:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"4266:40:200\"\n },\n \"returnParameters\": {\n \"id\": 66089,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66088,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66108,\n \"src\": \"4337:7:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 66087,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4337:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"4336:9:200\"\n },\n \"scope\": 66276,\n \"stateMutability\": \"view\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 66135,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"4549:217:200\",\n \"nodes\": [],\n \"body\": {\n \"id\": 66134,\n \"nodeType\": \"Block\",\n \"src\": \"4633:133:200\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 66118\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 66118,\n \"mutability\": \"mutable\",\n \"name\": \"underlying\",\n \"nameLocation\": \"4651:10:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66134,\n \"src\": \"4643:18:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 66117,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4643:7:200\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 66126,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 66121,\n \"name\": \"adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66111,\n \"src\": \"4675:11:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 66123,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"4689:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66122,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4689:7:200\",\n \"typeDescriptions\": {}\n }\n }\n ],\n \"id\": 66124,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"4688:9:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n ],\n \"expression\": {\n \"id\": 66119,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"4664:3:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 66120,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"4668:6:200\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"4664:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 66125,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4664:34:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address_payable\",\n \"typeString\": \"address payable\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"4643:55:200\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 66129,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66118,\n \"src\": \"4736:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"expression\": {\n \"id\": 66130,\n \"name\": \"msg\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -15,\n \"src\": \"4748:3:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_message\",\n \"typeString\": \"msg\"\n }\n },\n \"id\": 66131,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"4752:6:200\",\n \"memberName\": \"sender\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"4748:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 66127,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65919,\n \"src\": \"4715:6:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"id\": 66128,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"4722:13:200\",\n \"memberName\": \"supplyBalance\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53439,\n \"src\": \"4715:20:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address,address) view external returns (uint256)\"\n }\n },\n \"id\": 66132,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4715:44:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"functionReturnParameters\": 66116,\n \"id\": 66133,\n \"nodeType\": \"Return\",\n \"src\": \"4708:51:200\"\n }\n ]\n },\n \"baseFunctions\": [\n 61474\n ],\n \"documentation\": {\n \"id\": 66109,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"4485:59:200\",\n \"text\": \" @notice Returns the cellars p2p balance.\"\n },\n \"functionSelector\": \"78415365\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"balanceOf\",\n \"nameLocation\": \"4558:9:200\",\n \"overrides\": {\n \"id\": 66113,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"4606:8:200\"\n },\n \"parameters\": {\n \"id\": 66112,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66111,\n \"mutability\": \"mutable\",\n \"name\": \"adaptorData\",\n \"nameLocation\": \"4581:11:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66135,\n \"src\": \"4568:24:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 66110,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4568:5:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"4567:26:200\"\n },\n \"returnParameters\": {\n \"id\": 66116,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66115,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66135,\n \"src\": \"4624:7:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 66114,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4624:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"4623:9:200\"\n },\n \"scope\": 66276,\n \"stateMutability\": \"view\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 66158,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"4843:175:200\",\n \"nodes\": [],\n \"body\": {\n \"id\": 66157,\n \"nodeType\": \"Block\",\n \"src\": \"4923:95:200\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 66147\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 66147,\n \"mutability\": \"mutable\",\n \"name\": \"underlying\",\n \"nameLocation\": \"4939:10:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66157,\n \"src\": \"4933:16:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 66146,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 66145,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"4933:5:200\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"4933:5:200\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"4933:5:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 66154,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 66150,\n \"name\": \"adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66138,\n \"src\": \"4963:11:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 66151,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 45747,\n \"src\": \"4977:5:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n }\n ],\n \"id\": 66152,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"4976:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n ],\n \"expression\": {\n \"id\": 66148,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"4952:3:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 66149,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"4956:6:200\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"4952:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 66153,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4952:32:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"4933:51:200\"\n },\n {\n \"expression\": {\n \"id\": 66155,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66147,\n \"src\": \"5001:10:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"functionReturnParameters\": 66144,\n \"id\": 66156,\n \"nodeType\": \"Return\",\n \"src\": \"4994:17:200\"\n }\n ]\n },\n \"baseFunctions\": [\n 61493\n ],\n \"documentation\": {\n \"id\": 66136,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"4772:66:200\",\n \"text\": \" @notice Returns the positions underlying asset.\"\n },\n \"functionSelector\": \"e170a9bf\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"assetOf\",\n \"nameLocation\": \"4852:7:200\",\n \"overrides\": {\n \"id\": 66140,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"4898:8:200\"\n },\n \"parameters\": {\n \"id\": 66139,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66138,\n \"mutability\": \"mutable\",\n \"name\": \"adaptorData\",\n \"nameLocation\": \"4873:11:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66158,\n \"src\": \"4860:24:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 66137,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4860:5:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"4859:26:200\"\n },\n \"returnParameters\": {\n \"id\": 66144,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66143,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66158,\n \"src\": \"4916:5:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 66142,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 66141,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"4916:5:200\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"4916:5:200\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"4916:5:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"4915:7:200\"\n },\n \"scope\": 66276,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 66168,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"5102:83:200\",\n \"nodes\": [],\n \"body\": {\n \"id\": 66167,\n \"nodeType\": \"Block\",\n \"src\": \"5156:29:200\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"hexValue\": \"66616c7365\",\n \"id\": 66165,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"bool\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"5173:5:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"value\": \"false\"\n },\n \"functionReturnParameters\": 66164,\n \"id\": 66166,\n \"nodeType\": \"Return\",\n \"src\": \"5166:12:200\"\n }\n ]\n },\n \"baseFunctions\": [\n 61527\n ],\n \"documentation\": {\n \"id\": 66159,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"5024:73:200\",\n \"text\": \" @notice This adaptor returns collateral, and not debt.\"\n },\n \"functionSelector\": \"89353a09\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"isDebt\",\n \"nameLocation\": \"5111:6:200\",\n \"overrides\": {\n \"id\": 66161,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"5132:8:200\"\n },\n \"parameters\": {\n \"id\": 66160,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"5117:2:200\"\n },\n \"returnParameters\": {\n \"id\": 66164,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66163,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66168,\n \"src\": \"5150:4:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"typeName\": {\n \"id\": 66162,\n \"name\": \"bool\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5150:4:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"5149:6:200\"\n },\n \"scope\": 66276,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 66232,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"5679:657:200\",\n \"nodes\": [],\n \"body\": {\n \"id\": 66231,\n \"nodeType\": \"Block\",\n \"src\": \"5787:549:200\",\n \"nodes\": [],\n \"statements\": [\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"id\": 66185,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 66181,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 66179,\n \"name\": \"maxIterations\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66176,\n \"src\": \"5890:13:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"==\",\n \"rightExpression\": {\n \"hexValue\": \"30\",\n \"id\": 66180,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"5907:1:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n },\n \"value\": \"0\"\n },\n \"src\": \"5890:18:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"||\",\n \"rightExpression\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 66184,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 66182,\n \"name\": \"maxIterations\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66176,\n \"src\": \"5912:13:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \">\",\n \"rightExpression\": {\n \"id\": 66183,\n \"name\": \"MAX_ITERATIONS\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65912,\n \"src\": \"5928:14:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"5912:30:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"src\": \"5890:52:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 66190,\n \"nodeType\": \"IfStatement\",\n \"src\": \"5886:92:200\",\n \"trueBody\": {\n \"expression\": {\n \"id\": 66188,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 66186,\n \"name\": \"maxIterations\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66176,\n \"src\": \"5944:13:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"id\": 66187,\n \"name\": \"OPTIMAL_ITERATIONS\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65915,\n \"src\": \"5960:18:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"5944:34:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 66189,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"5944:34:200\"\n }\n },\n {\n \"expression\": {\n \"id\": 66196,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 66191,\n \"name\": \"amountToDeposit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66174,\n \"src\": \"5989:15:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"id\": 66193,\n \"name\": \"tokenToDeposit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66172,\n \"src\": \"6021:14:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n {\n \"id\": 66194,\n \"name\": \"amountToDeposit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66174,\n \"src\": \"6037:15:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"id\": 66192,\n \"name\": \"_maxAvailable\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61557,\n \"src\": \"6007:13:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_view$_t_contract$_ERC20_$45747_$_t_uint256_$returns$_t_uint256_$\",\n \"typeString\": \"function (contract ERC20,uint256) view returns (uint256)\"\n }\n },\n \"id\": 66195,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6007:46:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"5989:64:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 66197,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"5989:64:200\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 66203,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65919,\n \"src\": \"6098:6:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n ],\n \"id\": 66202,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"6090:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66201,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6090:7:200\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 66204,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6090:15:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 66205,\n \"name\": \"amountToDeposit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66174,\n \"src\": \"6107:15:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 66198,\n \"name\": \"tokenToDeposit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66172,\n \"src\": \"6063:14:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 66200,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"6078:11:200\",\n \"memberName\": \"safeApprove\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 46497,\n \"src\": \"6063:26:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"function (contract ERC20,address,uint256)\"\n }\n },\n \"id\": 66206,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6063:60:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 66207,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"6063:60:200\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 66213,\n \"name\": \"tokenToDeposit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66172,\n \"src\": \"6155:14:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n ],\n \"id\": 66212,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"6147:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66211,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6147:7:200\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 66214,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6147:23:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 66215,\n \"name\": \"amountToDeposit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66174,\n \"src\": \"6172:15:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 66218,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"6197:4:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenP2PAdaptor_$66276\",\n \"typeString\": \"contract MorphoAaveV3ATokenP2PAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenP2PAdaptor_$66276\",\n \"typeString\": \"contract MorphoAaveV3ATokenP2PAdaptor\"\n }\n ],\n \"id\": 66217,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"6189:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66216,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6189:7:200\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 66219,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6189:13:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 66220,\n \"name\": \"maxIterations\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66176,\n \"src\": \"6204:13:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 66208,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65919,\n \"src\": \"6133:6:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"id\": 66210,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"6140:6:200\",\n \"memberName\": \"supply\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53523,\n \"src\": \"6133:13:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$\",\n \"typeString\": \"function (address,uint256,address,uint256) external returns (uint256)\"\n }\n },\n \"id\": 66221,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6133:85:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 66222,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"6133:85:200\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 66224,\n \"name\": \"tokenToDeposit\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66172,\n \"src\": \"6297:14:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 66227,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65919,\n \"src\": \"6321:6:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n ],\n \"id\": 66226,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"6313:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66225,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6313:7:200\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 66228,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6313:15:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 66223,\n \"name\": \"_revokeExternalApproval\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61585,\n \"src\": \"6273:23:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$returns$__$\",\n \"typeString\": \"function (contract ERC20,address)\"\n }\n },\n \"id\": 66229,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6273:56:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 66230,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"6273:56:200\"\n }\n ]\n },\n \"documentation\": {\n \"id\": 66169,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"5307:367:200\",\n \"text\": \" @notice Allows strategists to lend assets on Morpho.\\n @dev Uses `_maxAvailable` helper function, see BaseAdaptor.sol\\n @param tokenToDeposit the token to lend on Morpho\\n @param amountToDeposit the amount of `tokenToDeposit` to lend on Morpho.\\n @param maxIterations maximum number of iterations for Morphos p2p matching engine\"\n },\n \"functionSelector\": \"7ca4c4b7\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"depositToAaveV3Morpho\",\n \"nameLocation\": \"5688:21:200\",\n \"parameters\": {\n \"id\": 66177,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66172,\n \"mutability\": \"mutable\",\n \"name\": \"tokenToDeposit\",\n \"nameLocation\": \"5716:14:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66232,\n \"src\": \"5710:20:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 66171,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 66170,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"5710:5:200\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"5710:5:200\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"5710:5:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 66174,\n \"mutability\": \"mutable\",\n \"name\": \"amountToDeposit\",\n \"nameLocation\": \"5740:15:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66232,\n \"src\": \"5732:23:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 66173,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5732:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 66176,\n \"mutability\": \"mutable\",\n \"name\": \"maxIterations\",\n \"nameLocation\": \"5765:13:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66232,\n \"src\": \"5757:21:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 66175,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5757:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"5709:70:200\"\n },\n \"returnParameters\": {\n \"id\": 66178,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"5787:0:200\"\n },\n \"scope\": 66276,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 66275,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"6665:426:200\",\n \"nodes\": [],\n \"body\": {\n \"id\": 66274,\n \"nodeType\": \"Block\",\n \"src\": \"6778:313:200\",\n \"nodes\": [],\n \"statements\": [\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"id\": 66249,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 66245,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 66243,\n \"name\": \"maxIterations\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66240,\n \"src\": \"6882:13:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"==\",\n \"rightExpression\": {\n \"hexValue\": \"30\",\n \"id\": 66244,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"6899:1:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n },\n \"value\": \"0\"\n },\n \"src\": \"6882:18:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"||\",\n \"rightExpression\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 66248,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 66246,\n \"name\": \"maxIterations\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66240,\n \"src\": \"6904:13:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \">\",\n \"rightExpression\": {\n \"id\": 66247,\n \"name\": \"MAX_ITERATIONS\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65912,\n \"src\": \"6920:14:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"6904:30:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"src\": \"6882:52:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"documentation\": \"Sanitize maxIterations to prevent strategists from gas griefing Somm relayer.\",\n \"id\": 66254,\n \"nodeType\": \"IfStatement\",\n \"src\": \"6878:92:200\",\n \"trueBody\": {\n \"expression\": {\n \"id\": 66252,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 66250,\n \"name\": \"maxIterations\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66240,\n \"src\": \"6936:13:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"id\": 66251,\n \"name\": \"OPTIMAL_ITERATIONS\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65915,\n \"src\": \"6952:18:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"6936:34:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 66253,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"6936:34:200\"\n }\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 66260,\n \"name\": \"tokenToWithdraw\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66236,\n \"src\": \"7004:15:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n ],\n \"id\": 66259,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"6996:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66258,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6996:7:200\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 66261,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6996:24:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 66262,\n \"name\": \"amountToWithdraw\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66238,\n \"src\": \"7022:16:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 66265,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"7048:4:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenP2PAdaptor_$66276\",\n \"typeString\": \"contract MorphoAaveV3ATokenP2PAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenP2PAdaptor_$66276\",\n \"typeString\": \"contract MorphoAaveV3ATokenP2PAdaptor\"\n }\n ],\n \"id\": 66264,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"7040:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66263,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"7040:7:200\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 66266,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7040:13:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 66269,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"7063:4:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenP2PAdaptor_$66276\",\n \"typeString\": \"contract MorphoAaveV3ATokenP2PAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3ATokenP2PAdaptor_$66276\",\n \"typeString\": \"contract MorphoAaveV3ATokenP2PAdaptor\"\n }\n ],\n \"id\": 66268,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"7055:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66267,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"7055:7:200\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 66270,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"7055:13:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 66271,\n \"name\": \"maxIterations\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66240,\n \"src\": \"7070:13:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 66255,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 65919,\n \"src\": \"6980:6:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"id\": 66257,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"6987:8:200\",\n \"memberName\": \"withdraw\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53549,\n \"src\": \"6980:15:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$\",\n \"typeString\": \"function (address,uint256,address,address,uint256) external returns (uint256)\"\n }\n },\n \"id\": 66272,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6980:104:200\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 66273,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"6980:104:200\"\n }\n ]\n },\n \"documentation\": {\n \"id\": 66233,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"6342:318:200\",\n \"text\": \" @notice Allows strategists to withdraw assets from Morpho.\\n @param tokenToWithdraw the token to withdraw from Morpho.\\n @param amountToWithdraw the amount of `tokenToWithdraw` to withdraw from Morpho\\n @param maxIterations maximum number of iterations for Morphos p2p matching engine\"\n },\n \"functionSelector\": \"35340a27\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"withdrawFromAaveV3Morpho\",\n \"nameLocation\": \"6674:24:200\",\n \"parameters\": {\n \"id\": 66241,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66236,\n \"mutability\": \"mutable\",\n \"name\": \"tokenToWithdraw\",\n \"nameLocation\": \"6705:15:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66275,\n \"src\": \"6699:21:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 66235,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 66234,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"6699:5:200\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"6699:5:200\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"6699:5:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 66238,\n \"mutability\": \"mutable\",\n \"name\": \"amountToWithdraw\",\n \"nameLocation\": \"6730:16:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66275,\n \"src\": \"6722:24:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 66237,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6722:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 66240,\n \"mutability\": \"mutable\",\n \"name\": \"maxIterations\",\n \"nameLocation\": \"6756:13:200\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66275,\n \"src\": \"6748:21:200\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 66239,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6748:7:200\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"6698:72:200\"\n },\n \"returnParameters\": {\n \"id\": 66242,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"6778:0:200\"\n },\n \"scope\": 66276,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n }\n ],\n \"abstract\": false,\n \"baseContracts\": [\n {\n \"baseName\": {\n \"id\": 65902,\n \"name\": \"BaseAdaptor\",\n \"nameLocations\": [\n \"505:11:200\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 61644,\n \"src\": \"505:11:200\"\n },\n \"id\": 65903,\n \"nodeType\": \"InheritanceSpecifier\",\n \"src\": \"505:11:200\"\n },\n {\n \"baseName\": {\n \"id\": 65904,\n \"name\": \"MorphoRewardHandler\",\n \"nameLocations\": [\n \"518:19:200\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 66696,\n \"src\": \"518:19:200\"\n },\n \"id\": 65905,\n \"nodeType\": \"InheritanceSpecifier\",\n \"src\": \"518:19:200\"\n }\n ],\n \"canonicalName\": \"MorphoAaveV3ATokenP2PAdaptor\",\n \"contractDependencies\": [],\n \"contractKind\": \"contract\",\n \"documentation\": {\n \"id\": 65901,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"322:141:200\",\n \"text\": \" @title Morpho Aave V3 aToken Adaptor\\n @notice Allows Cellars to interact with Morpho Aave V3 positions.\\n @author crispymangoes\"\n },\n \"fullyImplemented\": true,\n \"linearizedBaseContracts\": [\n 66276,\n 66696,\n 61644\n ],\n \"name\": \"MorphoAaveV3ATokenP2PAdaptor\",\n \"nameLocation\": \"473:28:200\",\n \"scope\": 66277,\n \"usedErrors\": [\n 61379,\n 61382,\n 61385,\n 61388,\n 61393,\n 61396\n ]\n }\n ],\n \"license\": \"Apache-2.0\"\n },\n \"id\": 200\n}") . expect ("invalid abi") + }); + #[derive(Clone)] + pub struct MorphoAaveV3ATokenP2PAdaptorV1(ethers::contract::Contract); + impl std::ops::Deref for MorphoAaveV3ATokenP2PAdaptorV1 { + type Target = ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl std::fmt::Debug for MorphoAaveV3ATokenP2PAdaptorV1 { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + f.debug_tuple(stringify!(MorphoAaveV3ATokenP2PAdaptorV1)) + .field(&self.address()) + .finish() + } + } + impl<'a, M: ethers::providers::Middleware> MorphoAaveV3ATokenP2PAdaptorV1 { + #[doc = r" Creates a new contract instance with the specified `ethers`"] + #[doc = r" client at the given `Address`. The contract derefs to a `ethers::Contract`"] + #[doc = r" object"] + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + let contract = ethers::contract::Contract::new( + address.into(), + MORPHOAAVEV3ATOKENP2PADAPTORV1_ABI.clone(), + client, + ); + Self(contract) + } + #[doc = "Calls the contract's `assetOf` (0xe170a9bf) function"] + pub fn asset_of( + &self, + adaptor_data: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([225, 112, 169, 191], adaptor_data) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `assetsUsed` (0xaeffddde) function"] + pub fn assets_used( + &self, + adaptor_data: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec, + > { + self.0 + .method_hash([174, 255, 221, 222], adaptor_data) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `balanceOf` (0x78415365) function"] + pub fn balance_of( + &self, + adaptor_data: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([120, 65, 83, 101], adaptor_data) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `claim` (0x2f52ebb7) function"] + pub fn claim( + &self, + claimable: ethers::core::types::U256, + proof: ::std::vec::Vec<[u8; 32]>, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([47, 82, 235, 183], (claimable, proof)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `deposit` (0x69445c31) function"] + pub fn deposit( + &self, + assets: ethers::core::types::U256, + adaptor_data: ethers::core::types::Bytes, + configuration_data: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [105, 68, 92, 49], + (assets, adaptor_data, configuration_data), + ) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `depositToAaveV3Morpho` (0x7ca4c4b7) function"] + pub fn deposit_to_aave_v3_morpho( + &self, + token_to_deposit: ethers::core::types::Address, + amount_to_deposit: ethers::core::types::U256, + max_iterations: ethers::core::types::U256, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [124, 164, 196, 183], + (token_to_deposit, amount_to_deposit, max_iterations), + ) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `identifier` (0x7998a1c4) function"] + pub fn identifier(&self) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([121, 152, 161, 196], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `isDebt` (0x89353a09) function"] + pub fn is_debt(&self) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([137, 53, 58, 9], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `morpho` (0xd8fbc833) function"] + pub fn morpho( + &self, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([216, 251, 200, 51], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `morphoRewardsDistributor` (0x5b5d4d78) function"] + pub fn morpho_rewards_distributor( + &self, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([91, 93, 77, 120], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `revokeApproval` (0xd3bfe76a) function"] + pub fn revoke_approval( + &self, + asset: ethers::core::types::Address, + spender: ethers::core::types::Address, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([211, 191, 231, 106], (asset, spender)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `slippage` (0x3e032a3b) function"] + pub fn slippage(&self) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([62, 3, 42, 59], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `withdraw` (0xc9111bd7) function"] + pub fn withdraw( + &self, + assets: ethers::core::types::U256, + receiver: ethers::core::types::Address, + adaptor_data: ethers::core::types::Bytes, + configuration_data: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [201, 17, 27, 215], + (assets, receiver, adaptor_data, configuration_data), + ) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `withdrawFromAaveV3Morpho` (0x35340a27) function"] + pub fn withdraw_from_aave_v3_morpho( + &self, + token_to_withdraw: ethers::core::types::Address, + amount_to_withdraw: ethers::core::types::U256, + max_iterations: ethers::core::types::U256, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [53, 52, 10, 39], + (token_to_withdraw, amount_to_withdraw, max_iterations), + ) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `withdrawableFrom` (0xfa50e5d2) function"] + pub fn withdrawable_from( + &self, + adaptor_data: ethers::core::types::Bytes, + p1: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([250, 80, 229, 210], (adaptor_data, p1)) + .expect("method not found (this should never happen)") + } + } + #[doc = "Container type for all input parameters for the `assetOf`function with signature `assetOf(bytes)` and selector `[225, 112, 169, 191]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "assetOf", abi = "assetOf(bytes)")] + pub struct AssetOfCall { + pub adaptor_data: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `assetsUsed`function with signature `assetsUsed(bytes)` and selector `[174, 255, 221, 222]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "assetsUsed", abi = "assetsUsed(bytes)")] + pub struct AssetsUsedCall { + pub adaptor_data: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `balanceOf`function with signature `balanceOf(bytes)` and selector `[120, 65, 83, 101]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "balanceOf", abi = "balanceOf(bytes)")] + pub struct BalanceOfCall { + pub adaptor_data: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `claim`function with signature `claim(uint256,bytes32[])` and selector `[47, 82, 235, 183]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "claim", abi = "claim(uint256,bytes32[])")] + pub struct ClaimCall { + pub claimable: ethers::core::types::U256, + pub proof: ::std::vec::Vec<[u8; 32]>, + } + #[doc = "Container type for all input parameters for the `deposit`function with signature `deposit(uint256,bytes,bytes)` and selector `[105, 68, 92, 49]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "deposit", abi = "deposit(uint256,bytes,bytes)")] + pub struct DepositCall { + pub assets: ethers::core::types::U256, + pub adaptor_data: ethers::core::types::Bytes, + pub configuration_data: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `depositToAaveV3Morpho`function with signature `depositToAaveV3Morpho(address,uint256,uint256)` and selector `[124, 164, 196, 183]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall( + name = "depositToAaveV3Morpho", + abi = "depositToAaveV3Morpho(address,uint256,uint256)" + )] + pub struct DepositToAaveV3MorphoCall { + pub token_to_deposit: ethers::core::types::Address, + pub amount_to_deposit: ethers::core::types::U256, + pub max_iterations: ethers::core::types::U256, + } + #[doc = "Container type for all input parameters for the `identifier`function with signature `identifier()` and selector `[121, 152, 161, 196]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "identifier", abi = "identifier()")] + pub struct IdentifierCall; + #[doc = "Container type for all input parameters for the `isDebt`function with signature `isDebt()` and selector `[137, 53, 58, 9]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "isDebt", abi = "isDebt()")] + pub struct IsDebtCall; + #[doc = "Container type for all input parameters for the `morpho`function with signature `morpho()` and selector `[216, 251, 200, 51]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "morpho", abi = "morpho()")] + pub struct MorphoCall; + #[doc = "Container type for all input parameters for the `morphoRewardsDistributor`function with signature `morphoRewardsDistributor()` and selector `[91, 93, 77, 120]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "morphoRewardsDistributor", abi = "morphoRewardsDistributor()")] + pub struct MorphoRewardsDistributorCall; + #[doc = "Container type for all input parameters for the `revokeApproval`function with signature `revokeApproval(address,address)` and selector `[211, 191, 231, 106]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "revokeApproval", abi = "revokeApproval(address,address)")] + pub struct RevokeApprovalCall { + pub asset: ethers::core::types::Address, + pub spender: ethers::core::types::Address, + } + #[doc = "Container type for all input parameters for the `slippage`function with signature `slippage()` and selector `[62, 3, 42, 59]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "slippage", abi = "slippage()")] + pub struct SlippageCall; + #[doc = "Container type for all input parameters for the `withdraw`function with signature `withdraw(uint256,address,bytes,bytes)` and selector `[201, 17, 27, 215]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "withdraw", abi = "withdraw(uint256,address,bytes,bytes)")] + pub struct WithdrawCall { + pub assets: ethers::core::types::U256, + pub receiver: ethers::core::types::Address, + pub adaptor_data: ethers::core::types::Bytes, + pub configuration_data: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `withdrawFromAaveV3Morpho`function with signature `withdrawFromAaveV3Morpho(address,uint256,uint256)` and selector `[53, 52, 10, 39]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall( + name = "withdrawFromAaveV3Morpho", + abi = "withdrawFromAaveV3Morpho(address,uint256,uint256)" + )] + pub struct WithdrawFromAaveV3MorphoCall { + pub token_to_withdraw: ethers::core::types::Address, + pub amount_to_withdraw: ethers::core::types::U256, + pub max_iterations: ethers::core::types::U256, + } + #[doc = "Container type for all input parameters for the `withdrawableFrom`function with signature `withdrawableFrom(bytes,bytes)` and selector `[250, 80, 229, 210]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "withdrawableFrom", abi = "withdrawableFrom(bytes,bytes)")] + pub struct WithdrawableFromCall { + pub adaptor_data: ethers::core::types::Bytes, + pub p1: ethers::core::types::Bytes, + } + #[derive(Debug, Clone, PartialEq, Eq, ethers :: contract :: EthAbiType)] + pub enum MorphoAaveV3ATokenP2PAdaptorV1Calls { + AssetOf(AssetOfCall), + AssetsUsed(AssetsUsedCall), + BalanceOf(BalanceOfCall), + Claim(ClaimCall), + Deposit(DepositCall), + DepositToAaveV3Morpho(DepositToAaveV3MorphoCall), + Identifier(IdentifierCall), + IsDebt(IsDebtCall), + Morpho(MorphoCall), + MorphoRewardsDistributor(MorphoRewardsDistributorCall), + RevokeApproval(RevokeApprovalCall), + Slippage(SlippageCall), + Withdraw(WithdrawCall), + WithdrawFromAaveV3Morpho(WithdrawFromAaveV3MorphoCall), + WithdrawableFrom(WithdrawableFromCall), + } + impl ethers::core::abi::AbiDecode for MorphoAaveV3ATokenP2PAdaptorV1Calls { + fn decode(data: impl AsRef<[u8]>) -> Result { + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenP2PAdaptorV1Calls::AssetOf(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenP2PAdaptorV1Calls::AssetsUsed(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenP2PAdaptorV1Calls::BalanceOf(decoded)); + } + if let Ok(decoded) = ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenP2PAdaptorV1Calls::Claim(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenP2PAdaptorV1Calls::Deposit(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenP2PAdaptorV1Calls::DepositToAaveV3Morpho( + decoded, + )); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenP2PAdaptorV1Calls::Identifier(decoded)); + } + if let Ok(decoded) = ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenP2PAdaptorV1Calls::IsDebt(decoded)); + } + if let Ok(decoded) = ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenP2PAdaptorV1Calls::Morpho(decoded)); + } + if let Ok(decoded) = + ::decode( + data.as_ref(), + ) + { + return Ok(MorphoAaveV3ATokenP2PAdaptorV1Calls::MorphoRewardsDistributor(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenP2PAdaptorV1Calls::RevokeApproval(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenP2PAdaptorV1Calls::Slippage(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenP2PAdaptorV1Calls::Withdraw(decoded)); + } + if let Ok(decoded) = + ::decode( + data.as_ref(), + ) + { + return Ok(MorphoAaveV3ATokenP2PAdaptorV1Calls::WithdrawFromAaveV3Morpho(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3ATokenP2PAdaptorV1Calls::WithdrawableFrom( + decoded, + )); + } + Err(ethers::core::abi::Error::InvalidData.into()) + } + } + impl ethers::core::abi::AbiEncode for MorphoAaveV3ATokenP2PAdaptorV1Calls { + fn encode(self) -> Vec { + match self { + MorphoAaveV3ATokenP2PAdaptorV1Calls::AssetOf(element) => element.encode(), + MorphoAaveV3ATokenP2PAdaptorV1Calls::AssetsUsed(element) => element.encode(), + MorphoAaveV3ATokenP2PAdaptorV1Calls::BalanceOf(element) => element.encode(), + MorphoAaveV3ATokenP2PAdaptorV1Calls::Claim(element) => element.encode(), + MorphoAaveV3ATokenP2PAdaptorV1Calls::Deposit(element) => element.encode(), + MorphoAaveV3ATokenP2PAdaptorV1Calls::DepositToAaveV3Morpho(element) => { + element.encode() + } + MorphoAaveV3ATokenP2PAdaptorV1Calls::Identifier(element) => element.encode(), + MorphoAaveV3ATokenP2PAdaptorV1Calls::IsDebt(element) => element.encode(), + MorphoAaveV3ATokenP2PAdaptorV1Calls::Morpho(element) => element.encode(), + MorphoAaveV3ATokenP2PAdaptorV1Calls::MorphoRewardsDistributor(element) => { + element.encode() + } + MorphoAaveV3ATokenP2PAdaptorV1Calls::RevokeApproval(element) => element.encode(), + MorphoAaveV3ATokenP2PAdaptorV1Calls::Slippage(element) => element.encode(), + MorphoAaveV3ATokenP2PAdaptorV1Calls::Withdraw(element) => element.encode(), + MorphoAaveV3ATokenP2PAdaptorV1Calls::WithdrawFromAaveV3Morpho(element) => { + element.encode() + } + MorphoAaveV3ATokenP2PAdaptorV1Calls::WithdrawableFrom(element) => element.encode(), + } + } + } + impl ::std::fmt::Display for MorphoAaveV3ATokenP2PAdaptorV1Calls { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + match self { + MorphoAaveV3ATokenP2PAdaptorV1Calls::AssetOf(element) => element.fmt(f), + MorphoAaveV3ATokenP2PAdaptorV1Calls::AssetsUsed(element) => element.fmt(f), + MorphoAaveV3ATokenP2PAdaptorV1Calls::BalanceOf(element) => element.fmt(f), + MorphoAaveV3ATokenP2PAdaptorV1Calls::Claim(element) => element.fmt(f), + MorphoAaveV3ATokenP2PAdaptorV1Calls::Deposit(element) => element.fmt(f), + MorphoAaveV3ATokenP2PAdaptorV1Calls::DepositToAaveV3Morpho(element) => { + element.fmt(f) + } + MorphoAaveV3ATokenP2PAdaptorV1Calls::Identifier(element) => element.fmt(f), + MorphoAaveV3ATokenP2PAdaptorV1Calls::IsDebt(element) => element.fmt(f), + MorphoAaveV3ATokenP2PAdaptorV1Calls::Morpho(element) => element.fmt(f), + MorphoAaveV3ATokenP2PAdaptorV1Calls::MorphoRewardsDistributor(element) => { + element.fmt(f) + } + MorphoAaveV3ATokenP2PAdaptorV1Calls::RevokeApproval(element) => element.fmt(f), + MorphoAaveV3ATokenP2PAdaptorV1Calls::Slippage(element) => element.fmt(f), + MorphoAaveV3ATokenP2PAdaptorV1Calls::Withdraw(element) => element.fmt(f), + MorphoAaveV3ATokenP2PAdaptorV1Calls::WithdrawFromAaveV3Morpho(element) => { + element.fmt(f) + } + MorphoAaveV3ATokenP2PAdaptorV1Calls::WithdrawableFrom(element) => element.fmt(f), + } + } + } + impl ::std::convert::From for MorphoAaveV3ATokenP2PAdaptorV1Calls { + fn from(var: AssetOfCall) -> Self { + MorphoAaveV3ATokenP2PAdaptorV1Calls::AssetOf(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenP2PAdaptorV1Calls { + fn from(var: AssetsUsedCall) -> Self { + MorphoAaveV3ATokenP2PAdaptorV1Calls::AssetsUsed(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenP2PAdaptorV1Calls { + fn from(var: BalanceOfCall) -> Self { + MorphoAaveV3ATokenP2PAdaptorV1Calls::BalanceOf(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenP2PAdaptorV1Calls { + fn from(var: ClaimCall) -> Self { + MorphoAaveV3ATokenP2PAdaptorV1Calls::Claim(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenP2PAdaptorV1Calls { + fn from(var: DepositCall) -> Self { + MorphoAaveV3ATokenP2PAdaptorV1Calls::Deposit(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenP2PAdaptorV1Calls { + fn from(var: DepositToAaveV3MorphoCall) -> Self { + MorphoAaveV3ATokenP2PAdaptorV1Calls::DepositToAaveV3Morpho(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenP2PAdaptorV1Calls { + fn from(var: IdentifierCall) -> Self { + MorphoAaveV3ATokenP2PAdaptorV1Calls::Identifier(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenP2PAdaptorV1Calls { + fn from(var: IsDebtCall) -> Self { + MorphoAaveV3ATokenP2PAdaptorV1Calls::IsDebt(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenP2PAdaptorV1Calls { + fn from(var: MorphoCall) -> Self { + MorphoAaveV3ATokenP2PAdaptorV1Calls::Morpho(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenP2PAdaptorV1Calls { + fn from(var: MorphoRewardsDistributorCall) -> Self { + MorphoAaveV3ATokenP2PAdaptorV1Calls::MorphoRewardsDistributor(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenP2PAdaptorV1Calls { + fn from(var: RevokeApprovalCall) -> Self { + MorphoAaveV3ATokenP2PAdaptorV1Calls::RevokeApproval(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenP2PAdaptorV1Calls { + fn from(var: SlippageCall) -> Self { + MorphoAaveV3ATokenP2PAdaptorV1Calls::Slippage(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenP2PAdaptorV1Calls { + fn from(var: WithdrawCall) -> Self { + MorphoAaveV3ATokenP2PAdaptorV1Calls::Withdraw(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenP2PAdaptorV1Calls { + fn from(var: WithdrawFromAaveV3MorphoCall) -> Self { + MorphoAaveV3ATokenP2PAdaptorV1Calls::WithdrawFromAaveV3Morpho(var) + } + } + impl ::std::convert::From for MorphoAaveV3ATokenP2PAdaptorV1Calls { + fn from(var: WithdrawableFromCall) -> Self { + MorphoAaveV3ATokenP2PAdaptorV1Calls::WithdrawableFrom(var) + } + } +} diff --git a/steward_abi/src/morpho_aave_v3_debt_token_adaptor_v1.rs b/steward_abi/src/morpho_aave_v3_debt_token_adaptor_v1.rs new file mode 100644 index 00000000..0d2e433b --- /dev/null +++ b/steward_abi/src/morpho_aave_v3_debt_token_adaptor_v1.rs @@ -0,0 +1,633 @@ +pub use morphoaavev3debttokenadaptorv1_mod::*; +#[allow(clippy::too_many_arguments)] +mod morphoaavev3debttokenadaptorv1_mod { + #![allow(clippy::enum_variant_names)] + #![allow(dead_code)] + #![allow(clippy::type_complexity)] + #![allow(unused_imports)] + use ethers::contract::{ + builders::{ContractCall, Event}, + Contract, Lazy, + }; + use ethers::core::{ + abi::{Abi, Detokenize, InvalidOutputType, Token, Tokenizable}, + types::*, + }; + use ethers::providers::Middleware; + #[doc = "MorphoAaveV3DebtTokenAdaptorV1 was auto-generated with ethers-rs Abigen. More information at: https://github.com/gakonst/ethers-rs"] + use std::sync::Arc; + pub static MORPHOAAVEV3DEBTTOKENADAPTORV1_ABI: ethers::contract::Lazy = + ethers::contract::Lazy::new(|| { + serde_json :: from_str ("{\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_morpho\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minHealthFactor\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__ConstructorHealthFactorTooLow\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__ExternalReceiverBlocked\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"asset\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"BaseAdaptor__PricingNotSupported\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__Slippage\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__UserDepositsNotAllowed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"BaseAdaptor__UserWithdrawsNotAllowed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"untrackedDebtPosition\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"MorphoAaveV3DebtTokenAdaptor__DebtPositionsMustBeTracked\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"MorphoAaveV3DebtTokenAdaptor__HealthFactorTooLow\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"assetOf\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"assetsUsed\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20[]\",\n \"name\": \"assets\",\n \"type\": \"address[]\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"underlying\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountToBorrow\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxIterations\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"borrowFromAaveV3Morpho\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"deposit\",\n \"outputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"identifier\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"isDebt\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"minimumHealthFactor\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"morpho\",\n \"outputs\": [\n {\n \"internalType\": \"contract IMorphoV3\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"tokenToRepay\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountToRepay\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"repayAaveV3MorphoDebt\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"asset\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"revokeApproval\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"slippage\",\n \"outputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"\",\n \"type\": \"uint32\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"withdraw\",\n \"outputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"name\": \"withdrawableFrom\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\"\n }\n ],\n \"bytecode\": {\n \"object\": \"0x60c060405234801561001057600080fd5b50604051610f92380380610f9283398101604081905261002f9161007a565b6100388161004e565b6001600160a01b0390911660805260a0526100b4565b670e92596fd6290000811015610077576040516397ed5f4160e01b815260040160405180910390fd5b50565b6000806040838503121561008d57600080fd5b82516001600160a01b03811681146100a457600080fd5b6020939093015192949293505050565b60805160a051610e896101096000396000818160f4015261061c0152600081816101d6015281816102a40152818161057e015281816105f30152818161071e0152818161076f01526107e30152610e896000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063aeffddde1161008c578063d8fbc83311610066578063d8fbc833146101d1578063e170a9bf14610210578063e5afd9b614610223578063fa50e5d21461023657600080fd5b8063aeffddde1461018b578063c9111bd7146101ab578063d3bfe76a146101be57600080fd5b806378415365116100c8578063784153651461014e5780637998a1c41461016157806389353a0914610169578063a6cfba9a1461017857600080fd5b80631caff8b1146100ef5780633e032a3b1461012957806369445c3114610139575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6040516123288152602001610120565b61014c610147366004610a7f565b61024c565b005b61011661015c366004610aec565b610265565b610116610318565b60405160018152602001610120565b61014c610186366004610b39565b610385565b61019e610199366004610aec565b610663565b6040516101209190610b6e565b61014c6101b9366004610bbb565b6106c6565b61014c6101cc366004610c3b565b6106df565b6101f87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610120565b6101f861021e366004610aec565b6106f8565b61014c610231366004610c74565b61070f565b610116610244366004610ca0565b600092915050565b604051633204ed5b60e21b815260040160405180910390fd5b6000808280602001905181019061027c9190610d04565b60405163ccdbe8b160e01b81526001600160a01b0380831660048301523360248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063ccdbe8b190604401602060405180830381865afa1580156102ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103119190610d21565b9392505050565b600060405160200161036a9060208082526026908201527f4d6f7270686f20416176652056332064656274546f6b656e2041646170746f72604082015265205620312e3160d01b606082015260800190565b60405160208183030381529060405280519060200120905090565b600061038f610318565b604080516001600160a01b03871660208201526001910160408051601f19818403018152908290526103c5939291602001610d3a565b6040516020818303038152906040528051906020012090506000306001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561041d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104419190610d04565b6001600160a01b03166309f7abd2836040518263ffffffff1660e01b815260040161046e91815260200190565b602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190610d99565b60405163024eefab60e61b815263ffffffff8216600482015290915030906393bbeac090602401602060405180830381865afa1580156104f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105179190610dbf565b6105445760405163792c47cf60e11b81526001600160a01b03861660048201526024015b60405180910390fd5b604051634cc9040360e11b81526001600160a01b0386811660048301526024820186905230604483018190526064830152608482018590527f0000000000000000000000000000000000000000000000000000000000000000169063999208069060a4016020604051808303816000875af11580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190610d21565b5060006106187f000000000000000000000000000000000000000000000000000000000000000030610807565b90507f000000000000000000000000000000000000000000000000000000000000000081101561065b576040516309ca680760e41b815260040160405180910390fd5b505050505050565b6040805160018082528183019092526060916020808301908036833701905050905061068e826106f8565b816000815181106106a1576106a1610de1565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b604051635f5003c560e11b815260040160405180910390fd5b6106f46001600160a01b0383168260006108b1565b5050565b600080828060200190518101906103119190610d04565b6107436001600160a01b0383167f0000000000000000000000000000000000000000000000000000000000000000836108b1565b60405163173aba7160e21b81526001600160a01b038381166004830152602482018390523060448301527f00000000000000000000000000000000000000000000000000000000000000001690635ceae9c4906064016020604051808303816000875af11580156107b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107dc9190610d21565b506106f4827f000000000000000000000000000000000000000000000000000000000000000061092e565b604051632459428560e11b81526001600160a01b03828116600483015260009182918516906348b2850a90602401606060405180830381865afa158015610852573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108769190610df7565b9050600081604001511161088c576000196108a9565b602081015160408201516108a991670de0b6b3a7640000916109bd565b949350505050565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806109285760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b604482015260640161053b565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa15801561097e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a29190610d21565b11156106f4576106f46001600160a01b0383168260006108b1565b8282028115158415858304851417166109d557600080fd5b0492915050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610a0357600080fd5b813567ffffffffffffffff80821115610a1e57610a1e6109dc565b604051601f8301601f19908116603f01168101908282118183101715610a4657610a466109dc565b81604052838152866020858801011115610a5f57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215610a9457600080fd5b83359250602084013567ffffffffffffffff80821115610ab357600080fd5b610abf878388016109f2565b93506040860135915080821115610ad557600080fd5b50610ae2868287016109f2565b9150509250925092565b600060208284031215610afe57600080fd5b813567ffffffffffffffff811115610b1557600080fd5b6108a9848285016109f2565b6001600160a01b0381168114610b3657600080fd5b50565b600080600060608486031215610b4e57600080fd5b8335610b5981610b21565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b81811015610baf5783516001600160a01b031683529284019291840191600101610b8a565b50909695505050505050565b60008060008060808587031215610bd157600080fd5b843593506020850135610be381610b21565b9250604085013567ffffffffffffffff80821115610c0057600080fd5b610c0c888389016109f2565b93506060870135915080821115610c2257600080fd5b50610c2f878288016109f2565b91505092959194509250565b60008060408385031215610c4e57600080fd5b8235610c5981610b21565b91506020830135610c6981610b21565b809150509250929050565b60008060408385031215610c8757600080fd5b8235610c9281610b21565b946020939093013593505050565b60008060408385031215610cb357600080fd5b823567ffffffffffffffff80821115610ccb57600080fd5b610cd7868387016109f2565b93506020850135915080821115610ced57600080fd5b50610cfa858286016109f2565b9150509250929050565b600060208284031215610d1657600080fd5b815161031181610b21565b600060208284031215610d3357600080fd5b5051919050565b838152600060208415158184015260606040840152835180606085015260005b81811015610d7657858101830151858201608001528201610d5a565b506000608082860101526080601f19601f83011685010192505050949350505050565b600060208284031215610dab57600080fd5b815163ffffffff8116811461031157600080fd5b600060208284031215610dd157600080fd5b8151801515811461031157600080fd5b634e487b7160e01b600052603260045260246000fd5b600060608284031215610e0957600080fd5b6040516060810181811067ffffffffffffffff82111715610e2c57610e2c6109dc565b8060405250825181526020830151602082015260408301516040820152809150509291505056fea2646970667358221220d49b3ebebafe62c6e7cb0efe3e5039da6b768a199f56d22f65591f67cf61607c64736f6c63430008100033\",\n \"sourceMap\": \"521:5593:201:-:0;;;1800:209;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1864:54;1902:15;1864:37;:54::i;:::-;-1:-1:-1;;;;;1928:27:201;;;;;1965:37;;521:5593;;8743:233:188;2760:7;8847:19;:57;8843:126;;;8925:44;;-1:-1:-1;;;8925:44:188;;;;;;;;;;;8843:126;8743:233;:::o;14:351:258:-;93:6;101;154:2;142:9;133:7;129:23;125:32;122:52;;;170:1;167;160:12;122:52;196:16;;-1:-1:-1;;;;;241:31:258;;231:42;;221:70;;287:1;284;277:12;221:70;355:2;340:18;;;;334:25;310:5;;334:25;;-1:-1:-1;;;14:351:258:o;:::-;521:5593:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\",\n \"linkReferences\": {}\n },\n \"deployedBytecode\": {\n \"object\": \"0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063aeffddde1161008c578063d8fbc83311610066578063d8fbc833146101d1578063e170a9bf14610210578063e5afd9b614610223578063fa50e5d21461023657600080fd5b8063aeffddde1461018b578063c9111bd7146101ab578063d3bfe76a146101be57600080fd5b806378415365116100c8578063784153651461014e5780637998a1c41461016157806389353a0914610169578063a6cfba9a1461017857600080fd5b80631caff8b1146100ef5780633e032a3b1461012957806369445c3114610139575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6040516123288152602001610120565b61014c610147366004610a7f565b61024c565b005b61011661015c366004610aec565b610265565b610116610318565b60405160018152602001610120565b61014c610186366004610b39565b610385565b61019e610199366004610aec565b610663565b6040516101209190610b6e565b61014c6101b9366004610bbb565b6106c6565b61014c6101cc366004610c3b565b6106df565b6101f87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610120565b6101f861021e366004610aec565b6106f8565b61014c610231366004610c74565b61070f565b610116610244366004610ca0565b600092915050565b604051633204ed5b60e21b815260040160405180910390fd5b6000808280602001905181019061027c9190610d04565b60405163ccdbe8b160e01b81526001600160a01b0380831660048301523360248301529192507f00000000000000000000000000000000000000000000000000000000000000009091169063ccdbe8b190604401602060405180830381865afa1580156102ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103119190610d21565b9392505050565b600060405160200161036a9060208082526026908201527f4d6f7270686f20416176652056332064656274546f6b656e2041646170746f72604082015265205620312e3160d01b606082015260800190565b60405160208183030381529060405280519060200120905090565b600061038f610318565b604080516001600160a01b03871660208201526001910160408051601f19818403018152908290526103c5939291602001610d3a565b6040516020818303038152906040528051906020012090506000306001600160a01b0316637b1039996040518163ffffffff1660e01b8152600401602060405180830381865afa15801561041d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104419190610d04565b6001600160a01b03166309f7abd2836040518263ffffffff1660e01b815260040161046e91815260200190565b602060405180830381865afa15801561048b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104af9190610d99565b60405163024eefab60e61b815263ffffffff8216600482015290915030906393bbeac090602401602060405180830381865afa1580156104f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105179190610dbf565b6105445760405163792c47cf60e11b81526001600160a01b03861660048201526024015b60405180910390fd5b604051634cc9040360e11b81526001600160a01b0386811660048301526024820186905230604483018190526064830152608482018590527f0000000000000000000000000000000000000000000000000000000000000000169063999208069060a4016020604051808303816000875af11580156105c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105eb9190610d21565b5060006106187f000000000000000000000000000000000000000000000000000000000000000030610807565b90507f000000000000000000000000000000000000000000000000000000000000000081101561065b576040516309ca680760e41b815260040160405180910390fd5b505050505050565b6040805160018082528183019092526060916020808301908036833701905050905061068e826106f8565b816000815181106106a1576106a1610de1565b60200260200101906001600160a01b031690816001600160a01b031681525050919050565b604051635f5003c560e11b815260040160405180910390fd5b6106f46001600160a01b0383168260006108b1565b5050565b600080828060200190518101906103119190610d04565b6107436001600160a01b0383167f0000000000000000000000000000000000000000000000000000000000000000836108b1565b60405163173aba7160e21b81526001600160a01b038381166004830152602482018390523060448301527f00000000000000000000000000000000000000000000000000000000000000001690635ceae9c4906064016020604051808303816000875af11580156107b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107dc9190610d21565b506106f4827f000000000000000000000000000000000000000000000000000000000000000061092e565b604051632459428560e11b81526001600160a01b03828116600483015260009182918516906348b2850a90602401606060405180830381865afa158015610852573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108769190610df7565b9050600081604001511161088c576000196108a9565b602081015160408201516108a991670de0b6b3a7640000916109bd565b949350505050565b600060405163095ea7b360e01b8152836004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806109285760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b604482015260640161053b565b50505050565b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e90604401602060405180830381865afa15801561097e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a29190610d21565b11156106f4576106f46001600160a01b0383168260006108b1565b8282028115158415858304851417166109d557600080fd5b0492915050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610a0357600080fd5b813567ffffffffffffffff80821115610a1e57610a1e6109dc565b604051601f8301601f19908116603f01168101908282118183101715610a4657610a466109dc565b81604052838152866020858801011115610a5f57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215610a9457600080fd5b83359250602084013567ffffffffffffffff80821115610ab357600080fd5b610abf878388016109f2565b93506040860135915080821115610ad557600080fd5b50610ae2868287016109f2565b9150509250925092565b600060208284031215610afe57600080fd5b813567ffffffffffffffff811115610b1557600080fd5b6108a9848285016109f2565b6001600160a01b0381168114610b3657600080fd5b50565b600080600060608486031215610b4e57600080fd5b8335610b5981610b21565b95602085013595506040909401359392505050565b6020808252825182820181905260009190848201906040850190845b81811015610baf5783516001600160a01b031683529284019291840191600101610b8a565b50909695505050505050565b60008060008060808587031215610bd157600080fd5b843593506020850135610be381610b21565b9250604085013567ffffffffffffffff80821115610c0057600080fd5b610c0c888389016109f2565b93506060870135915080821115610c2257600080fd5b50610c2f878288016109f2565b91505092959194509250565b60008060408385031215610c4e57600080fd5b8235610c5981610b21565b91506020830135610c6981610b21565b809150509250929050565b60008060408385031215610c8757600080fd5b8235610c9281610b21565b946020939093013593505050565b60008060408385031215610cb357600080fd5b823567ffffffffffffffff80821115610ccb57600080fd5b610cd7868387016109f2565b93506020850135915080821115610ced57600080fd5b50610cfa858286016109f2565b9150509250929050565b600060208284031215610d1657600080fd5b815161031181610b21565b600060208284031215610d3357600080fd5b5051919050565b838152600060208415158184015260606040840152835180606085015260005b81811015610d7657858101830151858201608001528201610d5a565b506000608082860101526080601f19601f83011685010192505050949350505050565b600060208284031215610dab57600080fd5b815163ffffffff8116811461031157600080fd5b600060208284031215610dd157600080fd5b8151801515811461031157600080fd5b634e487b7160e01b600052603260045260246000fd5b600060608284031215610e0957600080fd5b6040516060810181811067ffffffffffffffff82111715610e2c57610e2c6109dc565b8060405250825181526020830151602082015260408301516040820152809150509291505056fea2646970667358221220d49b3ebebafe62c6e7cb0efe3e5039da6b768a199f56d22f65591f67cf61607c64736f6c63430008100033\",\n \"sourceMap\": \"521:5593:201:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1749:44;;;;;;;;160:25:258;;;148:2;133:18;1749:44:201;;;;;;;;2415:78:188;;;2481:5;340:42:258;;328:2;313:18;2415:78:188;196:192:258;2784:136:201;;;;;;:::i;:::-;;:::i;:::-;;3535:217;;;;;;:::i;:::-;;:::i;2428:148::-;;;:::i;4087:82::-;;;4158:4;2507:41:258;;2495:2;2480:18;4087:82:201;2367:187:258;4599:925:201;;;;;;:::i;:::-;;:::i;5934:180:188:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3008:147:201:-;;;;;;:::i;:::-;;:::i;9204:107:188:-;;;;;;:::i;:::-;;:::i;1627:33:201:-;;;;;;;;-1:-1:-1;;;;;5100:32:258;;;5082:51;;5070:2;5055:18;1627:33:201;4917:222:258;3829:175:201;;;;;;:::i;:::-;;:::i;5774:338::-;;;;;;:::i;:::-;;:::i;3329:118::-;;;;;;:::i;:::-;3413:7;3329:118;;;;;2784:136;2876:37;;-1:-1:-1;;;2876:37:201;;;;;;;;;;;3535:217;3610:7;3629:18;3661:11;3650:34;;;;;;;;;;;;:::i;:::-;3701:44;;-1:-1:-1;;;3701:44:201;;-1:-1:-1;;;;;6740:15:258;;;3701:44:201;;;6722:34:258;3734:10:201;6772:18:258;;;6765:43;3629:55:201;;-1:-1:-1;3701:6:201;:20;;;;;;6657:18:258;;3701:44:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3694:51;3535:217;-1:-1:-1;;;3535:217:201:o;2428:148::-;2480:7;2516:52;;;;;;7210:2:258;7192:21;;;7249:2;7229:18;;;7222:30;7288:34;7283:2;7268:18;;7261:62;-1:-1:-1;;;7354:2:258;7339:18;;7332:36;7400:3;7385:19;;7008:402;2516:52:201;;;;;;;;;;;;;2506:63;;;;;;2499:70;;2428:148;:::o;4599:925::-;4799:20;4843:12;:10;:12::i;:::-;4863:22;;;-1:-1:-1;;;;;5100:32:258;;4863:22:201;;;5082:51:258;4857:4:201;;5055:18:258;4863:22:201;;;-1:-1:-1;;4863:22:201;;;;;;;;;;4832:54;;;;4863:22;4832:54;;:::i;:::-;;;;;;;;;;;;;4822:65;;;;;;4799:88;;4897:17;4932:4;-1:-1:-1;;;;;4917:30:201;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;4917:60:201;;4978:12;4917:74;;;;;;;;;;;;;160:25:258;;148:2;133:18;;14:177;4917:74:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5006:48;;-1:-1:-1;;;5006:48:201;;370:10:258;358:23;;5006:48:201;;;340:42:258;4897:94:201;;-1:-1:-1;5021:4:201;;5006:36;;313:18:258;;5006:48:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5001:142;;5075:68;;-1:-1:-1;;;5075:68:201;;-1:-1:-1;;;;;5100:32:258;;5075:68:201;;;5082:51:258;5055:18;;5075:68:201;;;;;;;;5001:142;5185:86;;-1:-1:-1;;;5185:86:201;;-1:-1:-1;;;;;9683:15:258;;;5185:86:201;;;9665:34:258;9715:18;;;9708:34;;;5235:4:201;9758:18:258;;;9751:43;;;9810:18;;;9803:43;9862:19;;;9855:35;;;5185:6:201;:13;;;;9599:19:258;;5185:86:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5344:20;5367:43;5388:6;5404:4;5367:20;:43::i;:::-;5344:66;;5439:19;5424:12;:34;5420:97;;;5467:50;;-1:-1:-1;;;5467:50:201;;;;;;;;;;;5420:97;4705:819;;;4599:925;;;:::o;5934:180:188:-;6051:14;;;6063:1;6051:14;;;;;;;;;6009:21;;6051:14;;;;;;;;;;;-1:-1:-1;6051:14:188;6042:23;;6087:20;6095:11;6087:7;:20::i;:::-;6075:6;6082:1;6075:9;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;6075:32:188;;;-1:-1:-1;;;;;6075:32:188;;;;;5934:180;;;:::o;3008:147:201:-;3110:38;;-1:-1:-1;;;3110:38:201;;;;;;;;;;;9204:107:188;9275:29;-1:-1:-1;;;;;9275:17:188;;9293:7;9302:1;9275:17;:29::i;:::-;9204:107;;:::o;3829:175:201:-;3902:5;3919:16;3949:11;3938:32;;;;;;;;;;;;:::i;5774:338::-;5865:56;-1:-1:-1;;;;;5865:24:201;;5898:6;5907:13;5865:24;:56::i;:::-;5931:65;;-1:-1:-1;;;5931:65:201;;-1:-1:-1;;;;;10562:15:258;;;5931:65:201;;;10544:34:258;10594:18;;;10587:34;;;5990:4:201;10637:18:258;;;10630:43;5931:6:201;:12;;;;10479:18:258;;5931:65:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6051:54;6075:12;6097:6;6051:23;:54::i;629:358:202:-;780:26;;-1:-1:-1;;;780:26:202;;-1:-1:-1;;;;;5100:32:258;;;780:26:202;;;5082:51:258;714:7:202;;;;780:20;;;;;5055:18:258;;780:26:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;733:73;;857:1;836:13;:18;;;:22;:144;;-1:-1:-1;;836:144:202;;;902:21;;;;925:18;;;;877:67;;885:4;;877:24;:67::i;:::-;817:163;629:358;-1:-1:-1;;;;629:358:202:o;4327:1454:104:-;4438:12;4565:4;4559:11;-1:-1:-1;;;4688:17:104;4681:93;4821:2;4817:1;4798:17;4794:25;4787:37;4901:6;4896:2;4877:17;4873:26;4866:42;5703:2;5700:1;5696:2;5677:17;5674:1;5667:5;5660;5655:51;5224:16;5217:24;5211:2;5193:16;5190:24;5186:1;5182;5176:8;5173:15;5169:46;5166:76;4966:754;4955:765;;;5748:7;5740:34;;;;-1:-1:-1;;;5740:34:104;;11458:2:258;5740:34:104;;;11440:21:258;11497:2;11477:18;;;11470:30;-1:-1:-1;;;11516:18:258;;;11509:44;11570:18;;5740:34:104;11256:338:258;5740:34:104;4428:1353;4327:1454;;;:::o;8158:167:188:-;8244:39;;-1:-1:-1;;;8244:39:188;;8268:4;8244:39;;;6722:34:258;-1:-1:-1;;;;;6792:15:258;;;6772:18;;;6765:43;8286:1:188;;8244:15;;;;;;6657:18:258;;8244:39:188;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;8240:78;;;8289:29;-1:-1:-1;;;;;8289:17:188;;8307:7;8316:1;8289:17;:29::i;1357:535:221:-;1563:9;;;1694:19;;1687:27;1719:9;;1733;;;1730:16;;1716:31;1683:65;1673:121;;1778:1;1775;1768:12;1673:121;1857:19;;1357:535;-1:-1:-1;;1357:535:221:o;393:127:258:-;454:10;449:3;445:20;442:1;435:31;485:4;482:1;475:15;509:4;506:1;499:15;525:718;567:5;620:3;613:4;605:6;601:17;597:27;587:55;;638:1;635;628:12;587:55;674:6;661:20;700:18;737:2;733;730:10;727:36;;;743:18;;:::i;:::-;818:2;812:9;786:2;872:13;;-1:-1:-1;;868:22:258;;;892:2;864:31;860:40;848:53;;;916:18;;;936:22;;;913:46;910:72;;;962:18;;:::i;:::-;1002:10;998:2;991:22;1037:2;1029:6;1022:18;1083:3;1076:4;1071:2;1063:6;1059:15;1055:26;1052:35;1049:55;;;1100:1;1097;1090:12;1049:55;1164:2;1157:4;1149:6;1145:17;1138:4;1130:6;1126:17;1113:54;1211:1;1204:4;1199:2;1191:6;1187:15;1183:26;1176:37;1231:6;1222:15;;;;;;525:718;;;;:::o;1248:607::-;1343:6;1351;1359;1412:2;1400:9;1391:7;1387:23;1383:32;1380:52;;;1428:1;1425;1418:12;1380:52;1464:9;1451:23;1441:33;;1525:2;1514:9;1510:18;1497:32;1548:18;1589:2;1581:6;1578:14;1575:34;;;1605:1;1602;1595:12;1575:34;1628:49;1669:7;1660:6;1649:9;1645:22;1628:49;:::i;:::-;1618:59;;1730:2;1719:9;1715:18;1702:32;1686:48;;1759:2;1749:8;1746:16;1743:36;;;1775:1;1772;1765:12;1743:36;;1798:51;1841:7;1830:8;1819:9;1815:24;1798:51;:::i;:::-;1788:61;;;1248:607;;;;;:::o;1860:320::-;1928:6;1981:2;1969:9;1960:7;1956:23;1952:32;1949:52;;;1997:1;1994;1987:12;1949:52;2037:9;2024:23;2070:18;2062:6;2059:30;2056:50;;;2102:1;2099;2092:12;2056:50;2125:49;2166:7;2157:6;2146:9;2142:22;2125:49;:::i;2559:131::-;-1:-1:-1;;;;;2634:31:258;;2624:42;;2614:70;;2680:1;2677;2670:12;2614:70;2559:131;:::o;2695:383::-;2772:6;2780;2788;2841:2;2829:9;2820:7;2816:23;2812:32;2809:52;;;2857:1;2854;2847:12;2809:52;2896:9;2883:23;2915:31;2940:5;2915:31;:::i;:::-;2965:5;3017:2;3002:18;;2989:32;;-1:-1:-1;3068:2:258;3053:18;;;3040:32;;2695:383;-1:-1:-1;;;2695:383:258:o;3083:673::-;3269:2;3321:21;;;3391:13;;3294:18;;;3413:22;;;3240:4;;3269:2;3492:15;;;;3466:2;3451:18;;;3240:4;3535:195;3549:6;3546:1;3543:13;3535:195;;;3614:13;;-1:-1:-1;;;;;3610:39:258;3598:52;;3705:15;;;;3670:12;;;;3646:1;3564:9;3535:195;;;-1:-1:-1;3747:3:258;;3083:673;-1:-1:-1;;;;;;3083:673:258:o;3761:743::-;3865:6;3873;3881;3889;3942:3;3930:9;3921:7;3917:23;3913:33;3910:53;;;3959:1;3956;3949:12;3910:53;3995:9;3982:23;3972:33;;4055:2;4044:9;4040:18;4027:32;4068:31;4093:5;4068:31;:::i;:::-;4118:5;-1:-1:-1;4174:2:258;4159:18;;4146:32;4197:18;4227:14;;;4224:34;;;4254:1;4251;4244:12;4224:34;4277:49;4318:7;4309:6;4298:9;4294:22;4277:49;:::i;:::-;4267:59;;4379:2;4368:9;4364:18;4351:32;4335:48;;4408:2;4398:8;4395:16;4392:36;;;4424:1;4421;4414:12;4392:36;;4447:51;4490:7;4479:8;4468:9;4464:24;4447:51;:::i;:::-;4437:61;;;3761:743;;;;;;;:::o;4509:403::-;4592:6;4600;4653:2;4641:9;4632:7;4628:23;4624:32;4621:52;;;4669:1;4666;4659:12;4621:52;4708:9;4695:23;4727:31;4752:5;4727:31;:::i;:::-;4777:5;-1:-1:-1;4834:2:258;4819:18;;4806:32;4847:33;4806:32;4847:33;:::i;:::-;4899:7;4889:17;;;4509:403;;;;;:::o;5367:330::-;5450:6;5458;5511:2;5499:9;5490:7;5486:23;5482:32;5479:52;;;5527:1;5524;5517:12;5479:52;5566:9;5553:23;5585:31;5610:5;5585:31;:::i;:::-;5635:5;5687:2;5672:18;;;;5659:32;;-1:-1:-1;;;5367:330:258:o;5702:539::-;5788:6;5796;5849:2;5837:9;5828:7;5824:23;5820:32;5817:52;;;5865:1;5862;5855:12;5817:52;5905:9;5892:23;5934:18;5975:2;5967:6;5964:14;5961:34;;;5991:1;5988;5981:12;5961:34;6014:49;6055:7;6046:6;6035:9;6031:22;6014:49;:::i;:::-;6004:59;;6116:2;6105:9;6101:18;6088:32;6072:48;;6145:2;6135:8;6132:16;6129:36;;;6161:1;6158;6151:12;6129:36;;6184:51;6227:7;6216:8;6205:9;6201:24;6184:51;:::i;:::-;6174:61;;;5702:539;;;;;:::o;6246:259::-;6324:6;6377:2;6365:9;6356:7;6352:23;6348:32;6345:52;;;6393:1;6390;6383:12;6345:52;6425:9;6419:16;6444:31;6469:5;6444:31;:::i;6819:184::-;6889:6;6942:2;6930:9;6921:7;6917:23;6913:32;6910:52;;;6958:1;6955;6948:12;6910:52;-1:-1:-1;6981:16:258;;6819:184;-1:-1:-1;6819:184:258:o;7623:701::-;7820:6;7809:9;7802:25;7783:4;7846:2;7898:6;7891:14;7884:22;7879:2;7868:9;7864:18;7857:50;7943:2;7938;7927:9;7923:18;7916:30;7975:6;7969:13;8018:6;8013:2;8002:9;7998:18;7991:34;8043:1;8053:141;8067:6;8064:1;8061:13;8053:141;;;8163:14;;;8159:23;;8153:30;8128:17;;;8147:3;8124:27;8117:67;8082:10;;8053:141;;;8057:3;8244:1;8238:3;8229:6;8218:9;8214:22;8210:32;8203:43;8314:3;8307:2;8303:7;8298:2;8290:6;8286:15;8282:29;8271:9;8267:45;8263:55;8255:63;;;;7623:701;;;;;;:::o;8603:280::-;8672:6;8725:2;8713:9;8704:7;8700:23;8696:32;8693:52;;;8741:1;8738;8731:12;8693:52;8773:9;8767:16;8823:10;8816:5;8812:22;8805:5;8802:33;8792:61;;8849:1;8846;8839:12;9086:277;9153:6;9206:2;9194:9;9185:7;9181:23;9177:32;9174:52;;;9222:1;9219;9212:12;9174:52;9254:9;9248:16;9307:5;9300:13;9293:21;9286:5;9283:32;9273:60;;9329:1;9326;9319:12;9901:127;9962:10;9957:3;9953:20;9950:1;9943:31;9993:4;9990:1;9983:15;10017:4;10014:1;10007:15;10684:567;10786:6;10839:2;10827:9;10818:7;10814:23;10810:32;10807:52;;;10855:1;10852;10845:12;10807:52;10888:2;10882:9;10930:2;10922:6;10918:15;10999:6;10987:10;10984:22;10963:18;10951:10;10948:34;10945:62;10942:88;;;11010:18;;:::i;:::-;11050:10;11046:2;11039:22;;11091:9;11085:16;11077:6;11070:32;11156:2;11145:9;11141:18;11135:25;11130:2;11122:6;11118:15;11111:50;11215:2;11204:9;11200:18;11194:25;11189:2;11181:6;11177:15;11170:50;11239:6;11229:16;;;10684:567;;;;:::o\",\n \"linkReferences\": {},\n \"immutableReferences\": {\n \"66313\": [\n {\n \"start\": 470,\n \"length\": 32\n },\n {\n \"start\": 676,\n \"length\": 32\n },\n {\n \"start\": 1406,\n \"length\": 32\n },\n {\n \"start\": 1523,\n \"length\": 32\n },\n {\n \"start\": 1822,\n \"length\": 32\n },\n {\n \"start\": 1903,\n \"length\": 32\n },\n {\n \"start\": 2019,\n \"length\": 32\n }\n ],\n \"66316\": [\n {\n \"start\": 244,\n \"length\": 32\n },\n {\n \"start\": 1564,\n \"length\": 32\n }\n ]\n }\n },\n \"methodIdentifiers\": {\n \"assetOf(bytes)\": \"e170a9bf\",\n \"assetsUsed(bytes)\": \"aeffddde\",\n \"balanceOf(bytes)\": \"78415365\",\n \"borrowFromAaveV3Morpho(address,uint256,uint256)\": \"a6cfba9a\",\n \"deposit(uint256,bytes,bytes)\": \"69445c31\",\n \"identifier()\": \"7998a1c4\",\n \"isDebt()\": \"89353a09\",\n \"minimumHealthFactor()\": \"1caff8b1\",\n \"morpho()\": \"d8fbc833\",\n \"repayAaveV3MorphoDebt(address,uint256)\": \"e5afd9b6\",\n \"revokeApproval(address,address)\": \"d3bfe76a\",\n \"slippage()\": \"3e032a3b\",\n \"withdraw(uint256,address,bytes,bytes)\": \"c9111bd7\",\n \"withdrawableFrom(bytes,bytes)\": \"fa50e5d2\"\n },\n \"rawMetadata\": \"{\\\"compiler\\\":{\\\"version\\\":\\\"0.8.16+commit.07a7930e\\\"},\\\"language\\\":\\\"Solidity\\\",\\\"output\\\":{\\\"abi\\\":[{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"_morpho\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"minHealthFactor\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"constructor\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__ConstructorHealthFactorTooLow\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__ExternalReceiverBlocked\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"BaseAdaptor__PricingNotSupported\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__Slippage\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__UserDepositsNotAllowed\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"BaseAdaptor__UserWithdrawsNotAllowed\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"untrackedDebtPosition\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"MorphoAaveV3DebtTokenAdaptor__DebtPositionsMustBeTracked\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"MorphoAaveV3DebtTokenAdaptor__HealthFactorTooLow\\\",\\\"type\\\":\\\"error\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"assetOf\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract ERC20\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"assetsUsed\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract ERC20[]\\\",\\\"name\\\":\\\"assets\\\",\\\"type\\\":\\\"address[]\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"adaptorData\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"balanceOf\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"underlying\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"amountToBorrow\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"maxIterations\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"borrowFromAaveV3Morpho\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"deposit\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"identifier\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"bytes32\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes32\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"isDebt\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"bool\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bool\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"minimumHealthFactor\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"morpho\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"contract IMorphoV3\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"}],\\\"stateMutability\\\":\\\"view\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"contract ERC20\\\",\\\"name\\\":\\\"tokenToRepay\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"amountToRepay\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"name\\\":\\\"repayAaveV3MorphoDebt\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"contract ERC20\\\",\\\"name\\\":\\\"asset\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"spender\\\",\\\"type\\\":\\\"address\\\"}],\\\"name\\\":\\\"revokeApproval\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"nonpayable\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[],\\\"name\\\":\\\"slippage\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint32\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint32\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"},{\\\"internalType\\\":\\\"address\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"address\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"withdraw\\\",\\\"outputs\\\":[],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"},{\\\"inputs\\\":[{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"},{\\\"internalType\\\":\\\"bytes\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"bytes\\\"}],\\\"name\\\":\\\"withdrawableFrom\\\",\\\"outputs\\\":[{\\\"internalType\\\":\\\"uint256\\\",\\\"name\\\":\\\"\\\",\\\"type\\\":\\\"uint256\\\"}],\\\"stateMutability\\\":\\\"pure\\\",\\\"type\\\":\\\"function\\\"}],\\\"devdoc\\\":{\\\"author\\\":\\\"crispymangoes\\\",\\\"errors\\\":{\\\"MorphoAaveV3DebtTokenAdaptor__DebtPositionsMustBeTracked(address)\\\":[{\\\"params\\\":{\\\"untrackedDebtPosition\\\":\\\"the address of the untracked loan\\\"}}]},\\\"kind\\\":\\\"dev\\\",\\\"methods\\\":{\\\"borrowFromAaveV3Morpho(address,uint256,uint256)\\\":{\\\"params\\\":{\\\"amountToBorrow\\\":\\\"the amount of `debtTokenToBorrow` to borrow on Morpho.\\\",\\\"underlying\\\":\\\"the debtToken to borrow on Morpho\\\"}},\\\"identifier()\\\":{\\\"details\\\":\\\"Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this Identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult.\\\"},\\\"repayAaveV3MorphoDebt(address,uint256)\\\":{\\\"params\\\":{\\\"amountToRepay\\\":\\\"the amount of `tokenToRepay` to repay with.\\\",\\\"tokenToRepay\\\":\\\"the underlying ERC20 token you want to repay, NOT the debtToken.\\\"}},\\\"revokeApproval(address,address)\\\":{\\\"params\\\":{\\\"asset\\\":\\\"the ERC20 asset to revoke `spender`s approval for\\\",\\\"spender\\\":\\\"the address to revoke approval for\\\"}}},\\\"title\\\":\\\"Morpho Aave V3 debtToken Adaptor\\\",\\\"version\\\":1},\\\"userdoc\\\":{\\\"errors\\\":{\\\"BaseAdaptor__ConstructorHealthFactorTooLow()\\\":[{\\\"notice\\\":\\\"Attempted to set a constructor minimum health factor to a value below `MINIMUM_CONSTRUCTOR_HEALTH_FACTOR()`.\\\"}],\\\"BaseAdaptor__ExternalReceiverBlocked()\\\":[{\\\"notice\\\":\\\"Attempted to specify an external receiver during a Cellar `callOnAdaptor` call.\\\"}],\\\"BaseAdaptor__PricingNotSupported(address)\\\":[{\\\"notice\\\":\\\"Attempted swap used unsupported output asset.\\\"}],\\\"BaseAdaptor__Slippage()\\\":[{\\\"notice\\\":\\\"Attempted swap has bad slippage.\\\"}],\\\"BaseAdaptor__UserDepositsNotAllowed()\\\":[{\\\"notice\\\":\\\"Attempted to deposit to a position where user deposits were not allowed.\\\"}],\\\"BaseAdaptor__UserWithdrawsNotAllowed()\\\":[{\\\"notice\\\":\\\"Attempted to withdraw from a position where user withdraws were not allowed.\\\"}],\\\"MorphoAaveV3DebtTokenAdaptor__DebtPositionsMustBeTracked(address)\\\":[{\\\"notice\\\":\\\"Strategist attempted to open an untracked Morpho loan.\\\"}],\\\"MorphoAaveV3DebtTokenAdaptor__HealthFactorTooLow()\\\":[{\\\"notice\\\":\\\"Attempted borrow would lower Cellar health factor too low.\\\"}]},\\\"kind\\\":\\\"user\\\",\\\"methods\\\":{\\\"assetOf(bytes)\\\":{\\\"notice\\\":\\\"Returns the positions underlying asset.\\\"},\\\"assetsUsed(bytes)\\\":{\\\"notice\\\":\\\"When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup.\\\"},\\\"balanceOf(bytes)\\\":{\\\"notice\\\":\\\"Returns the cellars balance of the positions debt.\\\"},\\\"borrowFromAaveV3Morpho(address,uint256,uint256)\\\":{\\\"notice\\\":\\\"Allows strategists to borrow assets from Morpho.`debtTokenToBorrow` must be the debtToken, NOT the underlying ERC20.\\\"},\\\"deposit(uint256,bytes,bytes)\\\":{\\\"notice\\\":\\\"User deposits are NOT allowed into this position.\\\"},\\\"isDebt()\\\":{\\\"notice\\\":\\\"This adaptor reports values in terms of debt.\\\"},\\\"minimumHealthFactor()\\\":{\\\"notice\\\":\\\"Minimum Health Factor enforced after every borrow.\\\"},\\\"morpho()\\\":{\\\"notice\\\":\\\"The Morpho Aave V3 contract on current network.For mainnet use 0x33333aea097c193e66081E930c33020272b33333.\\\"},\\\"repayAaveV3MorphoDebt(address,uint256)\\\":{\\\"notice\\\":\\\"Allows strategists to repay loan debt on Morpho.\\\"},\\\"revokeApproval(address,address)\\\":{\\\"notice\\\":\\\"Allows strategists to zero out an approval for a given `asset`.\\\"},\\\"slippage()\\\":{\\\"notice\\\":\\\"Max possible slippage when making a swap router swap.\\\"},\\\"withdraw(uint256,address,bytes,bytes)\\\":{\\\"notice\\\":\\\"User withdraws are NOT allowed from this position.\\\"},\\\"withdrawableFrom(bytes,bytes)\\\":{\\\"notice\\\":\\\"This position is a debt position, and user withdraws are not allowed so this position must return 0 for withdrawableFrom.\\\"}},\\\"notice\\\":\\\"Allows Cellars to interact with Morpho Aave V3 debtToken positions.\\\",\\\"version\\\":1}},\\\"settings\\\":{\\\"compilationTarget\\\":{\\\"src/modules/adaptors/Morpho/MorphoAaveV3DebtTokenAdaptor.sol\\\":\\\"MorphoAaveV3DebtTokenAdaptor\\\"},\\\"evmVersion\\\":\\\"london\\\",\\\"libraries\\\":{},\\\"metadata\\\":{\\\"bytecodeHash\\\":\\\"ipfs\\\"},\\\"optimizer\\\":{\\\"enabled\\\":true,\\\"runs\\\":200},\\\"remappings\\\":[\\\":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/\\\",\\\":@balancer/=lib/balancer-v2-monorepo/pkg/\\\",\\\":@chainlink/=lib/chainlink/\\\",\\\":@ds-test/=lib/forge-std/lib/ds-test/src/\\\",\\\":@ensdomains/=node_modules/@ensdomains/\\\",\\\":@forge-std/=lib/forge-std/src/\\\",\\\":@openzeppelin/=lib/openzeppelin-contracts/\\\",\\\":@solmate/=lib/solmate/src/\\\",\\\":@uniswap/v3-core/=lib/v3-core/\\\",\\\":@uniswap/v3-periphery/=lib/v3-periphery/\\\",\\\":@uniswapV3C/=lib/v3-core/contracts/\\\",\\\":@uniswapV3P/=lib/v3-periphery/contracts/\\\",\\\":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/\\\",\\\":balancer-v2-monorepo/=lib/balancer-v2-monorepo/\\\",\\\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\\\",\\\":compound-protocol/=lib/compound-protocol/\\\",\\\":ds-test/=lib/forge-std/lib/ds-test/src/\\\",\\\":eth-gas-reporter/=node_modules/eth-gas-reporter/\\\",\\\":forge-std/=lib/forge-std/src/\\\",\\\":hardhat/=node_modules/hardhat/\\\",\\\":openzeppelin-contracts/=lib/openzeppelin-contracts/\\\",\\\":solmate/=lib/solmate/src/\\\",\\\":v3-core.git/=lib/v3-core.git/contracts/\\\",\\\":v3-core/=lib/v3-core/contracts/\\\",\\\":v3-periphery.git/=lib/v3-periphery.git/contracts/\\\",\\\":v3-periphery/=lib/v3-periphery/contracts/\\\"]},\\\"sources\\\":{\\\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\\\":{\\\"keccak256\\\":\\\"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\\\",\\\"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\\\"]},\\\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\\\":{\\\"keccak256\\\":\\\"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\\\",\\\"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\\\"]},\\\"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\\\":{\\\"keccak256\\\":\\\"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\\\",\\\"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\\\"]},\\\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\\\":{\\\"keccak256\\\":\\\"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\\\",\\\"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\\\"]},\\\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\\\":{\\\"keccak256\\\":\\\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\\\",\\\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\\\"]},\\\"lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol\\\":{\\\"keccak256\\\":\\\"0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf\\\",\\\"dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e\\\"]},\\\"lib/openzeppelin-contracts/contracts/utils/Address.sol\\\":{\\\"keccak256\\\":\\\"0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de\\\",\\\"dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V\\\"]},\\\"lib/openzeppelin-contracts/contracts/utils/Context.sol\\\":{\\\"keccak256\\\":\\\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\\\",\\\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\\\"]},\\\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\\\":{\\\"keccak256\\\":\\\"0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929\\\",\\\"dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg\\\"]},\\\"lib/solmate/src/auth/Owned.sol\\\":{\\\"keccak256\\\":\\\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\\\",\\\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\\\"]},\\\"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\\\":{\\\"keccak256\\\":\\\"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\\\",\\\"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\\\":{\\\"keccak256\\\":\\\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\\\",\\\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\\\":{\\\"keccak256\\\":\\\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\\\",\\\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\\\":{\\\"keccak256\\\":\\\"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\\\",\\\"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\\\":{\\\"keccak256\\\":\\\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\\\",\\\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\\\":{\\\"keccak256\\\":\\\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\\\",\\\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\\\":{\\\"keccak256\\\":\\\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\\\",\\\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\\\"]},\\\"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\\\":{\\\"keccak256\\\":\\\"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\\\",\\\"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\\\"]},\\\"lib/v3-core/contracts/libraries/FullMath.sol\\\":{\\\"keccak256\\\":\\\"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\\\",\\\"license\\\":\\\"MIT\\\",\\\"urls\\\":[\\\"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\\\",\\\"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\\\"]},\\\"lib/v3-core/contracts/libraries/TickMath.sol\\\":{\\\"keccak256\\\":\\\"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\\\",\\\"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\\\"]},\\\"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\\\":{\\\"keccak256\\\":\\\"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\\\",\\\"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\\\"]},\\\"src/Registry.sol\\\":{\\\"keccak256\\\":\\\"0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189\\\",\\\"dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK\\\"]},\\\"src/base/Cellar.sol\\\":{\\\"keccak256\\\":\\\"0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058\\\",\\\"dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs\\\"]},\\\"src/base/ERC20.sol\\\":{\\\"keccak256\\\":\\\"0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4\\\",\\\"dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf\\\"]},\\\"src/base/ERC4626.sol\\\":{\\\"keccak256\\\":\\\"0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469\\\",\\\"dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE\\\"]},\\\"src/base/Multicall.sol\\\":{\\\"keccak256\\\":\\\"0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c\\\",\\\"dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K\\\"]},\\\"src/base/SafeTransferLib.sol\\\":{\\\"keccak256\\\":\\\"0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324\\\",\\\"license\\\":\\\"AGPL-3.0-only\\\",\\\"urls\\\":[\\\"bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a\\\",\\\"dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3\\\"]},\\\"src/interfaces/IMulticall.sol\\\":{\\\"keccak256\\\":\\\"0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0\\\",\\\"dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5\\\"]},\\\"src/interfaces/external/IChainlinkAggregator.sol\\\":{\\\"keccak256\\\":\\\"0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2\\\",\\\"dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs\\\"]},\\\"src/interfaces/external/IGravity.sol\\\":{\\\"keccak256\\\":\\\"0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51\\\",\\\"dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c\\\"]},\\\"src/interfaces/external/IUniswapV2Router02.sol\\\":{\\\"keccak256\\\":\\\"0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a\\\",\\\"dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo\\\"]},\\\"src/interfaces/external/IUniswapV3Router.sol\\\":{\\\"keccak256\\\":\\\"0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355\\\",\\\"license\\\":\\\"GPL-2.0-or-later\\\",\\\"urls\\\":[\\\"bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd\\\",\\\"dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK\\\"]},\\\"src/interfaces/external/Morpho/IMorphoV3.sol\\\":{\\\"keccak256\\\":\\\"0xb7d9b09efb93ccd8deacb62a899512f2e8d467682158dc73e936c27aedba3dd9\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://6ed4d09ea863c00bad9b19e1b8bc1ab8568a5b1c972b2ef4c02901f019d58241\\\",\\\"dweb:/ipfs/Qmd4873kMieGZd4K5BuKU6eCPxmczFEQ8BqaGyVbh3YtYE\\\"]},\\\"src/interfaces/external/UniswapV3Pool.sol\\\":{\\\"keccak256\\\":\\\"0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb\\\",\\\"urls\\\":[\\\"bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9\\\",\\\"dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh\\\"]},\\\"src/modules/adaptors/BaseAdaptor.sol\\\":{\\\"keccak256\\\":\\\"0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee\\\",\\\"dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd\\\"]},\\\"src/modules/adaptors/Morpho/MorphoAaveV3DebtTokenAdaptor.sol\\\":{\\\"keccak256\\\":\\\"0x141aef427919f12f7fce953ba5ed28616bab4cb8359db03914ee0cde943ba352\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://f838a11b43353bf9734526aa4b45b7668ca4cff16361321de6c112026a7e526c\\\",\\\"dweb:/ipfs/QmS5ebjUjMHbcqGxd54cUSkweUmZXs5G7TWg7Q28qccffo\\\"]},\\\"src/modules/adaptors/Morpho/MorphoAaveV3HealthFactorLogic.sol\\\":{\\\"keccak256\\\":\\\"0x2e5863d04838373cd7d8e5bb96105bbd170b5b99faaf7aa22b58be42d433ed9f\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://c246aee962bb5a21a4ee17b87b6b30b1eef98c21facd43724d3e4c972da37188\\\",\\\"dweb:/ipfs/QmWH8Aq1V9RUPCxQhdBeACy2RGxznub6J7cKE6hqK55Aoh\\\"]},\\\"src/modules/price-router/Extensions/Extension.sol\\\":{\\\"keccak256\\\":\\\"0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1\\\",\\\"dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo\\\"]},\\\"src/modules/price-router/PriceRouter.sol\\\":{\\\"keccak256\\\":\\\"0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66\\\",\\\"dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K\\\"]},\\\"src/modules/swap-router/SwapRouter.sol\\\":{\\\"keccak256\\\":\\\"0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818\\\",\\\"dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr\\\"]},\\\"src/utils/Math.sol\\\":{\\\"keccak256\\\":\\\"0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312\\\",\\\"dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r\\\"]},\\\"src/utils/Uint32Array.sol\\\":{\\\"keccak256\\\":\\\"0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9\\\",\\\"license\\\":\\\"Apache-2.0\\\",\\\"urls\\\":[\\\"bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944\\\",\\\"dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3\\\"]}},\\\"version\\\":1}\",\n \"metadata\": {\n \"compiler\": {\n \"version\": \"0.8.16+commit.07a7930e\"\n },\n \"language\": \"Solidity\",\n \"output\": {\n \"abi\": [\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_morpho\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"minHealthFactor\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__ConstructorHealthFactorTooLow\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__ExternalReceiverBlocked\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"asset\",\n \"type\": \"address\"\n }\n ],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__PricingNotSupported\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__Slippage\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__UserDepositsNotAllowed\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"BaseAdaptor__UserWithdrawsNotAllowed\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"untrackedDebtPosition\",\n \"type\": \"address\"\n }\n ],\n \"type\": \"error\",\n \"name\": \"MorphoAaveV3DebtTokenAdaptor__DebtPositionsMustBeTracked\"\n },\n {\n \"inputs\": [],\n \"type\": \"error\",\n \"name\": \"MorphoAaveV3DebtTokenAdaptor__HealthFactorTooLow\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"assetOf\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"assetsUsed\",\n \"outputs\": [\n {\n \"internalType\": \"contract ERC20[]\",\n \"name\": \"assets\",\n \"type\": \"address[]\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"adaptorData\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"balanceOf\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"underlying\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountToBorrow\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"maxIterations\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"borrowFromAaveV3Morpho\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"deposit\"\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"identifier\",\n \"outputs\": [\n {\n \"internalType\": \"bytes32\",\n \"name\": \"\",\n \"type\": \"bytes32\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"isDebt\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"minimumHealthFactor\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ]\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"view\",\n \"type\": \"function\",\n \"name\": \"morpho\",\n \"outputs\": [\n {\n \"internalType\": \"contract IMorphoV3\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"tokenToRepay\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"amountToRepay\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"repayAaveV3MorphoDebt\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"contract ERC20\",\n \"name\": \"asset\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"spender\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\",\n \"name\": \"revokeApproval\"\n },\n {\n \"inputs\": [],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"slippage\",\n \"outputs\": [\n {\n \"internalType\": \"uint32\",\n \"name\": \"\",\n \"type\": \"uint32\"\n }\n ]\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"withdraw\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n },\n {\n \"internalType\": \"bytes\",\n \"name\": \"\",\n \"type\": \"bytes\"\n }\n ],\n \"stateMutability\": \"pure\",\n \"type\": \"function\",\n \"name\": \"withdrawableFrom\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ]\n }\n ],\n \"devdoc\": {\n \"kind\": \"dev\",\n \"methods\": {\n \"borrowFromAaveV3Morpho(address,uint256,uint256)\": {\n \"params\": {\n \"amountToBorrow\": \"the amount of `debtTokenToBorrow` to borrow on Morpho.\",\n \"underlying\": \"the debtToken to borrow on Morpho\"\n }\n },\n \"identifier()\": {\n \"details\": \"Identifier unique to this adaptor for a shared registry. Normally the identifier would just be the address of this contract, but this Identifier is needed during Cellar Delegate Call Operations, so getting the address of the adaptor is more difficult.\"\n },\n \"repayAaveV3MorphoDebt(address,uint256)\": {\n \"params\": {\n \"amountToRepay\": \"the amount of `tokenToRepay` to repay with.\",\n \"tokenToRepay\": \"the underlying ERC20 token you want to repay, NOT the debtToken.\"\n }\n },\n \"revokeApproval(address,address)\": {\n \"params\": {\n \"asset\": \"the ERC20 asset to revoke `spender`s approval for\",\n \"spender\": \"the address to revoke approval for\"\n }\n }\n },\n \"version\": 1\n },\n \"userdoc\": {\n \"kind\": \"user\",\n \"methods\": {\n \"assetOf(bytes)\": {\n \"notice\": \"Returns the positions underlying asset.\"\n },\n \"assetsUsed(bytes)\": {\n \"notice\": \"When positions are added to the Registry, this function can be used in order to figure out what assets this adaptor needs to price, and confirm pricing is properly setup.\"\n },\n \"balanceOf(bytes)\": {\n \"notice\": \"Returns the cellars balance of the positions debt.\"\n },\n \"borrowFromAaveV3Morpho(address,uint256,uint256)\": {\n \"notice\": \"Allows strategists to borrow assets from Morpho.`debtTokenToBorrow` must be the debtToken, NOT the underlying ERC20.\"\n },\n \"deposit(uint256,bytes,bytes)\": {\n \"notice\": \"User deposits are NOT allowed into this position.\"\n },\n \"isDebt()\": {\n \"notice\": \"This adaptor reports values in terms of debt.\"\n },\n \"minimumHealthFactor()\": {\n \"notice\": \"Minimum Health Factor enforced after every borrow.\"\n },\n \"morpho()\": {\n \"notice\": \"The Morpho Aave V3 contract on current network.For mainnet use 0x33333aea097c193e66081E930c33020272b33333.\"\n },\n \"repayAaveV3MorphoDebt(address,uint256)\": {\n \"notice\": \"Allows strategists to repay loan debt on Morpho.\"\n },\n \"revokeApproval(address,address)\": {\n \"notice\": \"Allows strategists to zero out an approval for a given `asset`.\"\n },\n \"slippage()\": {\n \"notice\": \"Max possible slippage when making a swap router swap.\"\n },\n \"withdraw(uint256,address,bytes,bytes)\": {\n \"notice\": \"User withdraws are NOT allowed from this position.\"\n },\n \"withdrawableFrom(bytes,bytes)\": {\n \"notice\": \"This position is a debt position, and user withdraws are not allowed so this position must return 0 for withdrawableFrom.\"\n }\n },\n \"version\": 1\n }\n },\n \"settings\": {\n \"remappings\": [\n \":@balancer-labs/=lib/balancer-v2-monorepo/../../node_modules/@balancer-labs/\",\n \":@balancer/=lib/balancer-v2-monorepo/pkg/\",\n \":@chainlink/=lib/chainlink/\",\n \":@ds-test/=lib/forge-std/lib/ds-test/src/\",\n \":@ensdomains/=node_modules/@ensdomains/\",\n \":@forge-std/=lib/forge-std/src/\",\n \":@openzeppelin/=lib/openzeppelin-contracts/\",\n \":@solmate/=lib/solmate/src/\",\n \":@uniswap/v3-core/=lib/v3-core/\",\n \":@uniswap/v3-periphery/=lib/v3-periphery/\",\n \":@uniswapV3C/=lib/v3-core/contracts/\",\n \":@uniswapV3P/=lib/v3-periphery/contracts/\",\n \":axelar-gmp-sdk-solidity/=lib/axelar-gmp-sdk-solidity/contracts/\",\n \":balancer-v2-monorepo/=lib/balancer-v2-monorepo/\",\n \":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\n \":compound-protocol/=lib/compound-protocol/\",\n \":ds-test/=lib/forge-std/lib/ds-test/src/\",\n \":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\n \":forge-std/=lib/forge-std/src/\",\n \":hardhat/=node_modules/hardhat/\",\n \":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\n \":solmate/=lib/solmate/src/\",\n \":v3-core.git/=lib/v3-core.git/contracts/\",\n \":v3-core/=lib/v3-core/contracts/\",\n \":v3-periphery.git/=lib/v3-periphery.git/contracts/\",\n \":v3-periphery/=lib/v3-periphery/contracts/\"\n ],\n \"optimizer\": {\n \"enabled\": true,\n \"runs\": 200\n },\n \"metadata\": {\n \"bytecodeHash\": \"ipfs\"\n },\n \"compilationTarget\": {\n \"src/modules/adaptors/Morpho/MorphoAaveV3DebtTokenAdaptor.sol\": \"MorphoAaveV3DebtTokenAdaptor\"\n },\n \"libraries\": {}\n },\n \"sources\": {\n \"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorInterface.sol\": {\n \"keccak256\": \"0xb496651006b9a2a07920ffe116928b11e2a6458e21361cecca51409522488ca7\",\n \"urls\": [\n \"bzz-raw://f39ad60071af2c115e064ebeb1686097efa83b26da0e2c814c635538538b7465\",\n \"dweb:/ipfs/QmYRARVDA1XZUqZNKNnArYHWbffNeeSVZQjt67ZXKGm85a\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV2V3Interface.sol\": {\n \"keccak256\": \"0x4a7757ff7bbafe044cd49c2a45c7c18ec50eff7c7af6869face5e1e9cda976f2\",\n \"urls\": [\n \"bzz-raw://7c3f481f69f3ee07d6bb91b38d1cd61f9fa72de29c63d778c98956db70ecd57b\",\n \"dweb:/ipfs/QmPeJrNHTZF8CrXk3BgLJCamwf1dUEzHyQsMYrdd4v1NEG\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol\": {\n \"keccak256\": \"0x6e6e4b0835904509406b070ee173b5bc8f677c19421b76be38aea3b1b3d30846\",\n \"urls\": [\n \"bzz-raw://b3beaa37ee61e4ab615e250fbf01601ae481de843fd0ef55e6b44fd9d5fff8a7\",\n \"dweb:/ipfs/QmeZUVwd26LzK4Mfp8Zba5JbQNkZFfTzFu1A6FVMMZDg9c\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/access/Ownable.sol\": {\n \"keccak256\": \"0xa94b34880e3c1b0b931662cb1c09e5dfa6662f31cba80e07c5ee71cd135c9673\",\n \"urls\": [\n \"bzz-raw://40fb1b5102468f783961d0af743f91b9980cf66b50d1d12009f6bb1869cea4d2\",\n \"dweb:/ipfs/QmYqEbJML4jB1GHbzD4cUZDtJg5wVwNm3vDJq1GbyDus8y\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\": {\n \"keccak256\": \"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\n \"urls\": [\n \"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\n \"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol\": {\n \"keccak256\": \"0x0108bf6a6ebd5f96678bed33a35947537263f96766131ee91461fb6485805028\",\n \"urls\": [\n \"bzz-raw://ae2d274bf3d56a6d49a9bbd0a4871c54997a82551eb3eb1c0c39dc98698ff8bf\",\n \"dweb:/ipfs/QmTT7ty5DPGAmRnx94Xu3TUDYGSPDVLN2bppJAjjedrg1e\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/utils/Address.sol\": {\n \"keccak256\": \"0xb94eac067c85cd79a4195c0a1f4a878e9827329045c12475a0199f1ae17b9700\",\n \"urls\": [\n \"bzz-raw://2ad84b5dbf40ba9e944cc25bd0a98c51bafd49cff30efe5ef5aef921a70081de\",\n \"dweb:/ipfs/Qme8iCeqe9VdNgWktTTsSxUfHcJEXuvPaJpshWDzoWj56V\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/utils/Context.sol\": {\n \"keccak256\": \"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\n \"urls\": [\n \"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\n \"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\": {\n \"keccak256\": \"0x182ad835742e188a50bc98b938287d28bf74ad87d01e2bbc1d207c2ba36e1adb\",\n \"urls\": [\n \"bzz-raw://c2ba26b6252bb52b39ffb18b2de027544619e3f71b78e5476eba52becfaae929\",\n \"dweb:/ipfs/Qmb7NqEzs7aWkrzpskxXCRb799XmPenZMDtpzRvNUph1Bg\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/solmate/src/auth/Owned.sol\": {\n \"keccak256\": \"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\n \"urls\": [\n \"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\n \"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"lib/v3-core/contracts/interfaces/IUniswapV3Pool.sol\": {\n \"keccak256\": \"0x4e64844c56061cd90e0a80de73534a9166704c43eed579eb83f90bc2780ce968\",\n \"urls\": [\n \"bzz-raw://cba4fab5cebdddf644b901994a7f0f52b98885d4c56012f4dc51d52c2bf9de0e\",\n \"dweb:/ipfs/QmVyyrRmqXrAiapewWunRVgiPVFJHpH2hKiE1py1svMSNV\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\": {\n \"keccak256\": \"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\n \"urls\": [\n \"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\n \"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\": {\n \"keccak256\": \"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\n \"urls\": [\n \"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\n \"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolErrors.sol\": {\n \"keccak256\": \"0xf80abf13fb1fafc127ba4e792f240dd8ea7c8c893978cdfd8439c27fae9a037b\",\n \"urls\": [\n \"bzz-raw://b04fc72a656bbf3631e9c2e67b9870a2d9d235185e833fe050e9606e6816a9aa\",\n \"dweb:/ipfs/QmUcz4bkEkJ9pwzFu1C3n97hBQ3st9U6qTAqCdyFwddKco\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\": {\n \"keccak256\": \"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\n \"urls\": [\n \"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\n \"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\": {\n \"keccak256\": \"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\n \"urls\": [\n \"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\n \"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\": {\n \"keccak256\": \"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\n \"urls\": [\n \"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\n \"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\": {\n \"keccak256\": \"0x44fa2ce1182f6c2f6bead3d1737804bf7e112252ae86e0f2e92f9b8249603f43\",\n \"urls\": [\n \"bzz-raw://54154e8665b98d65f5dc91b256551852cb47882180b501b260657122d207c0ea\",\n \"dweb:/ipfs/QmcfemK1A2PXYrWB5SBFGERpMCderbFRb8BtTzQDj1sUBp\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-core/contracts/libraries/FullMath.sol\": {\n \"keccak256\": \"0x7825565a4bb2a34a1dc96bbfead755785dfb0df8ef81bd934c43023689685645\",\n \"urls\": [\n \"bzz-raw://8f44f4614d31e3d4864c7eb13620555253b84f6a69180f8745b7c6e246a9d125\",\n \"dweb:/ipfs/QmfNQUcXj3KL8h9u5PqbtEC6yRtwDbKNb48uMPjdwxsKnd\"\n ],\n \"license\": \"MIT\"\n },\n \"lib/v3-core/contracts/libraries/TickMath.sol\": {\n \"keccak256\": \"0x5c57de03a91cc2ec8939865dbbcb0197bb6c353b711075eefd8e0fca5e102129\",\n \"urls\": [\n \"bzz-raw://1e994c24fd891ef8a3f5dbf5eba42b34feaf05e0376a29f91322faa18054449c\",\n \"dweb:/ipfs/QmNdUJGUQxd1dPkMbnA5f5UNqakxRkQE5r7bTZJAuHeapS\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"lib/v3-periphery/contracts/libraries/OracleLibrary.sol\": {\n \"keccak256\": \"0xe313f89c69c0f1c91f0722868313b4ceb14479b3e7a0abf52a1b9bbd9c18e81b\",\n \"urls\": [\n \"bzz-raw://8ad09b061f3f533c116618c20cf01510108eebebb7ff8847b0f245b8ba368d53\",\n \"dweb:/ipfs/QmU6vdi5JjJfjK2KqonWvRg9NeuQWarj4B1YFN22Dh9VJM\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/Registry.sol\": {\n \"keccak256\": \"0x797eca06ed2adc548ca9bcc2b5565437e50862807f1014fcb90f733c4ecc9e47\",\n \"urls\": [\n \"bzz-raw://5d11adaa81c94efbb8ad46c031888d7a9e3a2fb41e61356f7423b0c1be8a3189\",\n \"dweb:/ipfs/QmNvQ4qg7p7zphqctgKyQeuAMVXkcA8pTtb2XgNiBKf2jK\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/base/Cellar.sol\": {\n \"keccak256\": \"0xcc435fc48edc29fa9119d9e7bbeea84e0e210368d525656a0f6d2dd3e6186f47\",\n \"urls\": [\n \"bzz-raw://a1ae5e4dfdaa91b2fc59574669951f009f74e70682a2b058fd99c0df3c8b9058\",\n \"dweb:/ipfs/QmNigVHjunwDjvjQAp9NxgR6vRsGu8fzrjH7EgE4T3bdWs\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/base/ERC20.sol\": {\n \"keccak256\": \"0x6aeb5d5df72734774379b54cf7fdce21206275047f4fcaa536448fefb1bd7b02\",\n \"urls\": [\n \"bzz-raw://e9d380b96bb23fe5e04a4a1f97e047c43dab65c9bbb69c9e0bf0def04fa042e4\",\n \"dweb:/ipfs/QmdNwDQXnNxbvxaAhiNDjvEdLC8qtom43H2d68NMAyrtyf\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"src/base/ERC4626.sol\": {\n \"keccak256\": \"0x13989d2c6e0dcda91407ffb7c28a52ab627db289a4d75dd5f3e4deb219dca9e7\",\n \"urls\": [\n \"bzz-raw://d493aa7fdcb779cd22f6b89089964ece46ea6d4fa0f99858cf181efb4cbee469\",\n \"dweb:/ipfs/QmZ2zHAHNmGi3iGcynGcPSppW97xYPh3yHDnxW7Ev7RasE\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"src/base/Multicall.sol\": {\n \"keccak256\": \"0xcbb4381e9a730f94f98b2712167a6b369c27088d56dc1c1c45dff3b9f67626b9\",\n \"urls\": [\n \"bzz-raw://b44d36d06c372cd871596a1147f69cc4a5fee42a0619517797db1c4426cc7b8c\",\n \"dweb:/ipfs/QmYeevkoTG2RmUPNzjikoJwp4SQkdSs9iPj7hjQh2Y9e5K\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/base/SafeTransferLib.sol\": {\n \"keccak256\": \"0xb57fc6788a996b929a66b113fc47e5819778ce05e9f29beb9dd9ab2e26b22324\",\n \"urls\": [\n \"bzz-raw://5dbce65cf972cbb4ea1173b4590ccbbdd134c24ad144484d2b9eb3006fdb860a\",\n \"dweb:/ipfs/QmeRkh21aTiZ9kiFr8grzFDzJvbydWeowZEBkG5kxtfQN3\"\n ],\n \"license\": \"AGPL-3.0-only\"\n },\n \"src/interfaces/IMulticall.sol\": {\n \"keccak256\": \"0xd10f58af0778cfc7f3758154066fc0ebbd3e360b1a6959c283ccf7c2a9e9634e\",\n \"urls\": [\n \"bzz-raw://b218fd6c1571e3a16e8dc75f0237f797905b9a449d523e48d9dcb99473ed6ba0\",\n \"dweb:/ipfs/Qmet1GzEJ3Fq1FbKhr3MNFb8LpUkx37ynFCvoFKjkmBCU5\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/interfaces/external/IChainlinkAggregator.sol\": {\n \"keccak256\": \"0x5fc642cff679c1cc6e93b5eadd2089b6adb85a1a8c46106388c836a1447e228d\",\n \"urls\": [\n \"bzz-raw://9f6a5dc12a8d3c06463eb6ed638349fd0502d7fedb75da873f888416755ea3b2\",\n \"dweb:/ipfs/QmdDnsLaaGvKKxuvdGTiroKrXMP3eW75GjSW3HK7GySfVs\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/IGravity.sol\": {\n \"keccak256\": \"0xb862f0644274b9c268f508e9dc880770962b9095f340695a97a1cb2eb9789a11\",\n \"urls\": [\n \"bzz-raw://533a9626cafd2260be6aa9cd9fbe305eb60e4208e43119c17ac0d33d41d07c51\",\n \"dweb:/ipfs/QmdmsXd9oozXdmCP4Fyt59VtKqm1spMgtU21LeuS85nG4c\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/IUniswapV2Router02.sol\": {\n \"keccak256\": \"0xee672165cfe63278b41b7e9c0ae34ad18d75f432c6c5583e9940c207a1a2464f\",\n \"urls\": [\n \"bzz-raw://10443d195fd79197bb27b110345d5cef5b49fc1acff5e82164abd8cd04cbf47a\",\n \"dweb:/ipfs/QmNnVhv7YNuMWUS7S1kDpZLAcoKdmSm9ADwGoxL5wgzTGo\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/IUniswapV3Router.sol\": {\n \"keccak256\": \"0x2c8578bd46f2de289ca1eb8c7a5c4412f3abdc6d61acbb07ec565ff1e5e80355\",\n \"urls\": [\n \"bzz-raw://f2b82a6d1fc71e09611d80dce96286f0546d1629bdee4e3686d6d528473187fd\",\n \"dweb:/ipfs/QmciPSKvHDjnFHRtjDwmdoiihwtDCFRZu1wfjnxuhYivMK\"\n ],\n \"license\": \"GPL-2.0-or-later\"\n },\n \"src/interfaces/external/Morpho/IMorphoV3.sol\": {\n \"keccak256\": \"0xb7d9b09efb93ccd8deacb62a899512f2e8d467682158dc73e936c27aedba3dd9\",\n \"urls\": [\n \"bzz-raw://6ed4d09ea863c00bad9b19e1b8bc1ab8568a5b1c972b2ef4c02901f019d58241\",\n \"dweb:/ipfs/Qmd4873kMieGZd4K5BuKU6eCPxmczFEQ8BqaGyVbh3YtYE\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/interfaces/external/UniswapV3Pool.sol\": {\n \"keccak256\": \"0xf6a71bfbc0665b1d0aad7148b685f3b2254e1be2a3672c2c6671b7fc20db26bb\",\n \"urls\": [\n \"bzz-raw://393871fdf75656c49a3bb83bc8110a93af2cbd805df9cc6574a058f3cbf100a9\",\n \"dweb:/ipfs/QmZugnPctGBiWkFjXXtiKy3AQTWphA9tjZmSBVZRMg9urh\"\n ],\n \"license\": null\n },\n \"src/modules/adaptors/BaseAdaptor.sol\": {\n \"keccak256\": \"0xc3d6ce867d0df59d4f4ea027bcbc8d982a89d782c648753d3ef149e1679afc5c\",\n \"urls\": [\n \"bzz-raw://98eed0613a68c44fb9df313b345ae0b984934cb677f144a1a5a2d0efe604c4ee\",\n \"dweb:/ipfs/Qmc6dt8S571ibT3DLGqFYRKKk2tgjADi8qpN6kDgm8N7sd\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/adaptors/Morpho/MorphoAaveV3DebtTokenAdaptor.sol\": {\n \"keccak256\": \"0x141aef427919f12f7fce953ba5ed28616bab4cb8359db03914ee0cde943ba352\",\n \"urls\": [\n \"bzz-raw://f838a11b43353bf9734526aa4b45b7668ca4cff16361321de6c112026a7e526c\",\n \"dweb:/ipfs/QmS5ebjUjMHbcqGxd54cUSkweUmZXs5G7TWg7Q28qccffo\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/adaptors/Morpho/MorphoAaveV3HealthFactorLogic.sol\": {\n \"keccak256\": \"0x2e5863d04838373cd7d8e5bb96105bbd170b5b99faaf7aa22b58be42d433ed9f\",\n \"urls\": [\n \"bzz-raw://c246aee962bb5a21a4ee17b87b6b30b1eef98c21facd43724d3e4c972da37188\",\n \"dweb:/ipfs/QmWH8Aq1V9RUPCxQhdBeACy2RGxznub6J7cKE6hqK55Aoh\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/price-router/Extensions/Extension.sol\": {\n \"keccak256\": \"0xd51d51474759b8417232e02290814bc7a06223ad5e57c93459d90a1101db558d\",\n \"urls\": [\n \"bzz-raw://0b5670880f335e48eda45ae95d9faa9a009885613c78634ab66114a2f842f1b1\",\n \"dweb:/ipfs/QmNddDkfvh36LtqrSVkDYKtxyWLv2Heb3hTrBVcUZJxJRo\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/price-router/PriceRouter.sol\": {\n \"keccak256\": \"0xa2a1aaeef9be7a72077cc30f1f408dae924ee4b7e25d2ee85491622410b821b9\",\n \"urls\": [\n \"bzz-raw://627e4d92a619543f08f916ec6279252d577adbd120fa2e8c2a8635d70c5a7a66\",\n \"dweb:/ipfs/QmTu6mJiHBUFFEXHRE6KpxE5J2W72fJWdMuvaSopD1Gk1K\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/modules/swap-router/SwapRouter.sol\": {\n \"keccak256\": \"0x2cc9c40333f0cb43d937124d8db088334e48280c8af2b9ebef7675daf167eb80\",\n \"urls\": [\n \"bzz-raw://87efec51915ae91561e3ee7ea97f3a0daff4826c0f5974ba404f4fa25aa46818\",\n \"dweb:/ipfs/QmSig68SbFz12nvm3MkLVvtyKQMFX8W1tMNqn6RCNhAVGr\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/utils/Math.sol\": {\n \"keccak256\": \"0xdec791a31325162117ed7856d7042f3f58885d29044a5ab7fa266a68551c485f\",\n \"urls\": [\n \"bzz-raw://87be5c0da99226925af33c0121802fc009ddee39becdcce2e60db01813bc8312\",\n \"dweb:/ipfs/QmXxgS5tfWBQF5pYHoX5HMbcRMW27iTALZGKyyVuAi7A8r\"\n ],\n \"license\": \"Apache-2.0\"\n },\n \"src/utils/Uint32Array.sol\": {\n \"keccak256\": \"0x418cd655203ebf671b76cbae3a1594c44356b5ca91c9f9e7eb5de07013e300d9\",\n \"urls\": [\n \"bzz-raw://b31b9db2d85bd7c41949307ef37903ff347f57b21f4b8d81a637dbfc1deed944\",\n \"dweb:/ipfs/QmScY9Jm2rsihu7QToNYuxLWADjmRjwxbScEGRwvXK29p3\"\n ],\n \"license\": \"Apache-2.0\"\n }\n },\n \"version\": 1\n },\n \"ast\": {\n \"absolutePath\": \"src/modules/adaptors/Morpho/MorphoAaveV3DebtTokenAdaptor.sol\",\n \"id\": 66591,\n \"exportedSymbols\": {\n \"BaseAdaptor\": [\n 61644\n ],\n \"Cellar\": [\n 44434\n ],\n \"ERC20\": [\n 45747\n ],\n \"IMorphoV3\": [\n 53563\n ],\n \"Math\": [\n 74811\n ],\n \"MorphoAaveV3DebtTokenAdaptor\": [\n 66590\n ],\n \"MorphoAaveV3HealthFactorLogic\": [\n 66644\n ],\n \"Registry\": [\n 41024\n ],\n \"SafeTransferLib\": [\n 46498\n ]\n },\n \"nodeType\": \"SourceUnit\",\n \"src\": \"39:6076:201\",\n \"nodes\": [\n {\n \"id\": 66278,\n \"nodeType\": \"PragmaDirective\",\n \"src\": \"39:23:201\",\n \"nodes\": [],\n \"literals\": [\n \"solidity\",\n \"0.8\",\n \".16\"\n ]\n },\n {\n \"id\": 66285,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"64:115:201\",\n \"nodes\": [],\n \"absolutePath\": \"src/modules/adaptors/BaseAdaptor.sol\",\n \"file\": \"src/modules/adaptors/BaseAdaptor.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 66591,\n \"sourceUnit\": 61645,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 66279,\n \"name\": \"BaseAdaptor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61644,\n \"src\": \"73:11:201\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 66280,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 45747,\n \"src\": \"86:5:201\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 66281,\n \"name\": \"SafeTransferLib\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 46498,\n \"src\": \"93:15:201\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 66282,\n \"name\": \"Cellar\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 44434,\n \"src\": \"110:6:201\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 66283,\n \"name\": \"Registry\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 41024,\n \"src\": \"118:8:201\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n },\n {\n \"foreign\": {\n \"id\": 66284,\n \"name\": \"Math\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 74811,\n \"src\": \"128:4:201\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 66287,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"180:73:201\",\n \"nodes\": [],\n \"absolutePath\": \"src/interfaces/external/Morpho/IMorphoV3.sol\",\n \"file\": \"src/interfaces/external/Morpho/IMorphoV3.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 66591,\n \"sourceUnit\": 53564,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 66286,\n \"name\": \"IMorphoV3\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53563,\n \"src\": \"189:9:201\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 66289,\n \"nodeType\": \"ImportDirective\",\n \"src\": \"254:110:201\",\n \"nodes\": [],\n \"absolutePath\": \"src/modules/adaptors/Morpho/MorphoAaveV3HealthFactorLogic.sol\",\n \"file\": \"src/modules/adaptors/Morpho/MorphoAaveV3HealthFactorLogic.sol\",\n \"nameLocation\": \"-1:-1:-1\",\n \"scope\": 66591,\n \"sourceUnit\": 66645,\n \"symbolAliases\": [\n {\n \"foreign\": {\n \"id\": 66288,\n \"name\": \"MorphoAaveV3HealthFactorLogic\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66644,\n \"src\": \"263:29:201\",\n \"typeDescriptions\": {}\n },\n \"nameLocation\": \"-1:-1:-1\"\n }\n ],\n \"unitAlias\": \"\"\n },\n {\n \"id\": 66590,\n \"nodeType\": \"ContractDefinition\",\n \"src\": \"521:5593:201\",\n \"nodes\": [\n {\n \"id\": 66298,\n \"nodeType\": \"UsingForDirective\",\n \"src\": \"611:32:201\",\n \"nodes\": [],\n \"global\": false,\n \"libraryName\": {\n \"id\": 66295,\n \"name\": \"SafeTransferLib\",\n \"nameLocations\": [\n \"617:15:201\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 46498,\n \"src\": \"617:15:201\"\n },\n \"typeName\": {\n \"id\": 66297,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 66296,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"637:5:201\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"637:5:201\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"637:5:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n }\n },\n {\n \"id\": 66301,\n \"nodeType\": \"UsingForDirective\",\n \"src\": \"648:23:201\",\n \"nodes\": [],\n \"global\": false,\n \"libraryName\": {\n \"id\": 66299,\n \"name\": \"Math\",\n \"nameLocations\": [\n \"654:4:201\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 74811,\n \"src\": \"654:4:201\"\n },\n \"typeName\": {\n \"id\": 66300,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"663:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n },\n {\n \"id\": 66304,\n \"nodeType\": \"ErrorDefinition\",\n \"src\": \"1154:57:201\",\n \"nodes\": [],\n \"documentation\": {\n \"id\": 66302,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"1066:83:201\",\n \"text\": \"@notice Attempted borrow would lower Cellar health factor too low.\"\n },\n \"errorSelector\": \"9ca68070\",\n \"name\": \"MorphoAaveV3DebtTokenAdaptor__HealthFactorTooLow\",\n \"nameLocation\": \"1160:48:201\",\n \"parameters\": {\n \"id\": 66303,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"1208:2:201\"\n }\n },\n {\n \"id\": 66309,\n \"nodeType\": \"ErrorDefinition\",\n \"src\": \"1373:94:201\",\n \"nodes\": [],\n \"documentation\": {\n \"id\": 66305,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"1217:151:201\",\n \"text\": \" @notice Strategist attempted to open an untracked Morpho loan.\\n @param untrackedDebtPosition the address of the untracked loan\"\n },\n \"errorSelector\": \"f2588f9e\",\n \"name\": \"MorphoAaveV3DebtTokenAdaptor__DebtPositionsMustBeTracked\",\n \"nameLocation\": \"1379:56:201\",\n \"parameters\": {\n \"id\": 66308,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66307,\n \"mutability\": \"mutable\",\n \"name\": \"untrackedDebtPosition\",\n \"nameLocation\": \"1444:21:201\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66309,\n \"src\": \"1436:29:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 66306,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1436:7:201\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"1435:31:201\"\n }\n },\n {\n \"id\": 66313,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"1627:33:201\",\n \"nodes\": [],\n \"constant\": false,\n \"documentation\": {\n \"id\": 66310,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"1473:149:201\",\n \"text\": \" @notice The Morpho Aave V3 contract on current network.\\n @notice For mainnet use 0x33333aea097c193e66081E930c33020272b33333.\"\n },\n \"functionSelector\": \"d8fbc833\",\n \"mutability\": \"immutable\",\n \"name\": \"morpho\",\n \"nameLocation\": \"1654:6:201\",\n \"scope\": 66590,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n },\n \"typeName\": {\n \"id\": 66312,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 66311,\n \"name\": \"IMorphoV3\",\n \"nameLocations\": [\n \"1627:9:201\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 53563,\n \"src\": \"1627:9:201\"\n },\n \"referencedDeclaration\": 53563,\n \"src\": \"1627:9:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"visibility\": \"public\"\n },\n {\n \"id\": 66316,\n \"nodeType\": \"VariableDeclaration\",\n \"src\": \"1749:44:201\",\n \"nodes\": [],\n \"constant\": false,\n \"documentation\": {\n \"id\": 66314,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"1667:77:201\",\n \"text\": \" @notice Minimum Health Factor enforced after every borrow.\"\n },\n \"functionSelector\": \"1caff8b1\",\n \"mutability\": \"immutable\",\n \"name\": \"minimumHealthFactor\",\n \"nameLocation\": \"1774:19:201\",\n \"scope\": 66590,\n \"stateVariable\": true,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 66315,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1749:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"public\"\n },\n {\n \"id\": 66338,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"1800:209:201\",\n \"nodes\": [],\n \"body\": {\n \"id\": 66337,\n \"nodeType\": \"Block\",\n \"src\": \"1854:155:201\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 66324,\n \"name\": \"minHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66320,\n \"src\": \"1902:15:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"id\": 66323,\n \"name\": \"_verifyConstructorMinimumHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61626,\n \"src\": \"1864:37:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_pure$_t_uint256_$returns$__$\",\n \"typeString\": \"function (uint256) pure\"\n }\n },\n \"id\": 66325,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"1864:54:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 66326,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"1864:54:201\"\n },\n {\n \"expression\": {\n \"id\": 66331,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 66327,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66313,\n \"src\": \"1928:6:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"arguments\": [\n {\n \"id\": 66329,\n \"name\": \"_morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66318,\n \"src\": \"1947:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 66328,\n \"name\": \"IMorphoV3\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 53563,\n \"src\": \"1937:9:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_IMorphoV3_$53563_$\",\n \"typeString\": \"type(contract IMorphoV3)\"\n }\n },\n \"id\": 66330,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"1937:18:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"src\": \"1928:27:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"id\": 66332,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"1928:27:201\"\n },\n {\n \"expression\": {\n \"id\": 66335,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftHandSide\": {\n \"id\": 66333,\n \"name\": \"minimumHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66316,\n \"src\": \"1965:19:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"Assignment\",\n \"operator\": \"=\",\n \"rightHandSide\": {\n \"id\": 66334,\n \"name\": \"minHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66320,\n \"src\": \"1987:15:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"1965:37:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 66336,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"1965:37:201\"\n }\n ]\n },\n \"implemented\": true,\n \"kind\": \"constructor\",\n \"modifiers\": [],\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"parameters\": {\n \"id\": 66321,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66318,\n \"mutability\": \"mutable\",\n \"name\": \"_morpho\",\n \"nameLocation\": \"1820:7:201\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66338,\n \"src\": \"1812:15:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 66317,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1812:7:201\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 66320,\n \"mutability\": \"mutable\",\n \"name\": \"minHealthFactor\",\n \"nameLocation\": \"1837:15:201\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66338,\n \"src\": \"1829:23:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 66319,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"1829:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"1811:42:201\"\n },\n \"returnParameters\": {\n \"id\": 66322,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"1854:0:201\"\n },\n \"scope\": 66590,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 66353,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"2428:148:201\",\n \"nodes\": [],\n \"body\": {\n \"id\": 66352,\n \"nodeType\": \"Block\",\n \"src\": \"2489:87:201\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"hexValue\": \"4d6f7270686f20416176652056332064656274546f6b656e2041646170746f72205620312e31\",\n \"id\": 66348,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"string\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"2527:40:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_stringliteral_a9c65ad04dd6bddd7acf7ad2140a2a4e04fadd2b84fa8c11178dbf5ab2522b57\",\n \"typeString\": \"literal_string \\\"Morpho Aave V3 debtToken Adaptor V 1.1\\\"\"\n },\n \"value\": \"Morpho Aave V3 debtToken Adaptor V 1.1\"\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_stringliteral_a9c65ad04dd6bddd7acf7ad2140a2a4e04fadd2b84fa8c11178dbf5ab2522b57\",\n \"typeString\": \"literal_string \\\"Morpho Aave V3 debtToken Adaptor V 1.1\\\"\"\n }\n ],\n \"expression\": {\n \"id\": 66346,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"2516:3:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 66347,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"2520:6:201\",\n \"memberName\": \"encode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"2516:10:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$\",\n \"typeString\": \"function () pure returns (bytes memory)\"\n }\n },\n \"id\": 66349,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"2516:52:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n ],\n \"id\": 66345,\n \"name\": \"keccak256\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -8,\n \"src\": \"2506:9:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$\",\n \"typeString\": \"function (bytes memory) pure returns (bytes32)\"\n }\n },\n \"id\": 66350,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"2506:63:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"functionReturnParameters\": 66344,\n \"id\": 66351,\n \"nodeType\": \"Return\",\n \"src\": \"2499:70:201\"\n }\n ]\n },\n \"baseFunctions\": [\n 61410\n ],\n \"documentation\": {\n \"id\": 66339,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"2127:296:201\",\n \"text\": \" @dev Identifier unique to this adaptor for a shared registry.\\n Normally the identifier would just be the address of this contract, but this\\n Identifier is needed during Cellar Delegate Call Operations, so getting the address\\n of the adaptor is more difficult.\"\n },\n \"functionSelector\": \"7998a1c4\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"identifier\",\n \"nameLocation\": \"2437:10:201\",\n \"overrides\": {\n \"id\": 66341,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"2462:8:201\"\n },\n \"parameters\": {\n \"id\": 66340,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"2447:2:201\"\n },\n \"returnParameters\": {\n \"id\": 66344,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66343,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66353,\n \"src\": \"2480:7:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n \"typeName\": {\n \"id\": 66342,\n \"name\": \"bytes32\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2480:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"2479:9:201\"\n },\n \"scope\": 66590,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 66368,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"2784:136:201\",\n \"nodes\": [],\n \"body\": {\n \"id\": 66367,\n \"nodeType\": \"Block\",\n \"src\": \"2859:61:201\",\n \"nodes\": [],\n \"statements\": [\n {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 66364,\n \"name\": \"BaseAdaptor__UserDepositsNotAllowed\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61382,\n \"src\": \"2876:35:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 66365,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"2876:37:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 66366,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"2869:44:201\"\n }\n ]\n },\n \"baseFunctions\": [\n 61454\n ],\n \"documentation\": {\n \"id\": 66354,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"2703:76:201\",\n \"text\": \" @notice User deposits are NOT allowed into this position.\"\n },\n \"functionSelector\": \"69445c31\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"deposit\",\n \"nameLocation\": \"2793:7:201\",\n \"overrides\": {\n \"id\": 66362,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"2850:8:201\"\n },\n \"parameters\": {\n \"id\": 66361,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66356,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66368,\n \"src\": \"2801:7:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 66355,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2801:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 66358,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66368,\n \"src\": \"2810:12:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 66357,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2810:5:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 66360,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66368,\n \"src\": \"2824:12:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 66359,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"2824:5:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"2800:37:201\"\n },\n \"returnParameters\": {\n \"id\": 66363,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"2859:0:201\"\n },\n \"scope\": 66590,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 66385,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"3008:147:201\",\n \"nodes\": [],\n \"body\": {\n \"id\": 66384,\n \"nodeType\": \"Block\",\n \"src\": \"3093:62:201\",\n \"nodes\": [],\n \"statements\": [\n {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 66381,\n \"name\": \"BaseAdaptor__UserWithdrawsNotAllowed\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61385,\n \"src\": \"3110:36:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 66382,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3110:38:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 66383,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"3103:45:201\"\n }\n ]\n },\n \"baseFunctions\": [\n 61466\n ],\n \"documentation\": {\n \"id\": 66369,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"2926:77:201\",\n \"text\": \" @notice User withdraws are NOT allowed from this position.\"\n },\n \"functionSelector\": \"c9111bd7\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"withdraw\",\n \"nameLocation\": \"3017:8:201\",\n \"overrides\": {\n \"id\": 66379,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"3084:8:201\"\n },\n \"parameters\": {\n \"id\": 66378,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66371,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66385,\n \"src\": \"3026:7:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 66370,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3026:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 66373,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66385,\n \"src\": \"3035:7:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 66372,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3035:7:201\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 66375,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66385,\n \"src\": \"3044:12:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 66374,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3044:5:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 66377,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66385,\n \"src\": \"3058:12:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 66376,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3058:5:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"3025:46:201\"\n },\n \"returnParameters\": {\n \"id\": 66380,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"3093:0:201\"\n },\n \"scope\": 66590,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 66399,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"3329:118:201\",\n \"nodes\": [],\n \"body\": {\n \"id\": 66398,\n \"nodeType\": \"Block\",\n \"src\": \"3422:25:201\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"hexValue\": \"30\",\n \"id\": 66396,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"number\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"3439:1:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_rational_0_by_1\",\n \"typeString\": \"int_const 0\"\n },\n \"value\": \"0\"\n },\n \"functionReturnParameters\": 66395,\n \"id\": 66397,\n \"nodeType\": \"Return\",\n \"src\": \"3432:8:201\"\n }\n ]\n },\n \"baseFunctions\": [\n 61484\n ],\n \"documentation\": {\n \"id\": 66386,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"3161:163:201\",\n \"text\": \" @notice This position is a debt position, and user withdraws are not allowed so\\n this position must return 0 for withdrawableFrom.\"\n },\n \"functionSelector\": \"fa50e5d2\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"withdrawableFrom\",\n \"nameLocation\": \"3338:16:201\",\n \"overrides\": {\n \"id\": 66392,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"3395:8:201\"\n },\n \"parameters\": {\n \"id\": 66391,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66388,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66399,\n \"src\": \"3355:12:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 66387,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3355:5:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 66390,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66399,\n \"src\": \"3369:12:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 66389,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3369:5:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"3354:28:201\"\n },\n \"returnParameters\": {\n \"id\": 66395,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66394,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66399,\n \"src\": \"3413:7:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 66393,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3413:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"3412:9:201\"\n },\n \"scope\": 66590,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 66426,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"3535:217:201\",\n \"nodes\": [],\n \"body\": {\n \"id\": 66425,\n \"nodeType\": \"Block\",\n \"src\": \"3619:133:201\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 66409\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 66409,\n \"mutability\": \"mutable\",\n \"name\": \"underlying\",\n \"nameLocation\": \"3637:10:201\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66425,\n \"src\": \"3629:18:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 66408,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3629:7:201\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 66417,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 66412,\n \"name\": \"adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66402,\n \"src\": \"3661:11:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 66414,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"3675:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66413,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3675:7:201\",\n \"typeDescriptions\": {}\n }\n }\n ],\n \"id\": 66415,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"3674:9:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n }\n ],\n \"expression\": {\n \"id\": 66410,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"3650:3:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 66411,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"3654:6:201\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"3650:10:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 66416,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3650:34:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address_payable\",\n \"typeString\": \"address payable\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"3629:55:201\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 66420,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66409,\n \"src\": \"3722:10:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"expression\": {\n \"id\": 66421,\n \"name\": \"msg\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -15,\n \"src\": \"3734:3:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_message\",\n \"typeString\": \"msg\"\n }\n },\n \"id\": 66422,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"3738:6:201\",\n \"memberName\": \"sender\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"3734:10:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 66418,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66313,\n \"src\": \"3701:6:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"id\": 66419,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"3708:13:201\",\n \"memberName\": \"borrowBalance\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53448,\n \"src\": \"3701:20:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address,address) view external returns (uint256)\"\n }\n },\n \"id\": 66423,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3701:44:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"functionReturnParameters\": 66407,\n \"id\": 66424,\n \"nodeType\": \"Return\",\n \"src\": \"3694:51:201\"\n }\n ]\n },\n \"baseFunctions\": [\n 61474\n ],\n \"documentation\": {\n \"id\": 66400,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"3453:77:201\",\n \"text\": \" @notice Returns the cellars balance of the positions debt.\"\n },\n \"functionSelector\": \"78415365\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"balanceOf\",\n \"nameLocation\": \"3544:9:201\",\n \"overrides\": {\n \"id\": 66404,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"3592:8:201\"\n },\n \"parameters\": {\n \"id\": 66403,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66402,\n \"mutability\": \"mutable\",\n \"name\": \"adaptorData\",\n \"nameLocation\": \"3567:11:201\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66426,\n \"src\": \"3554:24:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 66401,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3554:5:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"3553:26:201\"\n },\n \"returnParameters\": {\n \"id\": 66407,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66406,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66426,\n \"src\": \"3610:7:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 66405,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3610:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"3609:9:201\"\n },\n \"scope\": 66590,\n \"stateMutability\": \"view\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 66449,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"3829:175:201\",\n \"nodes\": [],\n \"body\": {\n \"id\": 66448,\n \"nodeType\": \"Block\",\n \"src\": \"3909:95:201\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 66438\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 66438,\n \"mutability\": \"mutable\",\n \"name\": \"underlying\",\n \"nameLocation\": \"3925:10:201\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66448,\n \"src\": \"3919:16:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 66437,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 66436,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"3919:5:201\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"3919:5:201\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"3919:5:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 66445,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 66441,\n \"name\": \"adaptorData\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66429,\n \"src\": \"3949:11:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n },\n {\n \"components\": [\n {\n \"id\": 66442,\n \"name\": \"ERC20\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 45747,\n \"src\": \"3963:5:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n }\n ],\n \"id\": 66443,\n \"isConstant\": false,\n \"isInlineArray\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"TupleExpression\",\n \"src\": \"3962:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n },\n {\n \"typeIdentifier\": \"t_type$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"type(contract ERC20)\"\n }\n ],\n \"expression\": {\n \"id\": 66439,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"3938:3:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 66440,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"3942:6:201\",\n \"memberName\": \"decode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"3938:10:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abidecode_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 66444,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"3938:32:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"3919:51:201\"\n },\n {\n \"expression\": {\n \"id\": 66446,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66438,\n \"src\": \"3987:10:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"functionReturnParameters\": 66435,\n \"id\": 66447,\n \"nodeType\": \"Return\",\n \"src\": \"3980:17:201\"\n }\n ]\n },\n \"baseFunctions\": [\n 61493\n ],\n \"documentation\": {\n \"id\": 66427,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"3758:66:201\",\n \"text\": \" @notice Returns the positions underlying asset.\"\n },\n \"functionSelector\": \"e170a9bf\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"assetOf\",\n \"nameLocation\": \"3838:7:201\",\n \"overrides\": {\n \"id\": 66431,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"3884:8:201\"\n },\n \"parameters\": {\n \"id\": 66430,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66429,\n \"mutability\": \"mutable\",\n \"name\": \"adaptorData\",\n \"nameLocation\": \"3859:11:201\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66449,\n \"src\": \"3846:24:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"memory\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes\"\n },\n \"typeName\": {\n \"id\": 66428,\n \"name\": \"bytes\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"3846:5:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_storage_ptr\",\n \"typeString\": \"bytes\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"3845:26:201\"\n },\n \"returnParameters\": {\n \"id\": 66435,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66434,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66449,\n \"src\": \"3902:5:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 66433,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 66432,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"3902:5:201\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"3902:5:201\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"3902:5:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"3901:7:201\"\n },\n \"scope\": 66590,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 66459,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"4087:82:201\",\n \"nodes\": [],\n \"body\": {\n \"id\": 66458,\n \"nodeType\": \"Block\",\n \"src\": \"4141:28:201\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"hexValue\": \"74727565\",\n \"id\": 66456,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"bool\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"4158:4:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"value\": \"true\"\n },\n \"functionReturnParameters\": 66455,\n \"id\": 66457,\n \"nodeType\": \"Return\",\n \"src\": \"4151:11:201\"\n }\n ]\n },\n \"baseFunctions\": [\n 61527\n ],\n \"documentation\": {\n \"id\": 66450,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"4010:72:201\",\n \"text\": \" @notice This adaptor reports values in terms of debt.\"\n },\n \"functionSelector\": \"89353a09\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"isDebt\",\n \"nameLocation\": \"4096:6:201\",\n \"overrides\": {\n \"id\": 66452,\n \"nodeType\": \"OverrideSpecifier\",\n \"overrides\": [],\n \"src\": \"4117:8:201\"\n },\n \"parameters\": {\n \"id\": 66451,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"4102:2:201\"\n },\n \"returnParameters\": {\n \"id\": 66455,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66454,\n \"mutability\": \"mutable\",\n \"name\": \"\",\n \"nameLocation\": \"-1:-1:-1\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66459,\n \"src\": \"4135:4:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"typeName\": {\n \"id\": 66453,\n \"name\": \"bool\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4135:4:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"4134:6:201\"\n },\n \"scope\": 66590,\n \"stateMutability\": \"pure\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 66547,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"4599:925:201\",\n \"nodes\": [],\n \"body\": {\n \"id\": 66546,\n \"nodeType\": \"Block\",\n \"src\": \"4705:819:201\",\n \"nodes\": [],\n \"statements\": [\n {\n \"assignments\": [\n 66470\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 66470,\n \"mutability\": \"mutable\",\n \"name\": \"positionHash\",\n \"nameLocation\": \"4807:12:201\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66546,\n \"src\": \"4799:20:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n \"typeName\": {\n \"id\": 66469,\n \"name\": \"bytes32\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4799:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 66483,\n \"initialValue\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 66474,\n \"name\": \"identifier\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [\n 66353\n ],\n \"referencedDeclaration\": 66353,\n \"src\": \"4843:10:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_pure$__$returns$_t_bytes32_$\",\n \"typeString\": \"function () pure returns (bytes32)\"\n }\n },\n \"id\": 66475,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4843:12:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n {\n \"hexValue\": \"74727565\",\n \"id\": 66476,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"kind\": \"bool\",\n \"lValueRequested\": false,\n \"nodeType\": \"Literal\",\n \"src\": \"4857:4:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n \"value\": \"true\"\n },\n {\n \"arguments\": [\n {\n \"id\": 66479,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66462,\n \"src\": \"4874:10:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 66477,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"4863:3:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 66478,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"4867:6:201\",\n \"memberName\": \"encode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"4863:10:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$\",\n \"typeString\": \"function () pure returns (bytes memory)\"\n }\n },\n \"id\": 66480,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4863:22:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n },\n {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n },\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n ],\n \"expression\": {\n \"id\": 66472,\n \"name\": \"abi\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -1,\n \"src\": \"4832:3:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_magic_abi\",\n \"typeString\": \"abi\"\n }\n },\n \"id\": 66473,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"memberLocation\": \"4836:6:201\",\n \"memberName\": \"encode\",\n \"nodeType\": \"MemberAccess\",\n \"src\": \"4832:10:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$\",\n \"typeString\": \"function () pure returns (bytes memory)\"\n }\n },\n \"id\": 66481,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4832:54:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes_memory_ptr\",\n \"typeString\": \"bytes memory\"\n }\n ],\n \"id\": 66471,\n \"name\": \"keccak256\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -8,\n \"src\": \"4822:9:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$\",\n \"typeString\": \"function (bytes memory) pure returns (bytes32)\"\n }\n },\n \"id\": 66482,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4822:65:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"4799:88:201\"\n },\n {\n \"assignments\": [\n 66485\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 66485,\n \"mutability\": \"mutable\",\n \"name\": \"positionId\",\n \"nameLocation\": \"4904:10:201\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66546,\n \"src\": \"4897:17:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n },\n \"typeName\": {\n \"id\": 66484,\n \"name\": \"uint32\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4897:6:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 66497,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 66495,\n \"name\": \"positionHash\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66470,\n \"src\": \"4978:12:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_bytes32\",\n \"typeString\": \"bytes32\"\n }\n ],\n \"expression\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 66489,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"4932:4:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590\",\n \"typeString\": \"contract MorphoAaveV3DebtTokenAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590\",\n \"typeString\": \"contract MorphoAaveV3DebtTokenAdaptor\"\n }\n ],\n \"id\": 66488,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"4924:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66487,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4924:7:201\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 66490,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4924:13:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 66486,\n \"name\": \"Cellar\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 44434,\n \"src\": \"4917:6:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_Cellar_$44434_$\",\n \"typeString\": \"type(contract Cellar)\"\n }\n },\n \"id\": 66491,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4917:21:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_Cellar_$44434\",\n \"typeString\": \"contract Cellar\"\n }\n },\n \"id\": 66492,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"4939:8:201\",\n \"memberName\": \"registry\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 42070,\n \"src\": \"4917:30:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$__$returns$_t_contract$_Registry_$41024_$\",\n \"typeString\": \"function () view external returns (contract Registry)\"\n }\n },\n \"id\": 66493,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4917:32:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_Registry_$41024\",\n \"typeString\": \"contract Registry\"\n }\n },\n \"id\": 66494,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"4950:27:201\",\n \"memberName\": \"getPositionHashToPositionId\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 40771,\n \"src\": \"4917:60:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_bytes32_$returns$_t_uint32_$\",\n \"typeString\": \"function (bytes32) view external returns (uint32)\"\n }\n },\n \"id\": 66496,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"4917:74:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"4897:94:201\"\n },\n {\n \"condition\": {\n \"id\": 66507,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"nodeType\": \"UnaryOperation\",\n \"operator\": \"!\",\n \"prefix\": true,\n \"src\": \"5005:49:201\",\n \"subExpression\": {\n \"arguments\": [\n {\n \"id\": 66505,\n \"name\": \"positionId\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66485,\n \"src\": \"5043:10:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_uint32\",\n \"typeString\": \"uint32\"\n }\n ],\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 66501,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"5021:4:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590\",\n \"typeString\": \"contract MorphoAaveV3DebtTokenAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590\",\n \"typeString\": \"contract MorphoAaveV3DebtTokenAdaptor\"\n }\n ],\n \"id\": 66500,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"5013:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66499,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5013:7:201\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 66502,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5013:13:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 66498,\n \"name\": \"Cellar\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 44434,\n \"src\": \"5006:6:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_contract$_Cellar_$44434_$\",\n \"typeString\": \"type(contract Cellar)\"\n }\n },\n \"id\": 66503,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5006:21:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_Cellar_$44434\",\n \"typeString\": \"contract Cellar\"\n }\n },\n \"id\": 66504,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"5028:14:201\",\n \"memberName\": \"isPositionUsed\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 41300,\n \"src\": \"5006:36:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_view$_t_uint256_$returns$_t_bool_$\",\n \"typeString\": \"function (uint256) view external returns (bool)\"\n }\n },\n \"id\": 66506,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5006:48:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 66512,\n \"nodeType\": \"IfStatement\",\n \"src\": \"5001:142:201\",\n \"trueBody\": {\n \"errorCall\": {\n \"arguments\": [\n {\n \"id\": 66509,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66462,\n \"src\": \"5132:10:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 66508,\n \"name\": \"MorphoAaveV3DebtTokenAdaptor__DebtPositionsMustBeTracked\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66309,\n \"src\": \"5075:56:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$_t_address_$returns$__$\",\n \"typeString\": \"function (address) pure\"\n }\n },\n \"id\": 66510,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5075:68:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 66511,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"5068:75:201\"\n }\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 66516,\n \"name\": \"underlying\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66462,\n \"src\": \"5199:10:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 66517,\n \"name\": \"amountToBorrow\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66464,\n \"src\": \"5211:14:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 66520,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"5235:4:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590\",\n \"typeString\": \"contract MorphoAaveV3DebtTokenAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590\",\n \"typeString\": \"contract MorphoAaveV3DebtTokenAdaptor\"\n }\n ],\n \"id\": 66519,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"5227:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66518,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5227:7:201\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 66521,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5227:13:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 66524,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"5250:4:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590\",\n \"typeString\": \"contract MorphoAaveV3DebtTokenAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590\",\n \"typeString\": \"contract MorphoAaveV3DebtTokenAdaptor\"\n }\n ],\n \"id\": 66523,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"5242:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66522,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5242:7:201\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 66525,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5242:13:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 66526,\n \"name\": \"maxIterations\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66466,\n \"src\": \"5257:13:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 66513,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66313,\n \"src\": \"5185:6:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"id\": 66515,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"5192:6:201\",\n \"memberName\": \"borrow\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53499,\n \"src\": \"5185:13:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_uint256_$\",\n \"typeString\": \"function (address,uint256,address,address,uint256) external returns (uint256)\"\n }\n },\n \"id\": 66527,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5185:86:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 66528,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"5185:86:201\"\n },\n {\n \"assignments\": [\n 66530\n ],\n \"declarations\": [\n {\n \"constant\": false,\n \"id\": 66530,\n \"mutability\": \"mutable\",\n \"name\": \"healthFactor\",\n \"nameLocation\": \"5352:12:201\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66546,\n \"src\": \"5344:20:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 66529,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5344:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"id\": 66538,\n \"initialValue\": {\n \"arguments\": [\n {\n \"id\": 66532,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66313,\n \"src\": \"5388:6:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 66535,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"5404:4:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590\",\n \"typeString\": \"contract MorphoAaveV3DebtTokenAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590\",\n \"typeString\": \"contract MorphoAaveV3DebtTokenAdaptor\"\n }\n ],\n \"id\": 66534,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"5396:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66533,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5396:7:201\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 66536,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5396:13:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 66531,\n \"name\": \"_getUserHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66643,\n \"src\": \"5367:20:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_view$_t_contract$_IMorphoV3_$53563_$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (contract IMorphoV3,address) view returns (uint256)\"\n }\n },\n \"id\": 66537,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5367:43:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"VariableDeclarationStatement\",\n \"src\": \"5344:66:201\"\n },\n {\n \"condition\": {\n \"commonType\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"id\": 66541,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"leftExpression\": {\n \"id\": 66539,\n \"name\": \"healthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66530,\n \"src\": \"5424:12:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"nodeType\": \"BinaryOperation\",\n \"operator\": \"<\",\n \"rightExpression\": {\n \"id\": 66540,\n \"name\": \"minimumHealthFactor\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66316,\n \"src\": \"5439:19:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"src\": \"5424:34:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_bool\",\n \"typeString\": \"bool\"\n }\n },\n \"id\": 66545,\n \"nodeType\": \"IfStatement\",\n \"src\": \"5420:97:201\",\n \"trueBody\": {\n \"errorCall\": {\n \"arguments\": [],\n \"expression\": {\n \"argumentTypes\": [],\n \"id\": 66542,\n \"name\": \"MorphoAaveV3DebtTokenAdaptor__HealthFactorTooLow\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66304,\n \"src\": \"5467:48:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_error_pure$__$returns$__$\",\n \"typeString\": \"function () pure\"\n }\n },\n \"id\": 66543,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5467:50:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 66544,\n \"nodeType\": \"RevertStatement\",\n \"src\": \"5460:57:201\"\n }\n }\n ]\n },\n \"documentation\": {\n \"id\": 66460,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"4292:302:201\",\n \"text\": \" @notice Allows strategists to borrow assets from Morpho.\\n @notice `debtTokenToBorrow` must be the debtToken, NOT the underlying ERC20.\\n @param underlying the debtToken to borrow on Morpho\\n @param amountToBorrow the amount of `debtTokenToBorrow` to borrow on Morpho.\"\n },\n \"functionSelector\": \"a6cfba9a\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"borrowFromAaveV3Morpho\",\n \"nameLocation\": \"4608:22:201\",\n \"parameters\": {\n \"id\": 66467,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66462,\n \"mutability\": \"mutable\",\n \"name\": \"underlying\",\n \"nameLocation\": \"4639:10:201\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66547,\n \"src\": \"4631:18:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n \"typeName\": {\n \"id\": 66461,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4631:7:201\",\n \"stateMutability\": \"nonpayable\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 66464,\n \"mutability\": \"mutable\",\n \"name\": \"amountToBorrow\",\n \"nameLocation\": \"4659:14:201\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66547,\n \"src\": \"4651:22:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 66463,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4651:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 66466,\n \"mutability\": \"mutable\",\n \"name\": \"maxIterations\",\n \"nameLocation\": \"4683:13:201\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66547,\n \"src\": \"4675:21:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 66465,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"4675:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"4630:67:201\"\n },\n \"returnParameters\": {\n \"id\": 66468,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"4705:0:201\"\n },\n \"scope\": 66590,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n },\n {\n \"id\": 66589,\n \"nodeType\": \"FunctionDefinition\",\n \"src\": \"5774:338:201\",\n \"nodes\": [],\n \"body\": {\n \"id\": 66588,\n \"nodeType\": \"Block\",\n \"src\": \"5855:257:201\",\n \"nodes\": [],\n \"statements\": [\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 66561,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66313,\n \"src\": \"5898:6:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n ],\n \"id\": 66560,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"5890:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66559,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5890:7:201\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 66562,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5890:15:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 66563,\n \"name\": \"amountToRepay\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66553,\n \"src\": \"5907:13:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n ],\n \"expression\": {\n \"id\": 66556,\n \"name\": \"tokenToRepay\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66551,\n \"src\": \"5865:12:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"id\": 66558,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"5878:11:201\",\n \"memberName\": \"safeApprove\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 46497,\n \"src\": \"5865:24:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_ERC20_$45747_$\",\n \"typeString\": \"function (contract ERC20,address,uint256)\"\n }\n },\n \"id\": 66564,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5865:56:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 66565,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"5865:56:201\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"arguments\": [\n {\n \"id\": 66571,\n \"name\": \"tokenToRepay\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66551,\n \"src\": \"5952:12:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n ],\n \"id\": 66570,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"5944:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66569,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5944:7:201\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 66572,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5944:21:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n },\n {\n \"id\": 66573,\n \"name\": \"amountToRepay\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66553,\n \"src\": \"5967:13:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 66576,\n \"name\": \"this\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": -28,\n \"src\": \"5990:4:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590\",\n \"typeString\": \"contract MorphoAaveV3DebtTokenAdaptor\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_MorphoAaveV3DebtTokenAdaptor_$66590\",\n \"typeString\": \"contract MorphoAaveV3DebtTokenAdaptor\"\n }\n ],\n \"id\": 66575,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"5982:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66574,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5982:7:201\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 66577,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5982:13:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n },\n {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"expression\": {\n \"id\": 66566,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66313,\n \"src\": \"5931:6:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n },\n \"id\": 66568,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"lValueRequested\": false,\n \"memberLocation\": \"5938:5:201\",\n \"memberName\": \"repay\",\n \"nodeType\": \"MemberAccess\",\n \"referencedDeclaration\": 53510,\n \"src\": \"5931:12:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$\",\n \"typeString\": \"function (address,uint256,address) external returns (uint256)\"\n }\n },\n \"id\": 66578,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"5931:65:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"id\": 66579,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"5931:65:201\"\n },\n {\n \"expression\": {\n \"arguments\": [\n {\n \"id\": 66581,\n \"name\": \"tokenToRepay\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66551,\n \"src\": \"6075:12:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n {\n \"arguments\": [\n {\n \"id\": 66584,\n \"name\": \"morpho\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 66313,\n \"src\": \"6097:6:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_IMorphoV3_$53563\",\n \"typeString\": \"contract IMorphoV3\"\n }\n ],\n \"id\": 66583,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": true,\n \"lValueRequested\": false,\n \"nodeType\": \"ElementaryTypeNameExpression\",\n \"src\": \"6089:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_type$_t_address_$\",\n \"typeString\": \"type(address)\"\n },\n \"typeName\": {\n \"id\": 66582,\n \"name\": \"address\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"6089:7:201\",\n \"typeDescriptions\": {}\n }\n },\n \"id\": 66585,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"typeConversion\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6089:15:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n }\n ],\n \"expression\": {\n \"argumentTypes\": [\n {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n {\n \"typeIdentifier\": \"t_address\",\n \"typeString\": \"address\"\n }\n ],\n \"id\": 66580,\n \"name\": \"_revokeExternalApproval\",\n \"nodeType\": \"Identifier\",\n \"overloadedDeclarations\": [],\n \"referencedDeclaration\": 61585,\n \"src\": \"6051:23:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_function_internal_nonpayable$_t_contract$_ERC20_$45747_$_t_address_$returns$__$\",\n \"typeString\": \"function (contract ERC20,address)\"\n }\n },\n \"id\": 66586,\n \"isConstant\": false,\n \"isLValue\": false,\n \"isPure\": false,\n \"kind\": \"functionCall\",\n \"lValueRequested\": false,\n \"nameLocations\": [],\n \"names\": [],\n \"nodeType\": \"FunctionCall\",\n \"src\": \"6051:54:201\",\n \"tryCall\": false,\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_tuple$__$\",\n \"typeString\": \"tuple()\"\n }\n },\n \"id\": 66587,\n \"nodeType\": \"ExpressionStatement\",\n \"src\": \"6051:54:201\"\n }\n ]\n },\n \"documentation\": {\n \"id\": 66548,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"5530:239:201\",\n \"text\": \" @notice Allows strategists to repay loan debt on Morpho.\\n @param tokenToRepay the underlying ERC20 token you want to repay, NOT the debtToken.\\n @param amountToRepay the amount of `tokenToRepay` to repay with.\"\n },\n \"functionSelector\": \"e5afd9b6\",\n \"implemented\": true,\n \"kind\": \"function\",\n \"modifiers\": [],\n \"name\": \"repayAaveV3MorphoDebt\",\n \"nameLocation\": \"5783:21:201\",\n \"parameters\": {\n \"id\": 66554,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [\n {\n \"constant\": false,\n \"id\": 66551,\n \"mutability\": \"mutable\",\n \"name\": \"tokenToRepay\",\n \"nameLocation\": \"5811:12:201\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66589,\n \"src\": \"5805:18:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n },\n \"typeName\": {\n \"id\": 66550,\n \"nodeType\": \"UserDefinedTypeName\",\n \"pathNode\": {\n \"id\": 66549,\n \"name\": \"ERC20\",\n \"nameLocations\": [\n \"5805:5:201\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 45747,\n \"src\": \"5805:5:201\"\n },\n \"referencedDeclaration\": 45747,\n \"src\": \"5805:5:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_contract$_ERC20_$45747\",\n \"typeString\": \"contract ERC20\"\n }\n },\n \"visibility\": \"internal\"\n },\n {\n \"constant\": false,\n \"id\": 66553,\n \"mutability\": \"mutable\",\n \"name\": \"amountToRepay\",\n \"nameLocation\": \"5833:13:201\",\n \"nodeType\": \"VariableDeclaration\",\n \"scope\": 66589,\n \"src\": \"5825:21:201\",\n \"stateVariable\": false,\n \"storageLocation\": \"default\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n },\n \"typeName\": {\n \"id\": 66552,\n \"name\": \"uint256\",\n \"nodeType\": \"ElementaryTypeName\",\n \"src\": \"5825:7:201\",\n \"typeDescriptions\": {\n \"typeIdentifier\": \"t_uint256\",\n \"typeString\": \"uint256\"\n }\n },\n \"visibility\": \"internal\"\n }\n ],\n \"src\": \"5804:43:201\"\n },\n \"returnParameters\": {\n \"id\": 66555,\n \"nodeType\": \"ParameterList\",\n \"parameters\": [],\n \"src\": \"5855:0:201\"\n },\n \"scope\": 66590,\n \"stateMutability\": \"nonpayable\",\n \"virtual\": false,\n \"visibility\": \"public\"\n }\n ],\n \"abstract\": false,\n \"baseContracts\": [\n {\n \"baseName\": {\n \"id\": 66291,\n \"name\": \"BaseAdaptor\",\n \"nameLocations\": [\n \"562:11:201\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 61644,\n \"src\": \"562:11:201\"\n },\n \"id\": 66292,\n \"nodeType\": \"InheritanceSpecifier\",\n \"src\": \"562:11:201\"\n },\n {\n \"baseName\": {\n \"id\": 66293,\n \"name\": \"MorphoAaveV3HealthFactorLogic\",\n \"nameLocations\": [\n \"575:29:201\"\n ],\n \"nodeType\": \"IdentifierPath\",\n \"referencedDeclaration\": 66644,\n \"src\": \"575:29:201\"\n },\n \"id\": 66294,\n \"nodeType\": \"InheritanceSpecifier\",\n \"src\": \"575:29:201\"\n }\n ],\n \"canonicalName\": \"MorphoAaveV3DebtTokenAdaptor\",\n \"contractDependencies\": [],\n \"contractKind\": \"contract\",\n \"documentation\": {\n \"id\": 66290,\n \"nodeType\": \"StructuredDocumentation\",\n \"src\": \"366:154:201\",\n \"text\": \" @title Morpho Aave V3 debtToken Adaptor\\n @notice Allows Cellars to interact with Morpho Aave V3 debtToken positions.\\n @author crispymangoes\"\n },\n \"fullyImplemented\": true,\n \"linearizedBaseContracts\": [\n 66590,\n 66644,\n 61644\n ],\n \"name\": \"MorphoAaveV3DebtTokenAdaptor\",\n \"nameLocation\": \"530:28:201\",\n \"scope\": 66591,\n \"usedErrors\": [\n 61379,\n 61382,\n 61385,\n 61388,\n 61393,\n 61396,\n 66304,\n 66309\n ]\n }\n ],\n \"license\": \"Apache-2.0\"\n },\n \"id\": 201\n}") . expect ("invalid abi") + }); + #[derive(Clone)] + pub struct MorphoAaveV3DebtTokenAdaptorV1(ethers::contract::Contract); + impl std::ops::Deref for MorphoAaveV3DebtTokenAdaptorV1 { + type Target = ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl std::fmt::Debug for MorphoAaveV3DebtTokenAdaptorV1 { + fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { + f.debug_tuple(stringify!(MorphoAaveV3DebtTokenAdaptorV1)) + .field(&self.address()) + .finish() + } + } + impl<'a, M: ethers::providers::Middleware> MorphoAaveV3DebtTokenAdaptorV1 { + #[doc = r" Creates a new contract instance with the specified `ethers`"] + #[doc = r" client at the given `Address`. The contract derefs to a `ethers::Contract`"] + #[doc = r" object"] + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + let contract = ethers::contract::Contract::new( + address.into(), + MORPHOAAVEV3DEBTTOKENADAPTORV1_ABI.clone(), + client, + ); + Self(contract) + } + #[doc = "Calls the contract's `assetOf` (0xe170a9bf) function"] + pub fn asset_of( + &self, + adaptor_data: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([225, 112, 169, 191], adaptor_data) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `assetsUsed` (0xaeffddde) function"] + pub fn assets_used( + &self, + adaptor_data: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec, + > { + self.0 + .method_hash([174, 255, 221, 222], adaptor_data) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `balanceOf` (0x78415365) function"] + pub fn balance_of( + &self, + adaptor_data: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([120, 65, 83, 101], adaptor_data) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `borrowFromAaveV3Morpho` (0xa6cfba9a) function"] + pub fn borrow_from_aave_v3_morpho( + &self, + underlying: ethers::core::types::Address, + amount_to_borrow: ethers::core::types::U256, + max_iterations: ethers::core::types::U256, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [166, 207, 186, 154], + (underlying, amount_to_borrow, max_iterations), + ) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `deposit` (0x69445c31) function"] + pub fn deposit( + &self, + p0: ethers::core::types::U256, + p1: ethers::core::types::Bytes, + p2: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([105, 68, 92, 49], (p0, p1, p2)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `identifier` (0x7998a1c4) function"] + pub fn identifier(&self) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([121, 152, 161, 196], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `isDebt` (0x89353a09) function"] + pub fn is_debt(&self) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([137, 53, 58, 9], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `minimumHealthFactor` (0x1caff8b1) function"] + pub fn minimum_health_factor( + &self, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([28, 175, 248, 177], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `morpho` (0xd8fbc833) function"] + pub fn morpho( + &self, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([216, 251, 200, 51], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `repayAaveV3MorphoDebt` (0xe5afd9b6) function"] + pub fn repay_aave_v3_morpho_debt( + &self, + token_to_repay: ethers::core::types::Address, + amount_to_repay: ethers::core::types::U256, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([229, 175, 217, 182], (token_to_repay, amount_to_repay)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `revokeApproval` (0xd3bfe76a) function"] + pub fn revoke_approval( + &self, + asset: ethers::core::types::Address, + spender: ethers::core::types::Address, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([211, 191, 231, 106], (asset, spender)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `slippage` (0x3e032a3b) function"] + pub fn slippage(&self) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([62, 3, 42, 59], ()) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `withdraw` (0xc9111bd7) function"] + pub fn withdraw( + &self, + p0: ethers::core::types::U256, + p1: ethers::core::types::Address, + p2: ethers::core::types::Bytes, + p3: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([201, 17, 27, 215], (p0, p1, p2, p3)) + .expect("method not found (this should never happen)") + } + #[doc = "Calls the contract's `withdrawableFrom` (0xfa50e5d2) function"] + pub fn withdrawable_from( + &self, + p0: ethers::core::types::Bytes, + p1: ethers::core::types::Bytes, + ) -> ethers::contract::builders::ContractCall { + self.0 + .method_hash([250, 80, 229, 210], (p0, p1)) + .expect("method not found (this should never happen)") + } + } + #[doc = "Container type for all input parameters for the `assetOf`function with signature `assetOf(bytes)` and selector `[225, 112, 169, 191]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "assetOf", abi = "assetOf(bytes)")] + pub struct AssetOfCall { + pub adaptor_data: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `assetsUsed`function with signature `assetsUsed(bytes)` and selector `[174, 255, 221, 222]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "assetsUsed", abi = "assetsUsed(bytes)")] + pub struct AssetsUsedCall { + pub adaptor_data: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `balanceOf`function with signature `balanceOf(bytes)` and selector `[120, 65, 83, 101]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "balanceOf", abi = "balanceOf(bytes)")] + pub struct BalanceOfCall { + pub adaptor_data: ethers::core::types::Bytes, + } + #[doc = "Container type for all input parameters for the `borrowFromAaveV3Morpho`function with signature `borrowFromAaveV3Morpho(address,uint256,uint256)` and selector `[166, 207, 186, 154]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall( + name = "borrowFromAaveV3Morpho", + abi = "borrowFromAaveV3Morpho(address,uint256,uint256)" + )] + pub struct BorrowFromAaveV3MorphoCall { + pub underlying: ethers::core::types::Address, + pub amount_to_borrow: ethers::core::types::U256, + pub max_iterations: ethers::core::types::U256, + } + #[doc = "Container type for all input parameters for the `deposit`function with signature `deposit(uint256,bytes,bytes)` and selector `[105, 68, 92, 49]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "deposit", abi = "deposit(uint256,bytes,bytes)")] + pub struct DepositCall( + pub ethers::core::types::U256, + pub ethers::core::types::Bytes, + pub ethers::core::types::Bytes, + ); + #[doc = "Container type for all input parameters for the `identifier`function with signature `identifier()` and selector `[121, 152, 161, 196]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "identifier", abi = "identifier()")] + pub struct IdentifierCall; + #[doc = "Container type for all input parameters for the `isDebt`function with signature `isDebt()` and selector `[137, 53, 58, 9]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "isDebt", abi = "isDebt()")] + pub struct IsDebtCall; + #[doc = "Container type for all input parameters for the `minimumHealthFactor`function with signature `minimumHealthFactor()` and selector `[28, 175, 248, 177]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "minimumHealthFactor", abi = "minimumHealthFactor()")] + pub struct MinimumHealthFactorCall; + #[doc = "Container type for all input parameters for the `morpho`function with signature `morpho()` and selector `[216, 251, 200, 51]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "morpho", abi = "morpho()")] + pub struct MorphoCall; + #[doc = "Container type for all input parameters for the `repayAaveV3MorphoDebt`function with signature `repayAaveV3MorphoDebt(address,uint256)` and selector `[229, 175, 217, 182]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall( + name = "repayAaveV3MorphoDebt", + abi = "repayAaveV3MorphoDebt(address,uint256)" + )] + pub struct RepayAaveV3MorphoDebtCall { + pub token_to_repay: ethers::core::types::Address, + pub amount_to_repay: ethers::core::types::U256, + } + #[doc = "Container type for all input parameters for the `revokeApproval`function with signature `revokeApproval(address,address)` and selector `[211, 191, 231, 106]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "revokeApproval", abi = "revokeApproval(address,address)")] + pub struct RevokeApprovalCall { + pub asset: ethers::core::types::Address, + pub spender: ethers::core::types::Address, + } + #[doc = "Container type for all input parameters for the `slippage`function with signature `slippage()` and selector `[62, 3, 42, 59]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "slippage", abi = "slippage()")] + pub struct SlippageCall; + #[doc = "Container type for all input parameters for the `withdraw`function with signature `withdraw(uint256,address,bytes,bytes)` and selector `[201, 17, 27, 215]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "withdraw", abi = "withdraw(uint256,address,bytes,bytes)")] + pub struct WithdrawCall( + pub ethers::core::types::U256, + pub ethers::core::types::Address, + pub ethers::core::types::Bytes, + pub ethers::core::types::Bytes, + ); + #[doc = "Container type for all input parameters for the `withdrawableFrom`function with signature `withdrawableFrom(bytes,bytes)` and selector `[250, 80, 229, 210]`"] + #[derive( + Clone, + Debug, + Default, + Eq, + PartialEq, + ethers :: contract :: EthCall, + ethers :: contract :: EthDisplay, + serde :: Deserialize, + serde :: Serialize, + )] + #[ethcall(name = "withdrawableFrom", abi = "withdrawableFrom(bytes,bytes)")] + pub struct WithdrawableFromCall( + pub ethers::core::types::Bytes, + pub ethers::core::types::Bytes, + ); + #[derive(Debug, Clone, PartialEq, Eq, ethers :: contract :: EthAbiType)] + pub enum MorphoAaveV3DebtTokenAdaptorV1Calls { + AssetOf(AssetOfCall), + AssetsUsed(AssetsUsedCall), + BalanceOf(BalanceOfCall), + BorrowFromAaveV3Morpho(BorrowFromAaveV3MorphoCall), + Deposit(DepositCall), + Identifier(IdentifierCall), + IsDebt(IsDebtCall), + MinimumHealthFactor(MinimumHealthFactorCall), + Morpho(MorphoCall), + RepayAaveV3MorphoDebt(RepayAaveV3MorphoDebtCall), + RevokeApproval(RevokeApprovalCall), + Slippage(SlippageCall), + Withdraw(WithdrawCall), + WithdrawableFrom(WithdrawableFromCall), + } + impl ethers::core::abi::AbiDecode for MorphoAaveV3DebtTokenAdaptorV1Calls { + fn decode(data: impl AsRef<[u8]>) -> Result { + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3DebtTokenAdaptorV1Calls::AssetOf(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3DebtTokenAdaptorV1Calls::AssetsUsed(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3DebtTokenAdaptorV1Calls::BalanceOf(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3DebtTokenAdaptorV1Calls::BorrowFromAaveV3Morpho( + decoded, + )); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3DebtTokenAdaptorV1Calls::Deposit(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3DebtTokenAdaptorV1Calls::Identifier(decoded)); + } + if let Ok(decoded) = ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3DebtTokenAdaptorV1Calls::IsDebt(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3DebtTokenAdaptorV1Calls::MinimumHealthFactor( + decoded, + )); + } + if let Ok(decoded) = ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3DebtTokenAdaptorV1Calls::Morpho(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3DebtTokenAdaptorV1Calls::RepayAaveV3MorphoDebt( + decoded, + )); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3DebtTokenAdaptorV1Calls::RevokeApproval(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3DebtTokenAdaptorV1Calls::Slippage(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3DebtTokenAdaptorV1Calls::Withdraw(decoded)); + } + if let Ok(decoded) = + ::decode(data.as_ref()) + { + return Ok(MorphoAaveV3DebtTokenAdaptorV1Calls::WithdrawableFrom( + decoded, + )); + } + Err(ethers::core::abi::Error::InvalidData.into()) + } + } + impl ethers::core::abi::AbiEncode for MorphoAaveV3DebtTokenAdaptorV1Calls { + fn encode(self) -> Vec { + match self { + MorphoAaveV3DebtTokenAdaptorV1Calls::AssetOf(element) => element.encode(), + MorphoAaveV3DebtTokenAdaptorV1Calls::AssetsUsed(element) => element.encode(), + MorphoAaveV3DebtTokenAdaptorV1Calls::BalanceOf(element) => element.encode(), + MorphoAaveV3DebtTokenAdaptorV1Calls::BorrowFromAaveV3Morpho(element) => { + element.encode() + } + MorphoAaveV3DebtTokenAdaptorV1Calls::Deposit(element) => element.encode(), + MorphoAaveV3DebtTokenAdaptorV1Calls::Identifier(element) => element.encode(), + MorphoAaveV3DebtTokenAdaptorV1Calls::IsDebt(element) => element.encode(), + MorphoAaveV3DebtTokenAdaptorV1Calls::MinimumHealthFactor(element) => { + element.encode() + } + MorphoAaveV3DebtTokenAdaptorV1Calls::Morpho(element) => element.encode(), + MorphoAaveV3DebtTokenAdaptorV1Calls::RepayAaveV3MorphoDebt(element) => { + element.encode() + } + MorphoAaveV3DebtTokenAdaptorV1Calls::RevokeApproval(element) => element.encode(), + MorphoAaveV3DebtTokenAdaptorV1Calls::Slippage(element) => element.encode(), + MorphoAaveV3DebtTokenAdaptorV1Calls::Withdraw(element) => element.encode(), + MorphoAaveV3DebtTokenAdaptorV1Calls::WithdrawableFrom(element) => element.encode(), + } + } + } + impl ::std::fmt::Display for MorphoAaveV3DebtTokenAdaptorV1Calls { + fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { + match self { + MorphoAaveV3DebtTokenAdaptorV1Calls::AssetOf(element) => element.fmt(f), + MorphoAaveV3DebtTokenAdaptorV1Calls::AssetsUsed(element) => element.fmt(f), + MorphoAaveV3DebtTokenAdaptorV1Calls::BalanceOf(element) => element.fmt(f), + MorphoAaveV3DebtTokenAdaptorV1Calls::BorrowFromAaveV3Morpho(element) => { + element.fmt(f) + } + MorphoAaveV3DebtTokenAdaptorV1Calls::Deposit(element) => element.fmt(f), + MorphoAaveV3DebtTokenAdaptorV1Calls::Identifier(element) => element.fmt(f), + MorphoAaveV3DebtTokenAdaptorV1Calls::IsDebt(element) => element.fmt(f), + MorphoAaveV3DebtTokenAdaptorV1Calls::MinimumHealthFactor(element) => element.fmt(f), + MorphoAaveV3DebtTokenAdaptorV1Calls::Morpho(element) => element.fmt(f), + MorphoAaveV3DebtTokenAdaptorV1Calls::RepayAaveV3MorphoDebt(element) => { + element.fmt(f) + } + MorphoAaveV3DebtTokenAdaptorV1Calls::RevokeApproval(element) => element.fmt(f), + MorphoAaveV3DebtTokenAdaptorV1Calls::Slippage(element) => element.fmt(f), + MorphoAaveV3DebtTokenAdaptorV1Calls::Withdraw(element) => element.fmt(f), + MorphoAaveV3DebtTokenAdaptorV1Calls::WithdrawableFrom(element) => element.fmt(f), + } + } + } + impl ::std::convert::From for MorphoAaveV3DebtTokenAdaptorV1Calls { + fn from(var: AssetOfCall) -> Self { + MorphoAaveV3DebtTokenAdaptorV1Calls::AssetOf(var) + } + } + impl ::std::convert::From for MorphoAaveV3DebtTokenAdaptorV1Calls { + fn from(var: AssetsUsedCall) -> Self { + MorphoAaveV3DebtTokenAdaptorV1Calls::AssetsUsed(var) + } + } + impl ::std::convert::From for MorphoAaveV3DebtTokenAdaptorV1Calls { + fn from(var: BalanceOfCall) -> Self { + MorphoAaveV3DebtTokenAdaptorV1Calls::BalanceOf(var) + } + } + impl ::std::convert::From for MorphoAaveV3DebtTokenAdaptorV1Calls { + fn from(var: BorrowFromAaveV3MorphoCall) -> Self { + MorphoAaveV3DebtTokenAdaptorV1Calls::BorrowFromAaveV3Morpho(var) + } + } + impl ::std::convert::From for MorphoAaveV3DebtTokenAdaptorV1Calls { + fn from(var: DepositCall) -> Self { + MorphoAaveV3DebtTokenAdaptorV1Calls::Deposit(var) + } + } + impl ::std::convert::From for MorphoAaveV3DebtTokenAdaptorV1Calls { + fn from(var: IdentifierCall) -> Self { + MorphoAaveV3DebtTokenAdaptorV1Calls::Identifier(var) + } + } + impl ::std::convert::From for MorphoAaveV3DebtTokenAdaptorV1Calls { + fn from(var: IsDebtCall) -> Self { + MorphoAaveV3DebtTokenAdaptorV1Calls::IsDebt(var) + } + } + impl ::std::convert::From for MorphoAaveV3DebtTokenAdaptorV1Calls { + fn from(var: MinimumHealthFactorCall) -> Self { + MorphoAaveV3DebtTokenAdaptorV1Calls::MinimumHealthFactor(var) + } + } + impl ::std::convert::From for MorphoAaveV3DebtTokenAdaptorV1Calls { + fn from(var: MorphoCall) -> Self { + MorphoAaveV3DebtTokenAdaptorV1Calls::Morpho(var) + } + } + impl ::std::convert::From for MorphoAaveV3DebtTokenAdaptorV1Calls { + fn from(var: RepayAaveV3MorphoDebtCall) -> Self { + MorphoAaveV3DebtTokenAdaptorV1Calls::RepayAaveV3MorphoDebt(var) + } + } + impl ::std::convert::From for MorphoAaveV3DebtTokenAdaptorV1Calls { + fn from(var: RevokeApprovalCall) -> Self { + MorphoAaveV3DebtTokenAdaptorV1Calls::RevokeApproval(var) + } + } + impl ::std::convert::From for MorphoAaveV3DebtTokenAdaptorV1Calls { + fn from(var: SlippageCall) -> Self { + MorphoAaveV3DebtTokenAdaptorV1Calls::Slippage(var) + } + } + impl ::std::convert::From for MorphoAaveV3DebtTokenAdaptorV1Calls { + fn from(var: WithdrawCall) -> Self { + MorphoAaveV3DebtTokenAdaptorV1Calls::Withdraw(var) + } + } + impl ::std::convert::From for MorphoAaveV3DebtTokenAdaptorV1Calls { + fn from(var: WithdrawableFromCall) -> Self { + MorphoAaveV3DebtTokenAdaptorV1Calls::WithdrawableFrom(var) + } + } +} diff --git a/steward_abi_build/src/main.rs b/steward_abi_build/src/main.rs index ad76bce4..caf48135 100644 --- a/steward_abi_build/src/main.rs +++ b/steward_abi_build/src/main.rs @@ -30,6 +30,26 @@ fn main() { ), ("BalancerPoolAdaptorV1", "balancer_pool_adaptor_v1"), ("FTokenAdaptor", "f_token_adaptor"), + ( + "MorphoAaveV2ATokenAdaptorV1", + "morpho_aave_v2_a_token_adaptor_v1", + ), + ( + "MorphoAaveV2DebtTokenAdaptorV1", + "morpho_aave_v2_debt_token_adaptor_v1", + ), + ( + "MorphoAaveV3ATokenCollateralAdaptorV1", + "morpho_aave_v3_a_token_collateral_adaptor_v1", + ), + ( + "MorphoAaveV3ATokenP2PAdaptorV1", + "morpho_aave_v3_a_token_p2p_adaptor_v1", + ), + ( + "MorphoAaveV3DebtTokenAdaptorV1", + "morpho_aave_v3_debt_token_adaptor_v1", + ), ]; contracts @@ -38,7 +58,7 @@ fn main() { } fn generate_contract_abi(name: &str, file_name: &str) { - let abigen = match Abigen::new(name, format!("../steward_abi/{}.json", name)) { + let abigen = match Abigen::new(name, format!("../steward_abi/abi/{}.json", name)) { Ok(abigen) => abigen, Err(e) => { println!("Could not open {}.json: {}", name, e); diff --git a/steward_proto_go/steward_proto/aave_v3_debt_token.pb.go b/steward_proto_go/steward_proto/aave_v3_debt_token.pb.go index 929d70e1..a7ab8089 100644 --- a/steward_proto_go/steward_proto/aave_v3_debt_token.pb.go +++ b/steward_proto_go/steward_proto/aave_v3_debt_token.pb.go @@ -480,6 +480,11 @@ type AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan struct { // *AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_AaveV2EnableAssetAsCollateralV1Calls // *AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_BalancerPoolV1Calls // *AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_FTokenV1Calls + // *AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV2ATokenV1Calls + // *AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV2DebtTokenV1Calls + // *AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3ATokenCollateralV1Calls + // *AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3ATokenP2PV1Calls + // *AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3DebtTokenV1Calls CallData isAaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_CallData `protobuf_oneof:"call_data"` } @@ -655,6 +660,41 @@ func (x *AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan) GetFTokenV1Call return nil } +func (x *AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan) GetMorphoAaveV2ATokenV1Calls() *MorphoAaveV2ATokenAdaptorV1Calls { + if x, ok := x.GetCallData().(*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV2ATokenV1Calls); ok { + return x.MorphoAaveV2ATokenV1Calls + } + return nil +} + +func (x *AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan) GetMorphoAaveV2DebtTokenV1Calls() *MorphoAaveV2DebtTokenAdaptorV1Calls { + if x, ok := x.GetCallData().(*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV2DebtTokenV1Calls); ok { + return x.MorphoAaveV2DebtTokenV1Calls + } + return nil +} + +func (x *AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan) GetMorphoAaveV3ATokenCollateralV1Calls() *MorphoAaveV3ATokenCollateralAdaptorV1Calls { + if x, ok := x.GetCallData().(*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3ATokenCollateralV1Calls); ok { + return x.MorphoAaveV3ATokenCollateralV1Calls + } + return nil +} + +func (x *AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan) GetMorphoAaveV3ATokenP2PV1Calls() *MorphoAaveV3ATokenP2PAdaptorV1Calls { + if x, ok := x.GetCallData().(*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3ATokenP2PV1Calls); ok { + return x.MorphoAaveV3ATokenP2PV1Calls + } + return nil +} + +func (x *AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan) GetMorphoAaveV3DebtTokenV1Calls() *MorphoAaveV3DebtTokenAdaptorV1Calls { + if x, ok := x.GetCallData().(*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3DebtTokenV1Calls); ok { + return x.MorphoAaveV3DebtTokenV1Calls + } + return nil +} + type isAaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_CallData interface { isAaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_CallData() } @@ -749,6 +789,31 @@ type AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_FTokenV1Calls struct FTokenV1Calls *FTokenAdaptorV1Calls `protobuf:"bytes,19,opt,name=f_token_v1_calls,json=fTokenV1Calls,proto3,oneof"` } +type AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV2ATokenV1Calls struct { + // Represents function calls to the MorphoAaveV2AToken V1 + MorphoAaveV2ATokenV1Calls *MorphoAaveV2ATokenAdaptorV1Calls `protobuf:"bytes,20,opt,name=morpho_aave_v2_a_token_v1_calls,json=morphoAaveV2ATokenV1Calls,proto3,oneof"` +} + +type AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV2DebtTokenV1Calls struct { + // Represents function calls to the MorphoAaveV2DebtToken V1 + MorphoAaveV2DebtTokenV1Calls *MorphoAaveV2DebtTokenAdaptorV1Calls `protobuf:"bytes,21,opt,name=morpho_aave_v2_debt_token_v1_calls,json=morphoAaveV2DebtTokenV1Calls,proto3,oneof"` +} + +type AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3ATokenCollateralV1Calls struct { + // Represents function calls to the MorphoAaveV3ATokenCollateral V1 + MorphoAaveV3ATokenCollateralV1Calls *MorphoAaveV3ATokenCollateralAdaptorV1Calls `protobuf:"bytes,22,opt,name=morpho_aave_v3_a_token_collateral_v1_calls,json=morphoAaveV3ATokenCollateralV1Calls,proto3,oneof"` +} + +type AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3ATokenP2PV1Calls struct { + // Represents function calls to the MorphoAaveV3ATokenP2P V1 + MorphoAaveV3ATokenP2PV1Calls *MorphoAaveV3ATokenP2PAdaptorV1Calls `protobuf:"bytes,23,opt,name=morpho_aave_v3_a_token_p2p_v1_calls,json=morphoAaveV3ATokenP2pV1Calls,proto3,oneof"` +} + +type AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3DebtTokenV1Calls struct { + // Represents function calls to the MorphoAaveV3DebtToken V1 + MorphoAaveV3DebtTokenV1Calls *MorphoAaveV3DebtTokenAdaptorV1Calls `protobuf:"bytes,24,opt,name=morpho_aave_v3_debt_token_v1_calls,json=morphoAaveV3DebtTokenV1Calls,proto3,oneof"` +} + func (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_UniswapV3V1Calls) isAaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_CallData() { } @@ -803,6 +868,21 @@ func (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_BalancerPoolV1Call func (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_FTokenV1Calls) isAaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_CallData() { } +func (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV2ATokenV1Calls) isAaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_CallData() { +} + +func (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV2DebtTokenV1Calls) isAaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_CallData() { +} + +func (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3ATokenCollateralV1Calls) isAaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_CallData() { +} + +func (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3ATokenP2PV1Calls) isAaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_CallData() { +} + +func (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3DebtTokenV1Calls) isAaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_CallData() { +} + var File_adaptors_aave_aave_v3_debt_token_proto protoreflect.FileDescriptor var file_adaptors_aave_aave_v3_debt_token_proto_rawDesc = []byte{ @@ -821,202 +901,257 @@ var file_adaptors_aave_aave_v3_debt_token_proto_rawDesc = []byte{ 0x73, 0x2f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x2f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x66, 0x72, 0x61, 0x78, 0x2f, 0x66, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x61, 0x64, 0x61, - 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x75, 0x6e, - 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, - 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, - 0x2f, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x75, 0x6e, 0x69, 0x73, 0x77, - 0x61, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, - 0x72, 0x73, 0x2f, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x61, 0x64, 0x61, 0x70, - 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x78, 0x2f, 0x7a, 0x65, 0x72, 0x6f, - 0x5f, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, - 0x72, 0x73, 0x2f, 0x6f, 0x6e, 0x65, 0x69, 0x6e, 0x63, 0x68, 0x2f, 0x6f, 0x6e, 0x65, 0x69, 0x6e, - 0x63, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, - 0x72, 0x73, 0x2f, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x6d, 0x70, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, - 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x61, 0x64, - 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x73, 0x6f, 0x6d, 0x6d, 0x65, 0x6c, 0x69, 0x65, 0x72, - 0x2f, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x5f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, - 0x61, 0x61, 0x76, 0x65, 0x2f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x73, 0x5f, 0x63, 0x6f, 0x6c, - 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe6, 0x14, 0x0a, 0x18, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, - 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, - 0x56, 0x31, 0x12, 0x45, 0x0a, 0x0f, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x5f, 0x61, 0x70, 0x70, - 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x74, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, - 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x76, 0x6f, 0x6b, - 0x65, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x12, 0x5f, 0x0a, 0x10, 0x62, 0x6f, 0x72, - 0x72, 0x6f, 0x77, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, - 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x42, 0x6f, 0x72, 0x72, 0x6f, 0x77, - 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x61, 0x76, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x62, 0x6f, 0x72, 0x72, - 0x6f, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x61, 0x76, 0x65, 0x12, 0x5c, 0x0a, 0x0f, 0x72, 0x65, - 0x70, 0x61, 0x79, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, - 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x61, 0x79, 0x41, - 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x61, 0x79, - 0x41, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x12, 0x66, 0x0a, 0x13, 0x72, 0x65, 0x70, 0x61, - 0x79, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, - 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x61, - 0x79, 0x57, 0x69, 0x74, 0x68, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x10, - 0x72, 0x65, 0x70, 0x61, 0x79, 0x57, 0x69, 0x74, 0x68, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, - 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x6c, 0x6f, 0x61, 0x6e, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x61, 0x64, 0x61, + 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, + 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x61, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x61, 0x64, 0x61, 0x70, 0x74, + 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, + 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x37, 0x61, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, + 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, + 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, + 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x70, 0x32, 0x70, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, + 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, + 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, + 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, + 0x5f, 0x76, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x61, 0x64, 0x61, 0x70, 0x74, + 0x6f, 0x72, 0x73, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x73, 0x77, 0x61, 0x70, + 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x66, 0x65, + 0x65, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, + 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x78, 0x2f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x78, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6f, 0x6e, + 0x65, 0x69, 0x6e, 0x63, 0x68, 0x2f, 0x6f, 0x6e, 0x65, 0x69, 0x6e, 0x63, 0x68, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x76, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x1a, 0x13, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x62, 0x61, 0x73, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, + 0x73, 0x2f, 0x73, 0x6f, 0x6d, 0x6d, 0x65, 0x6c, 0x69, 0x65, 0x72, 0x2f, 0x63, 0x65, 0x6c, 0x6c, + 0x61, 0x72, 0x5f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x3e, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x61, 0x61, 0x76, 0x65, 0x2f, + 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, + 0x73, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x73, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0xe6, 0x19, 0x0a, 0x18, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x12, 0x45, 0x0a, + 0x0f, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, + 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x70, 0x70, 0x72, + 0x6f, 0x76, 0x61, 0x6c, 0x12, 0x5f, 0x0a, 0x10, 0x62, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x5f, 0x66, + 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, + 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, + 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, + 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x42, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x41, + 0x61, 0x76, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x62, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x46, 0x72, 0x6f, + 0x6d, 0x41, 0x61, 0x76, 0x65, 0x12, 0x5c, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x61, 0x79, 0x5f, 0x61, + 0x61, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, + 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, + 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, + 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x61, 0x79, 0x41, 0x61, 0x76, 0x65, 0x44, 0x65, + 0x62, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x61, 0x79, 0x41, 0x61, 0x76, 0x65, 0x44, + 0x65, 0x62, 0x74, 0x12, 0x66, 0x0a, 0x13, 0x72, 0x65, 0x70, 0x61, 0x79, 0x5f, 0x77, 0x69, 0x74, + 0x68, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x35, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, + 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, + 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x61, 0x79, 0x57, 0x69, 0x74, 0x68, + 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x10, 0x72, 0x65, 0x70, 0x61, 0x79, + 0x57, 0x69, 0x74, 0x68, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x0a, 0x66, + 0x6c, 0x61, 0x73, 0x68, 0x5f, 0x6c, 0x6f, 0x61, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2e, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, + 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x4c, 0x6f, 0x61, 0x6e, 0x48, + 0x00, 0x52, 0x09, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x4c, 0x6f, 0x61, 0x6e, 0x1a, 0x3e, 0x0a, 0x0e, + 0x42, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x61, 0x76, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x3d, 0x0a, 0x0d, + 0x52, 0x65, 0x70, 0x61, 0x79, 0x41, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x55, 0x0a, 0x10, 0x52, + 0x65, 0x70, 0x61, 0x79, 0x57, 0x69, 0x74, 0x68, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, + 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x75, 0x6e, 0x64, 0x65, 0x72, + 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x1a, 0xab, 0x01, 0x0a, 0x09, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x4c, 0x6f, 0x61, 0x6e, + 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x61, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x61, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x6f, 0x61, 0x6e, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x6f, 0x61, 0x6e, 0x41, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x12, 0x5a, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x46, 0x6c, 0x61, 0x73, 0x68, - 0x4c, 0x6f, 0x61, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x66, 0x6c, 0x61, 0x73, 0x68, 0x4c, 0x6f, 0x61, - 0x6e, 0x1a, 0x3e, 0x0a, 0x0e, 0x42, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x41, - 0x61, 0x76, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x1a, 0x3d, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x61, 0x79, 0x41, 0x61, 0x76, 0x65, 0x44, 0x65, - 0x62, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x1a, 0x55, 0x0a, 0x10, 0x52, 0x65, 0x70, 0x61, 0x79, 0x57, 0x69, 0x74, 0x68, 0x41, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x79, 0x69, - 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, - 0x75, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, - 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xab, 0x01, 0x0a, 0x09, 0x46, 0x6c, 0x61, 0x73, - 0x68, 0x4c, 0x6f, 0x61, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x61, 0x6e, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x61, 0x6e, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x6f, 0x61, 0x6e, 0x5f, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x6f, - 0x61, 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x5a, 0x0a, 0x06, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x73, 0x74, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, - 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, - 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x43, 0x61, 0x6c, 0x6c, 0x46, 0x6f, 0x72, 0x41, 0x61, - 0x76, 0x65, 0x56, 0x33, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x6c, 0x6f, 0x61, 0x6e, 0x52, 0x06, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0xfa, 0x0d, 0x0a, 0x1d, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, - 0x72, 0x43, 0x61, 0x6c, 0x6c, 0x46, 0x6f, 0x72, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x46, 0x6c, - 0x61, 0x73, 0x68, 0x6c, 0x6f, 0x61, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, - 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, - 0x72, 0x12, 0x54, 0x0a, 0x13, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, 0x33, 0x5f, - 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x6e, 0x69, 0x73, - 0x77, 0x61, 0x70, 0x56, 0x33, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, - 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x10, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, - 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x58, 0x0a, 0x15, 0x61, 0x61, 0x76, 0x65, 0x5f, - 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, - 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x11, - 0x61, 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, - 0x73, 0x12, 0x61, 0x0a, 0x18, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, - 0x2e, 0x41, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, - 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x14, - 0x61, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, - 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x64, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, - 0x5f, 0x63, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, - 0x73, 0x48, 0x00, 0x52, 0x15, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x58, 0x0a, 0x15, 0x61, 0x61, - 0x76, 0x65, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, - 0x6c, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, - 0x00, 0x52, 0x11, 0x61, 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x32, 0x43, - 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x61, 0x0a, 0x18, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x62, - 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, - 0x00, 0x52, 0x14, 0x61, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x5f, 0x0a, 0x18, 0x61, 0x61, 0x76, 0x65, 0x5f, - 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, - 0x6c, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x74, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, - 0x73, 0x48, 0x00, 0x52, 0x13, 0x61, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x68, 0x0a, 0x1b, 0x61, 0x61, 0x76, 0x65, - 0x5f, 0x76, 0x33, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, - 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, - 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, - 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, - 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x16, 0x61, 0x61, 0x76, 0x65, - 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, - 0x6c, 0x73, 0x12, 0x4e, 0x0a, 0x11, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x63, 0x68, 0x5f, 0x76, - 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x6e, 0x65, 0x49, 0x6e, - 0x63, 0x68, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, - 0x48, 0x00, 0x52, 0x0e, 0x6f, 0x6e, 0x65, 0x49, 0x6e, 0x63, 0x68, 0x56, 0x31, 0x43, 0x61, 0x6c, - 0x6c, 0x73, 0x12, 0x67, 0x0a, 0x1a, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, - 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x65, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x73, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, - 0x73, 0x48, 0x00, 0x52, 0x16, 0x66, 0x65, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x73, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x48, 0x0a, 0x0f, 0x7a, - 0x65, 0x72, 0x6f, 0x5f, 0x78, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, - 0x33, 0x2e, 0x5a, 0x65, 0x72, 0x6f, 0x58, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, - 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x7a, 0x65, 0x72, 0x6f, 0x58, 0x56, 0x31, - 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x67, 0x0a, 0x1a, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x77, 0x69, - 0x74, 0x68, 0x5f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, - 0x6c, 0x6c, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x57, 0x69, 0x74, 0x68, 0x55, - 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, - 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x16, 0x73, 0x77, 0x61, 0x70, 0x57, 0x69, 0x74, 0x68, - 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x60, - 0x0a, 0x17, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, - 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x56, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, - 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x14, 0x76, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x67, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, - 0x12, 0x4a, 0x0a, 0x0f, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, - 0x6c, 0x6c, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x74, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x41, 0x64, 0x61, - 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x63, - 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x54, 0x0a, 0x13, - 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, 0x33, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, - 0x6c, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, + 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x41, 0x64, 0x61, 0x70, 0x74, + 0x6f, 0x72, 0x43, 0x61, 0x6c, 0x6c, 0x46, 0x6f, 0x72, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x46, + 0x6c, 0x61, 0x73, 0x68, 0x6c, 0x6f, 0x61, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x1a, 0xfa, 0x12, 0x0a, 0x1d, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x43, 0x61, 0x6c, 0x6c, + 0x46, 0x6f, 0x72, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x46, 0x6c, 0x61, 0x73, 0x68, 0x6c, 0x6f, + 0x61, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x54, 0x0a, 0x13, + 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, 0x33, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, + 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, - 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, - 0x52, 0x10, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, 0x56, 0x32, 0x43, 0x61, 0x6c, - 0x6c, 0x73, 0x12, 0x94, 0x01, 0x0a, 0x2b, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x73, 0x5f, 0x63, - 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, - 0x6c, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, - 0x72, 0x61, 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, - 0x73, 0x48, 0x00, 0x52, 0x24, 0x61, 0x61, 0x76, 0x65, 0x56, 0x32, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, - 0x61, 0x6c, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x5d, 0x0a, 0x16, 0x62, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, - 0x6c, 0x6c, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x74, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, - 0x6f, 0x6f, 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, - 0x73, 0x48, 0x00, 0x52, 0x13, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x6f, 0x6f, - 0x6c, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x4b, 0x0a, 0x10, 0x66, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x13, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, - 0x46, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, - 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x66, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, - 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x61, - 0x74, 0x61, 0x42, 0x0a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5b, - 0x0a, 0x1d, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, - 0x3a, 0x0a, 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, + 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, + 0x52, 0x10, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, 0x56, 0x31, 0x43, 0x61, 0x6c, + 0x6c, 0x73, 0x12, 0x58, 0x0a, 0x15, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, + 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x11, 0x61, 0x61, 0x76, 0x65, 0x41, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x61, 0x0a, 0x18, + 0x61, 0x61, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, + 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, - 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, - 0x6f, 0x72, 0x56, 0x31, 0x52, 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x42, 0x10, 0x5a, 0x0e, 0x2f, - 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, + 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x14, 0x61, 0x61, 0x76, 0x65, 0x44, + 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, + 0x64, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, + 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x15, + 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x32, + 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x58, 0x0a, 0x15, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x61, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x11, 0x61, 0x61, + 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, + 0x61, 0x0a, 0x18, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x14, 0x61, 0x61, + 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x32, 0x43, 0x61, 0x6c, + 0x6c, 0x73, 0x12, 0x5f, 0x0a, 0x18, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, + 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x13, + 0x61, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, + 0x6c, 0x6c, 0x73, 0x12, 0x68, 0x0a, 0x1b, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x64, + 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, + 0x6c, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, + 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x16, 0x61, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, + 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x4e, 0x0a, + 0x11, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x63, 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, + 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x6e, 0x65, 0x49, 0x6e, 0x63, 0x68, 0x41, 0x64, 0x61, + 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x6f, + 0x6e, 0x65, 0x49, 0x6e, 0x63, 0x68, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x67, 0x0a, + 0x1a, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x73, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x46, + 0x65, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x41, 0x64, + 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x16, + 0x66, 0x65, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x56, + 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x48, 0x0a, 0x0f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x78, + 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x5a, 0x65, 0x72, + 0x6f, 0x58, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, + 0x48, 0x00, 0x52, 0x0c, 0x7a, 0x65, 0x72, 0x6f, 0x58, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, + 0x12, 0x67, 0x0a, 0x1a, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x75, 0x6e, + 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, + 0x33, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x57, 0x69, 0x74, 0x68, 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, + 0x70, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, + 0x00, 0x52, 0x16, 0x73, 0x77, 0x61, 0x70, 0x57, 0x69, 0x74, 0x68, 0x55, 0x6e, 0x69, 0x73, 0x77, + 0x61, 0x70, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x60, 0x0a, 0x17, 0x76, 0x65, 0x73, + 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x63, + 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, + 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, + 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x14, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x69, + 0x6d, 0x70, 0x6c, 0x65, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x63, + 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, + 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, + 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x72, + 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x54, 0x0a, 0x13, 0x75, 0x6e, 0x69, 0x73, 0x77, + 0x61, 0x70, 0x5f, 0x76, 0x33, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, + 0x33, 0x2e, 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, 0x41, 0x64, 0x61, 0x70, 0x74, + 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x10, 0x75, 0x6e, 0x69, + 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x94, 0x01, + 0x0a, 0x2b, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x73, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, + 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, + 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x73, 0x73, + 0x65, 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x41, 0x64, + 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x24, + 0x61, 0x61, 0x76, 0x65, 0x56, 0x32, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x73, 0x73, 0x65, + 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x56, 0x31, 0x43, + 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x5d, 0x0a, 0x16, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, + 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, + 0x33, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x64, + 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x13, + 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x31, 0x43, 0x61, + 0x6c, 0x6c, 0x73, 0x12, 0x4b, 0x0a, 0x10, 0x66, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, + 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, + 0x00, 0x52, 0x0d, 0x66, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, + 0x12, 0x72, 0x0a, 0x1f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, + 0x76, 0x32, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, + 0x6c, 0x6c, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x74, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, + 0x65, 0x56, 0x32, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, + 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x19, 0x6d, 0x6f, 0x72, 0x70, 0x68, + 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, + 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x7b, 0x0a, 0x22, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, + 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, + 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, + 0x73, 0x48, 0x00, 0x52, 0x1c, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, + 0x32, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, + 0x73, 0x12, 0x91, 0x01, 0x0a, 0x2a, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, + 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, + 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, + 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, + 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, + 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, + 0x52, 0x23, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x56, 0x31, + 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x7c, 0x0a, 0x23, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, + 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, + 0x70, 0x32, 0x70, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x17, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, + 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x50, 0x32, 0x50, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, + 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x1c, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, + 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x32, 0x70, 0x56, 0x31, 0x43, 0x61, + 0x6c, 0x6c, 0x73, 0x12, 0x7b, 0x0a, 0x22, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, + 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, + 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, + 0x48, 0x00, 0x52, 0x1c, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, + 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, + 0x42, 0x0b, 0x0a, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x0a, 0x0a, + 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x5b, 0x0a, 0x1d, 0x41, 0x61, 0x76, + 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x3a, 0x0a, 0x05, 0x63, 0x61, + 0x6c, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, + 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x52, + 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x42, 0x10, 0x5a, 0x0e, 0x2f, 0x73, 0x74, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1058,6 +1193,11 @@ var file_adaptors_aave_aave_v3_debt_token_proto_goTypes = []interface{}{ (*AaveV2EnableAssetAsCollateralAdaptorV1Calls)(nil), // 22: steward.v3.AaveV2EnableAssetAsCollateralAdaptorV1Calls (*BalancerPoolAdaptorV1Calls)(nil), // 23: steward.v3.BalancerPoolAdaptorV1Calls (*FTokenAdaptorV1Calls)(nil), // 24: steward.v3.FTokenAdaptorV1Calls + (*MorphoAaveV2ATokenAdaptorV1Calls)(nil), // 25: steward.v3.MorphoAaveV2ATokenAdaptorV1Calls + (*MorphoAaveV2DebtTokenAdaptorV1Calls)(nil), // 26: steward.v3.MorphoAaveV2DebtTokenAdaptorV1Calls + (*MorphoAaveV3ATokenCollateralAdaptorV1Calls)(nil), // 27: steward.v3.MorphoAaveV3ATokenCollateralAdaptorV1Calls + (*MorphoAaveV3ATokenP2PAdaptorV1Calls)(nil), // 28: steward.v3.MorphoAaveV3ATokenP2PAdaptorV1Calls + (*MorphoAaveV3DebtTokenAdaptorV1Calls)(nil), // 29: steward.v3.MorphoAaveV3DebtTokenAdaptorV1Calls } var file_adaptors_aave_aave_v3_debt_token_proto_depIdxs = []int32{ 7, // 0: steward.v3.AaveV3DebtTokenAdaptorV1.revoke_approval:type_name -> steward.v3.RevokeApproval @@ -1085,11 +1225,16 @@ var file_adaptors_aave_aave_v3_debt_token_proto_depIdxs = []int32{ 22, // 22: steward.v3.AaveV3DebtTokenAdaptorV1.AdaptorCallForAaveV3Flashloan.aave_v2_enable_asset_as_collateral_v1_calls:type_name -> steward.v3.AaveV2EnableAssetAsCollateralAdaptorV1Calls 23, // 23: steward.v3.AaveV3DebtTokenAdaptorV1.AdaptorCallForAaveV3Flashloan.balancer_pool_v1_calls:type_name -> steward.v3.BalancerPoolAdaptorV1Calls 24, // 24: steward.v3.AaveV3DebtTokenAdaptorV1.AdaptorCallForAaveV3Flashloan.f_token_v1_calls:type_name -> steward.v3.FTokenAdaptorV1Calls - 25, // [25:25] is the sub-list for method output_type - 25, // [25:25] is the sub-list for method input_type - 25, // [25:25] is the sub-list for extension type_name - 25, // [25:25] is the sub-list for extension extendee - 0, // [0:25] is the sub-list for field type_name + 25, // 25: steward.v3.AaveV3DebtTokenAdaptorV1.AdaptorCallForAaveV3Flashloan.morpho_aave_v2_a_token_v1_calls:type_name -> steward.v3.MorphoAaveV2ATokenAdaptorV1Calls + 26, // 26: steward.v3.AaveV3DebtTokenAdaptorV1.AdaptorCallForAaveV3Flashloan.morpho_aave_v2_debt_token_v1_calls:type_name -> steward.v3.MorphoAaveV2DebtTokenAdaptorV1Calls + 27, // 27: steward.v3.AaveV3DebtTokenAdaptorV1.AdaptorCallForAaveV3Flashloan.morpho_aave_v3_a_token_collateral_v1_calls:type_name -> steward.v3.MorphoAaveV3ATokenCollateralAdaptorV1Calls + 28, // 28: steward.v3.AaveV3DebtTokenAdaptorV1.AdaptorCallForAaveV3Flashloan.morpho_aave_v3_a_token_p2p_v1_calls:type_name -> steward.v3.MorphoAaveV3ATokenP2PAdaptorV1Calls + 29, // 29: steward.v3.AaveV3DebtTokenAdaptorV1.AdaptorCallForAaveV3Flashloan.morpho_aave_v3_debt_token_v1_calls:type_name -> steward.v3.MorphoAaveV3DebtTokenAdaptorV1Calls + 30, // [30:30] is the sub-list for method output_type + 30, // [30:30] is the sub-list for method input_type + 30, // [30:30] is the sub-list for extension type_name + 30, // [30:30] is the sub-list for extension extendee + 0, // [0:30] is the sub-list for field type_name } func init() { file_adaptors_aave_aave_v3_debt_token_proto_init() } @@ -1103,6 +1248,11 @@ func file_adaptors_aave_aave_v3_debt_token_proto_init() { file_adaptors_compound_c_token_proto_init() file_adaptors_balancer_balancer_pool_proto_init() file_adaptors_frax_f_token_proto_init() + file_adaptors_morpho_morpho_aave_v2_a_token_proto_init() + file_adaptors_morpho_morpho_aave_v2_debt_token_proto_init() + file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_init() + file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_init() + file_adaptors_morpho_morpho_aave_v3_debt_token_proto_init() file_adaptors_uniswap_uniswap_v3_proto_init() file_adaptors_uniswap_swap_with_uniswap_proto_init() file_adaptors_fees_and_reserves_proto_init() @@ -1224,6 +1374,11 @@ func file_adaptors_aave_aave_v3_debt_token_proto_init() { (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_AaveV2EnableAssetAsCollateralV1Calls)(nil), (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_BalancerPoolV1Calls)(nil), (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_FTokenV1Calls)(nil), + (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV2ATokenV1Calls)(nil), + (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV2DebtTokenV1Calls)(nil), + (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3ATokenCollateralV1Calls)(nil), + (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3ATokenP2PV1Calls)(nil), + (*AaveV3DebtTokenAdaptorV1_AdaptorCallForAaveV3Flashloan_MorphoAaveV3DebtTokenV1Calls)(nil), } type x struct{} out := protoimpl.TypeBuilder{ diff --git a/steward_proto_go/steward_proto/balancer_pool.pb.go b/steward_proto_go/steward_proto/balancer_pool.pb.go index b380420a..e9e258d8 100644 --- a/steward_proto_go/steward_proto/balancer_pool.pb.go +++ b/steward_proto_go/steward_proto/balancer_pool.pb.go @@ -1,5 +1,5 @@ // -// Protos for function calls to the Compound CToken adaptor. +// Protos for function calls to the Balancer Pool adaptor. // Code generated by protoc-gen-go. DO NOT EDIT. // versions: @@ -72,7 +72,7 @@ func (BalancerPoolAdaptorV1_SwapKind) EnumDescriptor() ([]byte, []int) { return file_adaptors_balancer_balancer_pool_proto_rawDescGZIP(), []int{0, 0} } -// Represents call data for the Compound C Token adaptor V2, managing lending positions on Compound. +// Represents call data for the Balancer Pool adaptor V1, for managing pool positions on Balancer. type BalancerPoolAdaptorV1 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/steward_proto_go/steward_proto/cellar_v2.pb.go b/steward_proto_go/steward_proto/cellar_v2.pb.go index 37373e53..bc1e1bf3 100644 --- a/steward_proto_go/steward_proto/cellar_v2.pb.go +++ b/steward_proto_go/steward_proto/cellar_v2.pb.go @@ -372,6 +372,11 @@ type AdaptorCall struct { // *AdaptorCall_AaveV2EnableAssetAsCollateralV1Calls // *AdaptorCall_BalancerPoolV1Calls // *AdaptorCall_FTokenV1Calls + // *AdaptorCall_MorphoAaveV2ATokenV1Calls + // *AdaptorCall_MorphoAaveV2DebtTokenV1Calls + // *AdaptorCall_MorphoAaveV3ATokenCollateralV1Calls + // *AdaptorCall_MorphoAaveV3ATokenP2PV1Calls + // *AdaptorCall_MorphoAaveV3DebtTokenV1Calls CallData isAdaptorCall_CallData `protobuf_oneof:"call_data"` } @@ -547,6 +552,41 @@ func (x *AdaptorCall) GetFTokenV1Calls() *FTokenAdaptorV1Calls { return nil } +func (x *AdaptorCall) GetMorphoAaveV2ATokenV1Calls() *MorphoAaveV2ATokenAdaptorV1Calls { + if x, ok := x.GetCallData().(*AdaptorCall_MorphoAaveV2ATokenV1Calls); ok { + return x.MorphoAaveV2ATokenV1Calls + } + return nil +} + +func (x *AdaptorCall) GetMorphoAaveV2DebtTokenV1Calls() *MorphoAaveV2DebtTokenAdaptorV1Calls { + if x, ok := x.GetCallData().(*AdaptorCall_MorphoAaveV2DebtTokenV1Calls); ok { + return x.MorphoAaveV2DebtTokenV1Calls + } + return nil +} + +func (x *AdaptorCall) GetMorphoAaveV3ATokenCollateralV1Calls() *MorphoAaveV3ATokenCollateralAdaptorV1Calls { + if x, ok := x.GetCallData().(*AdaptorCall_MorphoAaveV3ATokenCollateralV1Calls); ok { + return x.MorphoAaveV3ATokenCollateralV1Calls + } + return nil +} + +func (x *AdaptorCall) GetMorphoAaveV3ATokenP2PV1Calls() *MorphoAaveV3ATokenP2PAdaptorV1Calls { + if x, ok := x.GetCallData().(*AdaptorCall_MorphoAaveV3ATokenP2PV1Calls); ok { + return x.MorphoAaveV3ATokenP2PV1Calls + } + return nil +} + +func (x *AdaptorCall) GetMorphoAaveV3DebtTokenV1Calls() *MorphoAaveV3DebtTokenAdaptorV1Calls { + if x, ok := x.GetCallData().(*AdaptorCall_MorphoAaveV3DebtTokenV1Calls); ok { + return x.MorphoAaveV3DebtTokenV1Calls + } + return nil +} + type isAdaptorCall_CallData interface { isAdaptorCall_CallData() } @@ -641,6 +681,31 @@ type AdaptorCall_FTokenV1Calls struct { FTokenV1Calls *FTokenAdaptorV1Calls `protobuf:"bytes,19,opt,name=f_token_v1_calls,json=fTokenV1Calls,proto3,oneof"` } +type AdaptorCall_MorphoAaveV2ATokenV1Calls struct { + // Represents function calls to the MorphoAaveV2AToken V1 + MorphoAaveV2ATokenV1Calls *MorphoAaveV2ATokenAdaptorV1Calls `protobuf:"bytes,20,opt,name=morpho_aave_v2_a_token_v1_calls,json=morphoAaveV2ATokenV1Calls,proto3,oneof"` +} + +type AdaptorCall_MorphoAaveV2DebtTokenV1Calls struct { + // Represents function calls to the MorphoAaveV2DebtToken V1 + MorphoAaveV2DebtTokenV1Calls *MorphoAaveV2DebtTokenAdaptorV1Calls `protobuf:"bytes,21,opt,name=morpho_aave_v2_debt_token_v1_calls,json=morphoAaveV2DebtTokenV1Calls,proto3,oneof"` +} + +type AdaptorCall_MorphoAaveV3ATokenCollateralV1Calls struct { + // Represents function calls to the MorphoAaveV3ATokenCollateral V1 + MorphoAaveV3ATokenCollateralV1Calls *MorphoAaveV3ATokenCollateralAdaptorV1Calls `protobuf:"bytes,22,opt,name=morpho_aave_v3_a_token_collateral_v1_calls,json=morphoAaveV3ATokenCollateralV1Calls,proto3,oneof"` +} + +type AdaptorCall_MorphoAaveV3ATokenP2PV1Calls struct { + // Represents function calls to the MorphoAaveV3ATokenP2P V1 + MorphoAaveV3ATokenP2PV1Calls *MorphoAaveV3ATokenP2PAdaptorV1Calls `protobuf:"bytes,23,opt,name=morpho_aave_v3_a_token_p2p_v1_calls,json=morphoAaveV3ATokenP2pV1Calls,proto3,oneof"` +} + +type AdaptorCall_MorphoAaveV3DebtTokenV1Calls struct { + // Represents function calls to the MorphoAaveV3DebtToken V1 + MorphoAaveV3DebtTokenV1Calls *MorphoAaveV3DebtTokenAdaptorV1Calls `protobuf:"bytes,24,opt,name=morpho_aave_v3_debt_token_v1_calls,json=morphoAaveV3DebtTokenV1Calls,proto3,oneof"` +} + func (*AdaptorCall_UniswapV3V1Calls) isAdaptorCall_CallData() {} func (*AdaptorCall_AaveATokenV1Calls) isAdaptorCall_CallData() {} @@ -677,6 +742,16 @@ func (*AdaptorCall_BalancerPoolV1Calls) isAdaptorCall_CallData() {} func (*AdaptorCall_FTokenV1Calls) isAdaptorCall_CallData() {} +func (*AdaptorCall_MorphoAaveV2ATokenV1Calls) isAdaptorCall_CallData() {} + +func (*AdaptorCall_MorphoAaveV2DebtTokenV1Calls) isAdaptorCall_CallData() {} + +func (*AdaptorCall_MorphoAaveV3ATokenCollateralV1Calls) isAdaptorCall_CallData() {} + +func (*AdaptorCall_MorphoAaveV3ATokenP2PV1Calls) isAdaptorCall_CallData() {} + +func (*AdaptorCall_MorphoAaveV3DebtTokenV1Calls) isAdaptorCall_CallData() {} + // // Insert a trusted position to the list of positions used by the cellar at a given index. // @@ -2354,396 +2429,452 @@ var file_cellar_v2_proto_rawDesc = []byte{ 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x2f, 0x63, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x66, 0x72, 0x61, 0x78, 0x2f, 0x66, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x61, 0x64, - 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x75, - 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x28, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, - 0x70, 0x2f, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x75, 0x6e, 0x69, 0x73, - 0x77, 0x61, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x61, 0x64, 0x61, 0x70, 0x74, - 0x6f, 0x72, 0x73, 0x2f, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x61, 0x64, 0x61, - 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x78, 0x2f, 0x7a, 0x65, 0x72, - 0x6f, 0x5f, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x61, 0x64, 0x61, 0x70, 0x74, - 0x6f, 0x72, 0x73, 0x2f, 0x6f, 0x6e, 0x65, 0x69, 0x6e, 0x63, 0x68, 0x2f, 0x6f, 0x6e, 0x65, 0x69, - 0x6e, 0x63, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x61, 0x64, 0x61, 0x70, 0x74, - 0x6f, 0x72, 0x73, 0x2f, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x6d, 0x70, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, - 0x72, 0x73, 0x2f, 0x73, 0x6f, 0x6d, 0x6d, 0x65, 0x6c, 0x69, 0x65, 0x72, 0x2f, 0x63, 0x65, 0x6c, - 0x6c, 0x61, 0x72, 0x5f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x3e, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x61, 0x61, 0x76, 0x65, - 0x2f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x73, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, - 0x72, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0x84, 0x0e, 0x0a, 0x08, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x12, 0x45, - 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x64, 0x64, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x6f, 0x6e, - 0x5f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, - 0x61, 0x72, 0x56, 0x32, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x4f, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, - 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x61, 0x6c, 0x6c, 0x4f, 0x6e, 0x41, 0x64, 0x61, 0x70, - 0x74, 0x6f, 0x72, 0x12, 0x4e, 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x61, 0x64, + 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, + 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x61, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x61, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, + 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x37, 0x61, 0x64, 0x61, + 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, + 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, + 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, + 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x70, 0x32, 0x70, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, + 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, + 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, + 0x73, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, + 0x70, 0x5f, 0x76, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x61, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x2f, 0x73, 0x77, 0x61, + 0x70, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x66, + 0x65, 0x65, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, + 0x2f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x78, 0x2f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x78, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6f, + 0x6e, 0x65, 0x69, 0x6e, 0x63, 0x68, 0x2f, 0x6f, 0x6e, 0x65, 0x69, 0x6e, 0x63, 0x68, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x76, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x1a, 0x27, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x73, 0x6f, + 0x6d, 0x6d, 0x65, 0x6c, 0x69, 0x65, 0x72, 0x2f, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x5f, 0x61, + 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x61, 0x64, + 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x61, 0x61, 0x76, 0x65, 0x2f, 0x61, 0x61, 0x76, 0x65, + 0x5f, 0x76, 0x32, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, + 0x5f, 0x61, 0x73, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x61, + 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x84, 0x0e, 0x0a, + 0x08, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x12, 0x45, 0x0a, 0x0c, 0x61, 0x64, 0x64, + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, + 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x4c, 0x0a, 0x0f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x74, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, + 0x43, 0x61, 0x6c, 0x6c, 0x4f, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, + 0x0d, 0x63, 0x61, 0x6c, 0x6c, 0x4f, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x4e, + 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, + 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, + 0x0a, 0x14, 0x73, 0x65, 0x74, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, - 0x56, 0x32, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x14, 0x73, 0x65, 0x74, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x69, - 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, - 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x48, 0x6f, 0x6c, 0x64, 0x69, - 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x12, 0x73, 0x65, - 0x74, 0x48, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x74, 0x0a, 0x1d, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x53, 0x65, - 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6f, 0x75, - 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x1a, 0x73, 0x65, 0x74, 0x53, + 0x56, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x48, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x12, 0x73, 0x65, 0x74, 0x48, 0x6f, 0x6c, 0x64, + 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x74, 0x0a, 0x1d, 0x73, + 0x65, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x5f, 0x70, 0x61, + 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, + 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x1a, 0x73, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x12, 0x4b, 0x0a, 0x0e, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x74, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, + 0x53, 0x77, 0x61, 0x70, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, + 0x0d, 0x73, 0x77, 0x61, 0x70, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x64, + 0x0a, 0x17, 0x73, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, + 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x15, 0x73, + 0x65, 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x76, 0x69, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5c, 0x0a, 0x15, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, + 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x48, 0x00, 0x52, 0x12, + 0x73, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, + 0x6f, 0x64, 0x12, 0x48, 0x0a, 0x0d, 0x73, 0x65, 0x74, 0x75, 0x70, 0x5f, 0x61, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x74, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, + 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0c, + 0x73, 0x65, 0x74, 0x75, 0x70, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x4f, 0x0a, 0x10, + 0x73, 0x65, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x66, 0x65, 0x65, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x53, 0x65, 0x74, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x65, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x73, + 0x65, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x65, 0x65, 0x12, 0x54, 0x0a, + 0x11, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, + 0x77, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x49, + 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x48, + 0x00, 0x52, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x53, 0x68, 0x75, 0x74, 0x64, + 0x6f, 0x77, 0x6e, 0x12, 0x48, 0x0a, 0x0d, 0x6c, 0x69, 0x66, 0x74, 0x5f, 0x73, 0x68, 0x75, 0x74, + 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x74, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, + 0x2e, 0x4c, 0x69, 0x66, 0x74, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x48, 0x00, 0x52, + 0x0c, 0x6c, 0x69, 0x66, 0x74, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x1a, 0x97, 0x01, + 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, + 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x61, + 0x72, 0x72, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x44, 0x65, + 0x62, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x1a, 0x3c, 0x0a, 0x0d, 0x43, 0x61, 0x6c, 0x6c, 0x4f, + 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x43, 0x61, 0x6c, 0x6c, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x4a, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x22, 0x0a, + 0x0d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x44, 0x65, 0x62, 0x74, 0x41, 0x72, 0x72, 0x61, + 0x79, 0x1a, 0x35, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x48, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x50, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x1a, 0x34, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4b, 0x0a, 0x0e, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, - 0x61, 0x72, 0x56, 0x32, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x77, 0x61, 0x70, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x64, 0x0a, 0x17, 0x73, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x62, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, - 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, - 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x48, 0x00, 0x52, 0x15, 0x73, 0x65, 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5c, 0x0a, 0x15, 0x73, 0x65, 0x74, - 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, - 0x6f, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x53, - 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, - 0x64, 0x48, 0x00, 0x52, 0x12, 0x73, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x63, - 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x48, 0x0a, 0x0d, 0x73, 0x65, 0x74, 0x75, 0x70, - 0x5f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, - 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, - 0x61, 0x72, 0x56, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, - 0x72, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x65, 0x74, 0x75, 0x70, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, - 0x72, 0x12, 0x4f, 0x0a, 0x10, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x1a, 0x65, + 0x0a, 0x0d, 0x53, 0x77, 0x61, 0x70, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x17, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x06, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x31, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x5f, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x32, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x61, 0x72, 0x72, + 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x44, 0x65, 0x62, 0x74, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x1a, 0x2f, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, + 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6e, + 0x65, 0x77, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, + 0x65, 0x77, 0x4c, 0x6f, 0x63, 0x6b, 0x1a, 0x3c, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x52, 0x65, 0x62, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x23, 0x0a, 0x0d, 0x6e, 0x65, 0x77, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x44, 0x65, 0x76, 0x69, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x28, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x75, 0x70, 0x41, 0x64, 0x61, + 0x70, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x1a, 0x33, + 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x65, 0x65, + 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x66, 0x65, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x46, 0x65, 0x65, 0x1a, 0x12, 0x0a, 0x10, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x53, + 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x1a, 0x0e, 0x0a, 0x0c, 0x4c, 0x69, 0x66, 0x74, 0x53, + 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x8f, 0x12, 0x0a, 0x0a, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, + 0x5f, 0x32, 0x12, 0x4a, 0x0a, 0x0d, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, + 0x61, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, + 0x32, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x48, 0x00, + 0x52, 0x0c, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x40, + 0x0a, 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, + 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, + 0x61, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, + 0x1a, 0xde, 0x09, 0x0a, 0x0c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, + 0x6c, 0x12, 0x47, 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, + 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x61, + 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, 0x0f, 0x63, 0x61, + 0x6c, 0x6c, 0x5f, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x43, 0x61, 0x6c, 0x6c, + 0x4f, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x61, 0x6c, + 0x6c, 0x4f, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x50, 0x0a, 0x0f, 0x72, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5d, 0x0a, 0x14, + 0x73, 0x65, 0x74, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, + 0x5f, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x48, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x12, 0x73, 0x65, 0x74, 0x48, 0x6f, 0x6c, 0x64, + 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x76, 0x0a, 0x1d, 0x73, + 0x65, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x5f, 0x70, 0x61, + 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, + 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x1a, 0x73, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, + 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x12, 0x4d, 0x0a, 0x0e, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, - 0x32, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x65, 0x65, - 0x48, 0x00, 0x52, 0x0e, 0x73, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, - 0x65, 0x65, 0x12, 0x54, 0x0a, 0x11, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x5f, 0x73, - 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, - 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, - 0x72, 0x56, 0x32, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x53, 0x68, 0x75, 0x74, - 0x64, 0x6f, 0x77, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, - 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x48, 0x0a, 0x0d, 0x6c, 0x69, 0x66, 0x74, - 0x5f, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, - 0x6c, 0x61, 0x72, 0x56, 0x32, 0x2e, 0x4c, 0x69, 0x66, 0x74, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, - 0x77, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x6c, 0x69, 0x66, 0x74, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, - 0x77, 0x6e, 0x1a, 0x97, 0x01, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x6e, 0x5f, 0x64, - 0x65, 0x62, 0x74, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x69, 0x6e, 0x44, 0x65, 0x62, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x1a, 0x3c, 0x0a, 0x0d, - 0x43, 0x61, 0x6c, 0x6c, 0x4f, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x2b, 0x0a, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x74, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, - 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x4a, 0x0a, 0x0e, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x61, 0x72, - 0x72, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x44, 0x65, 0x62, - 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x1a, 0x35, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x48, 0x6f, 0x6c, - 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x1a, 0x34, 0x0a, - 0x1a, 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x50, 0x61, - 0x79, 0x6f, 0x75, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, - 0x61, 0x79, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x79, - 0x6f, 0x75, 0x74, 0x1a, 0x65, 0x0a, 0x0d, 0x53, 0x77, 0x61, 0x70, 0x50, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x31, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x31, 0x12, 0x17, 0x0a, - 0x07, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x32, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x62, - 0x74, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, - 0x6e, 0x44, 0x65, 0x62, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x1a, 0x2f, 0x0a, 0x12, 0x53, 0x65, - 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, - 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x4c, 0x6f, 0x63, 0x6b, 0x1a, 0x3c, 0x0a, 0x15, 0x53, - 0x65, 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x76, 0x69, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x65, 0x77, 0x5f, 0x64, 0x65, 0x76, 0x69, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x65, 0x77, - 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x28, 0x0a, 0x0c, 0x53, 0x65, 0x74, - 0x75, 0x70, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x61, - 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x61, 0x70, - 0x74, 0x6f, 0x72, 0x1a, 0x33, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x46, 0x65, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x5f, 0x66, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x70, 0x6c, 0x61, - 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x65, 0x65, 0x1a, 0x12, 0x0a, 0x10, 0x49, 0x6e, 0x69, 0x74, - 0x69, 0x61, 0x74, 0x65, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x1a, 0x0e, 0x0a, 0x0c, - 0x4c, 0x69, 0x66, 0x74, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x42, 0x0a, 0x0a, 0x08, - 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8f, 0x12, 0x0a, 0x0a, 0x43, 0x65, 0x6c, - 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x12, 0x4a, 0x0a, 0x0d, 0x66, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, - 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x61, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x0c, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x61, 0x6c, 0x6c, 0x12, 0x40, 0x0a, 0x09, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x75, 0x6c, 0x74, - 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x1a, 0xde, 0x09, 0x0a, 0x0c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x47, 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x5f, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, + 0x32, 0x5f, 0x32, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x77, 0x61, 0x70, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x66, 0x0a, 0x17, 0x73, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x62, 0x61, 0x6c, 0x61, + 0x6e, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, + 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x52, + 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x48, 0x00, 0x52, 0x15, 0x73, 0x65, 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5e, 0x0a, 0x15, 0x73, 0x65, + 0x74, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, + 0x69, 0x6f, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, + 0x32, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x50, 0x65, + 0x72, 0x69, 0x6f, 0x64, 0x48, 0x00, 0x52, 0x12, 0x73, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, + 0x4c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x56, 0x0a, 0x11, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x49, 0x6e, + 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x48, 0x00, + 0x52, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, + 0x77, 0x6e, 0x12, 0x70, 0x0a, 0x1b, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x75, + 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, + 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x75, 0x74, 0x48, 0x00, 0x52, 0x18, 0x73, 0x65, 0x74, 0x53, + 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x43, 0x75, 0x74, 0x12, 0x4a, 0x0a, 0x0d, 0x6c, 0x69, 0x66, 0x74, 0x5f, 0x73, 0x68, 0x75, + 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, + 0x32, 0x5f, 0x32, 0x2e, 0x4c, 0x69, 0x66, 0x74, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, + 0x48, 0x00, 0x52, 0x0c, 0x6c, 0x69, 0x66, 0x74, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, + 0x12, 0x67, 0x0a, 0x18, 0x61, 0x64, 0x64, 0x5f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x5f, + 0x74, 0x6f, 0x5f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, + 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x64, + 0x61, 0x70, 0x74, 0x6f, 0x72, 0x54, 0x6f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, + 0x48, 0x00, 0x52, 0x15, 0x61, 0x64, 0x64, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x54, 0x6f, + 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x12, 0x6a, 0x0a, 0x19, 0x61, 0x64, 0x64, + 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x61, 0x74, + 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x48, 0x00, 0x52, 0x0b, 0x61, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x4e, 0x0a, 0x0f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x6f, 0x6e, 0x5f, 0x61, 0x64, 0x61, 0x70, 0x74, - 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, - 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x4f, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x48, 0x00, - 0x52, 0x0d, 0x63, 0x61, 0x6c, 0x6c, 0x4f, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x12, - 0x50, 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, - 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, - 0x00, 0x52, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x5d, 0x0a, 0x14, 0x73, 0x65, 0x74, 0x5f, 0x68, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, - 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, - 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x48, 0x6f, 0x6c, 0x64, 0x69, - 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x12, 0x73, 0x65, - 0x74, 0x48, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x76, 0x0a, 0x1d, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, + 0x54, 0x6f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x48, 0x00, 0x52, 0x16, 0x61, + 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x43, 0x61, 0x74, 0x61, + 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x1a, 0x97, 0x01, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x6e, 0x5f, 0x64, 0x65, + 0x62, 0x74, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, + 0x69, 0x6e, 0x44, 0x65, 0x62, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x1a, 0x3c, 0x0a, 0x0d, 0x43, + 0x61, 0x6c, 0x6c, 0x4f, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x2b, 0x0a, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x74, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x43, + 0x61, 0x6c, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x4a, 0x0a, 0x0e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x61, 0x72, 0x72, + 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x44, 0x65, 0x62, 0x74, + 0x41, 0x72, 0x72, 0x61, 0x79, 0x1a, 0x35, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x48, 0x6f, 0x6c, 0x64, + 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x1a, 0x34, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x50, 0x61, 0x79, - 0x6f, 0x75, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x48, 0x00, 0x52, 0x1a, 0x73, 0x65, - 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6f, 0x75, - 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x4d, 0x0a, 0x0e, 0x73, 0x77, 0x61, 0x70, - 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, - 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x77, 0x61, 0x70, 0x50, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x66, 0x0a, 0x17, 0x73, 0x65, 0x74, 0x5f, 0x72, - 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, - 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x76, - 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x15, 0x73, 0x65, 0x74, 0x52, 0x65, 0x62, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x5e, 0x0a, 0x15, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x6c, 0x6f, 0x63, - 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, - 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, - 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, - 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x48, 0x00, 0x52, 0x12, 0x73, 0x65, 0x74, + 0x6f, 0x75, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, + 0x79, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x79, 0x6f, + 0x75, 0x74, 0x1a, 0x65, 0x0a, 0x0d, 0x53, 0x77, 0x61, 0x70, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x31, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x31, 0x12, 0x17, 0x0a, 0x07, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x32, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x62, 0x74, + 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, + 0x44, 0x65, 0x62, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x1a, 0x2f, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, - 0x56, 0x0a, 0x11, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x68, 0x75, 0x74, - 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, - 0x5f, 0x32, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x53, 0x68, 0x75, 0x74, 0x64, - 0x6f, 0x77, 0x6e, 0x48, 0x00, 0x52, 0x10, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x53, - 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x70, 0x0a, 0x1b, 0x73, 0x65, 0x74, 0x5f, 0x73, - 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x5f, 0x63, 0x75, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, - 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, - 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x75, 0x74, 0x48, 0x00, 0x52, - 0x18, 0x73, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x75, 0x74, 0x12, 0x4a, 0x0a, 0x0d, 0x6c, 0x69, 0x66, - 0x74, 0x5f, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, - 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x4c, 0x69, 0x66, 0x74, 0x53, 0x68, 0x75, - 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x6c, 0x69, 0x66, 0x74, 0x53, 0x68, 0x75, - 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x67, 0x0a, 0x18, 0x61, 0x64, 0x64, 0x5f, 0x61, 0x64, 0x61, - 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, - 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, - 0x41, 0x64, 0x64, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x54, 0x6f, 0x43, 0x61, 0x74, 0x61, - 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x48, 0x00, 0x52, 0x15, 0x61, 0x64, 0x64, 0x41, 0x64, 0x61, 0x70, - 0x74, 0x6f, 0x72, 0x54, 0x6f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x12, 0x6a, - 0x0a, 0x19, 0x61, 0x64, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, - 0x6f, 0x5f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2d, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, - 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, - 0x48, 0x00, 0x52, 0x16, 0x61, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x6f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x66, 0x75, - 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x97, 0x01, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x50, 0x6f, - 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, - 0x12, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x22, 0x0a, 0x0d, - 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x44, 0x65, 0x62, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, - 0x1a, 0x3c, 0x0a, 0x0d, 0x43, 0x61, 0x6c, 0x6c, 0x4f, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, - 0x72, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x64, 0x61, - 0x70, 0x74, 0x6f, 0x72, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x4a, - 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x62, - 0x74, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, - 0x6e, 0x44, 0x65, 0x62, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x1a, 0x35, 0x0a, 0x12, 0x53, 0x65, - 0x74, 0x48, 0x6f, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x1a, 0x34, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x50, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x70, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x1a, 0x65, 0x0a, 0x0d, 0x53, 0x77, 0x61, 0x70, 0x50, - 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x5f, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x31, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x32, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x06, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x32, 0x12, 0x22, 0x0a, 0x0d, 0x69, 0x6e, - 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0b, 0x69, 0x6e, 0x44, 0x65, 0x62, 0x74, 0x41, 0x72, 0x72, 0x61, 0x79, 0x1a, 0x2f, - 0x0a, 0x12, 0x53, 0x65, 0x74, 0x53, 0x68, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x6b, 0x50, 0x65, - 0x72, 0x69, 0x6f, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x4c, 0x6f, 0x63, 0x6b, 0x1a, - 0x3c, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x44, - 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x65, 0x77, 0x5f, - 0x64, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x6e, 0x65, 0x77, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x12, 0x0a, - 0x10, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x74, 0x65, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, - 0x6e, 0x1a, 0x33, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x75, 0x74, 0x12, 0x17, 0x0a, - 0x07, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, - 0x6e, 0x65, 0x77, 0x43, 0x75, 0x74, 0x1a, 0x0e, 0x0a, 0x0c, 0x4c, 0x69, 0x66, 0x74, 0x53, 0x68, - 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x1a, 0x31, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x41, 0x64, 0x61, - 0x70, 0x74, 0x6f, 0x72, 0x54, 0x6f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x1a, 0x57, 0x0a, 0x09, 0x4d, 0x75, 0x6c, - 0x74, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x12, 0x4a, 0x0a, 0x0e, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, - 0x61, 0x72, 0x56, 0x32, 0x5f, 0x32, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x61, 0x6c, 0x6c, 0x52, 0x0d, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, - 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x54, 0x6f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x0a, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x42, 0x0b, 0x0a, - 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xe8, 0x0d, 0x0a, 0x0b, 0x41, - 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, + 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x4c, 0x6f, 0x63, 0x6b, 0x1a, 0x3c, 0x0a, 0x15, 0x53, 0x65, + 0x74, 0x52, 0x65, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x65, 0x76, 0x69, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x65, 0x77, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x44, + 0x65, 0x76, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x12, 0x0a, 0x10, 0x49, 0x6e, 0x69, 0x74, + 0x69, 0x61, 0x74, 0x65, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x1a, 0x33, 0x0a, 0x18, + 0x53, 0x65, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x69, 0x73, 0x74, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x43, 0x75, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x65, 0x77, 0x5f, + 0x63, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x65, 0x77, 0x43, 0x75, + 0x74, 0x1a, 0x0e, 0x0a, 0x0c, 0x4c, 0x69, 0x66, 0x74, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, + 0x6e, 0x1a, 0x31, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x54, + 0x6f, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x61, - 0x70, 0x74, 0x6f, 0x72, 0x12, 0x54, 0x0a, 0x13, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, - 0x76, 0x33, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x55, - 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, - 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x10, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, - 0x70, 0x56, 0x33, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x58, 0x0a, 0x15, 0x61, 0x61, - 0x76, 0x65, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, - 0x6c, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, - 0x00, 0x52, 0x11, 0x61, 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, - 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x61, 0x0a, 0x18, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x62, - 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, + 0x70, 0x74, 0x6f, 0x72, 0x1a, 0x57, 0x0a, 0x09, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x6c, + 0x6c, 0x12, 0x4a, 0x0a, 0x0e, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x61, + 0x6c, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x32, 0x5f, + 0x32, 0x2e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x0d, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x1a, 0x39, 0x0a, + 0x16, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x43, 0x61, + 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x63, 0x61, 0x6c, 0x6c, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xe8, 0x12, 0x0a, 0x0b, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, + 0x72, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x12, + 0x54, 0x0a, 0x13, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, 0x33, 0x5f, 0x76, 0x31, + 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, + 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, + 0x70, 0x56, 0x33, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, + 0x73, 0x48, 0x00, 0x52, 0x10, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, 0x56, 0x31, + 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x58, 0x0a, 0x15, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x61, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x11, 0x61, 0x61, + 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, + 0x61, 0x0a, 0x18, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, + 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x14, 0x61, 0x61, + 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, + 0x6c, 0x73, 0x12, 0x64, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, + 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, + 0x00, 0x52, 0x15, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x58, 0x0a, 0x15, 0x61, 0x61, 0x76, 0x65, + 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, + 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, + 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, + 0x11, 0x61, 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x32, 0x43, 0x61, 0x6c, + 0x6c, 0x73, 0x12, 0x61, 0x0a, 0x18, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, + 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, + 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, + 0x14, 0x61, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x32, + 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x5f, 0x0a, 0x18, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, + 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, + 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, - 0x00, 0x52, 0x14, 0x61, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x64, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x70, 0x6f, - 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x32, 0x5f, 0x63, - 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x74, 0x65, - 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, - 0x43, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, - 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x15, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x75, 0x6e, 0x64, - 0x43, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x58, 0x0a, - 0x15, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x32, - 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, - 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x41, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, - 0x6c, 0x73, 0x48, 0x00, 0x52, 0x11, 0x61, 0x61, 0x76, 0x65, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x61, 0x0a, 0x18, 0x61, 0x61, 0x76, 0x65, 0x5f, - 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, - 0x6c, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, - 0x6c, 0x73, 0x48, 0x00, 0x52, 0x14, 0x61, 0x61, 0x76, 0x65, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x5f, 0x0a, 0x18, 0x61, 0x61, - 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, - 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, - 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, - 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, - 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x13, 0x61, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, - 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x68, 0x0a, 0x1b, 0x61, - 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, - 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, - 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x16, 0x61, - 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, - 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x4e, 0x0a, 0x11, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x63, - 0x68, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x6e, - 0x65, 0x49, 0x6e, 0x63, 0x68, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, - 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0e, 0x6f, 0x6e, 0x65, 0x49, 0x6e, 0x63, 0x68, 0x56, 0x31, - 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x67, 0x0a, 0x1a, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x61, 0x6e, - 0x64, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, - 0x6c, 0x6c, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x65, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x52, 0x65, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, - 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x16, 0x66, 0x65, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x52, - 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x73, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x48, - 0x0a, 0x0f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x78, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, - 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x5a, 0x65, 0x72, 0x6f, 0x58, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, - 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x7a, 0x65, 0x72, 0x6f, - 0x58, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x67, 0x0a, 0x1a, 0x73, 0x77, 0x61, 0x70, - 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, 0x31, - 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, - 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x57, 0x69, - 0x74, 0x68, 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, - 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x16, 0x73, 0x77, 0x61, 0x70, 0x57, - 0x69, 0x74, 0x68, 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, - 0x73, 0x12, 0x60, 0x0a, 0x17, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x6d, - 0x70, 0x6c, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, - 0x56, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x64, 0x61, - 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x14, 0x76, - 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x56, 0x32, 0x43, 0x61, - 0x6c, 0x6c, 0x73, 0x12, 0x4a, 0x0a, 0x0f, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x5f, 0x76, 0x31, - 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, - 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, + 0x00, 0x52, 0x13, 0x61, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, + 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x68, 0x0a, 0x1b, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, + 0x33, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, + 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, + 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, + 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x16, 0x61, 0x61, 0x76, 0x65, 0x56, 0x33, + 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, + 0x12, 0x4e, 0x0a, 0x11, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x6e, 0x63, 0x68, 0x5f, 0x76, 0x31, 0x5f, + 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x74, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4f, 0x6e, 0x65, 0x49, 0x6e, 0x63, 0x68, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, - 0x52, 0x0d, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, - 0x54, 0x0a, 0x13, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, 0x33, 0x5f, 0x76, 0x32, - 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, - 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, - 0x70, 0x56, 0x33, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, - 0x73, 0x48, 0x00, 0x52, 0x10, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, 0x56, 0x32, - 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x94, 0x01, 0x0a, 0x2b, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, - 0x32, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x61, - 0x73, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x31, 0x5f, - 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x74, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x45, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6c, 0x6c, - 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, - 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x24, 0x61, 0x61, 0x76, 0x65, 0x56, 0x32, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x61, - 0x74, 0x65, 0x72, 0x61, 0x6c, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x5d, 0x0a, 0x16, - 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x31, - 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, - 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, - 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x13, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, - 0x50, 0x6f, 0x6f, 0x6c, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x4b, 0x0a, 0x10, 0x66, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, - 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, - 0x76, 0x33, 0x2e, 0x46, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, - 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x66, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x63, 0x61, 0x6c, 0x6c, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x10, 0x5a, 0x0e, 0x2f, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, - 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x0e, 0x6f, 0x6e, 0x65, 0x49, 0x6e, 0x63, 0x68, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, + 0x12, 0x67, 0x0a, 0x1a, 0x66, 0x65, 0x65, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x73, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, + 0x33, 0x2e, 0x46, 0x65, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x73, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, + 0x00, 0x52, 0x16, 0x66, 0x65, 0x65, 0x73, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x73, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x48, 0x0a, 0x0f, 0x7a, 0x65, 0x72, + 0x6f, 0x5f, 0x78, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, + 0x5a, 0x65, 0x72, 0x6f, 0x58, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, + 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x7a, 0x65, 0x72, 0x6f, 0x58, 0x56, 0x31, 0x43, 0x61, + 0x6c, 0x6c, 0x73, 0x12, 0x67, 0x0a, 0x1a, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x77, 0x69, 0x74, 0x68, + 0x5f, 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, + 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x53, 0x77, 0x61, 0x70, 0x57, 0x69, 0x74, 0x68, 0x55, 0x6e, 0x69, + 0x73, 0x77, 0x61, 0x70, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, + 0x6c, 0x73, 0x48, 0x00, 0x52, 0x16, 0x73, 0x77, 0x61, 0x70, 0x57, 0x69, 0x74, 0x68, 0x55, 0x6e, + 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x60, 0x0a, 0x17, + 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x76, + 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x56, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x67, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, + 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x14, 0x76, 0x65, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x4a, + 0x0a, 0x0f, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, + 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x61, 0x72, 0x41, 0x64, 0x61, 0x70, 0x74, + 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x63, 0x65, 0x6c, + 0x6c, 0x61, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x54, 0x0a, 0x13, 0x75, 0x6e, + 0x69, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x76, 0x33, 0x5f, 0x76, 0x32, 0x5f, 0x63, 0x61, 0x6c, 0x6c, + 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x55, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, 0x41, 0x64, + 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x10, + 0x75, 0x6e, 0x69, 0x73, 0x77, 0x61, 0x70, 0x56, 0x33, 0x56, 0x32, 0x43, 0x61, 0x6c, 0x6c, 0x73, + 0x12, 0x94, 0x01, 0x0a, 0x2b, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x61, 0x73, 0x5f, 0x63, 0x6f, 0x6c, + 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x2e, 0x76, 0x33, 0x2e, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x41, 0x73, 0x73, 0x65, 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, + 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, + 0x00, 0x52, 0x24, 0x61, 0x61, 0x76, 0x65, 0x56, 0x32, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x41, + 0x73, 0x73, 0x65, 0x74, 0x41, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, + 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x5d, 0x0a, 0x16, 0x62, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, + 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, + 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x6f, 0x6f, + 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, + 0x00, 0x52, 0x13, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x56, + 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x4b, 0x0a, 0x10, 0x66, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x46, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, + 0x6c, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x66, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, + 0x6c, 0x6c, 0x73, 0x12, 0x72, 0x0a, 0x1f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, + 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, + 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, + 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, + 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x19, 0x6d, 0x6f, + 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x7b, 0x0a, 0x22, 0x6d, 0x6f, 0x72, 0x70, 0x68, + 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x15, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, + 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x44, 0x65, 0x62, + 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, + 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x1c, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, + 0x76, 0x65, 0x56, 0x32, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, + 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x91, 0x01, 0x0a, 0x2a, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, + 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, + 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, + 0x6c, 0x6c, 0x73, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, 0x74, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, + 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, + 0x72, 0x61, 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, + 0x73, 0x48, 0x00, 0x52, 0x23, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, + 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, + 0x6c, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x7c, 0x0a, 0x23, 0x6d, 0x6f, 0x72, 0x70, + 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x5f, 0x70, 0x32, 0x70, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, + 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, + 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x32, 0x50, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, + 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x1c, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, + 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x32, 0x70, 0x56, + 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x7b, 0x0a, 0x22, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, + 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x5f, 0x76, 0x31, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x18, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, + 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, + 0x6c, 0x6c, 0x73, 0x48, 0x00, 0x52, 0x1c, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, + 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x56, 0x31, 0x43, 0x61, + 0x6c, 0x6c, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x42, 0x10, 0x5a, 0x0e, 0x2f, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2808,6 +2939,11 @@ var file_cellar_v2_proto_goTypes = []interface{}{ (*AaveV2EnableAssetAsCollateralAdaptorV1Calls)(nil), // 45: steward.v3.AaveV2EnableAssetAsCollateralAdaptorV1Calls (*BalancerPoolAdaptorV1Calls)(nil), // 46: steward.v3.BalancerPoolAdaptorV1Calls (*FTokenAdaptorV1Calls)(nil), // 47: steward.v3.FTokenAdaptorV1Calls + (*MorphoAaveV2ATokenAdaptorV1Calls)(nil), // 48: steward.v3.MorphoAaveV2ATokenAdaptorV1Calls + (*MorphoAaveV2DebtTokenAdaptorV1Calls)(nil), // 49: steward.v3.MorphoAaveV2DebtTokenAdaptorV1Calls + (*MorphoAaveV3ATokenCollateralAdaptorV1Calls)(nil), // 50: steward.v3.MorphoAaveV3ATokenCollateralAdaptorV1Calls + (*MorphoAaveV3ATokenP2PAdaptorV1Calls)(nil), // 51: steward.v3.MorphoAaveV3ATokenP2PAdaptorV1Calls + (*MorphoAaveV3DebtTokenAdaptorV1Calls)(nil), // 52: steward.v3.MorphoAaveV3DebtTokenAdaptorV1Calls } var file_cellar_v2_proto_depIdxs = []int32{ 3, // 0: steward.v3.CellarV2.add_position:type_name -> steward.v3.CellarV2.AddPosition @@ -2842,27 +2978,32 @@ var file_cellar_v2_proto_depIdxs = []int32{ 45, // 29: steward.v3.AdaptorCall.aave_v2_enable_asset_as_collateral_v1_calls:type_name -> steward.v3.AaveV2EnableAssetAsCollateralAdaptorV1Calls 46, // 30: steward.v3.AdaptorCall.balancer_pool_v1_calls:type_name -> steward.v3.BalancerPoolAdaptorV1Calls 47, // 31: steward.v3.AdaptorCall.f_token_v1_calls:type_name -> steward.v3.FTokenAdaptorV1Calls - 2, // 32: steward.v3.CellarV2.CallOnAdaptor.data:type_name -> steward.v3.AdaptorCall - 16, // 33: steward.v3.CellarV2_2.FunctionCall.add_position:type_name -> steward.v3.CellarV2_2.AddPosition - 17, // 34: steward.v3.CellarV2_2.FunctionCall.call_on_adaptor:type_name -> steward.v3.CellarV2_2.CallOnAdaptor - 18, // 35: steward.v3.CellarV2_2.FunctionCall.remove_position:type_name -> steward.v3.CellarV2_2.RemovePosition - 19, // 36: steward.v3.CellarV2_2.FunctionCall.set_holding_position:type_name -> steward.v3.CellarV2_2.SetHoldingPosition - 20, // 37: steward.v3.CellarV2_2.FunctionCall.set_strategist_payout_address:type_name -> steward.v3.CellarV2_2.SetStrategistPayoutAddress - 21, // 38: steward.v3.CellarV2_2.FunctionCall.swap_positions:type_name -> steward.v3.CellarV2_2.SwapPositions - 23, // 39: steward.v3.CellarV2_2.FunctionCall.set_rebalance_deviation:type_name -> steward.v3.CellarV2_2.SetRebalanceDeviation - 22, // 40: steward.v3.CellarV2_2.FunctionCall.set_share_lock_period:type_name -> steward.v3.CellarV2_2.SetShareLockPeriod - 24, // 41: steward.v3.CellarV2_2.FunctionCall.initiate_shutdown:type_name -> steward.v3.CellarV2_2.InitiateShutdown - 25, // 42: steward.v3.CellarV2_2.FunctionCall.set_strategist_platform_cut:type_name -> steward.v3.CellarV2_2.SetStrategistPlatformCut - 26, // 43: steward.v3.CellarV2_2.FunctionCall.lift_shutdown:type_name -> steward.v3.CellarV2_2.LiftShutdown - 27, // 44: steward.v3.CellarV2_2.FunctionCall.add_adaptor_to_catalogue:type_name -> steward.v3.CellarV2_2.AddAdaptorToCatalogue - 29, // 45: steward.v3.CellarV2_2.FunctionCall.add_position_to_catalogue:type_name -> steward.v3.CellarV2_2.AddPositionToCatalogue - 2, // 46: steward.v3.CellarV2_2.CallOnAdaptor.data:type_name -> steward.v3.AdaptorCall - 15, // 47: steward.v3.CellarV2_2.Multicall.function_calls:type_name -> steward.v3.CellarV2_2.FunctionCall - 48, // [48:48] is the sub-list for method output_type - 48, // [48:48] is the sub-list for method input_type - 48, // [48:48] is the sub-list for extension type_name - 48, // [48:48] is the sub-list for extension extendee - 0, // [0:48] is the sub-list for field type_name + 48, // 32: steward.v3.AdaptorCall.morpho_aave_v2_a_token_v1_calls:type_name -> steward.v3.MorphoAaveV2ATokenAdaptorV1Calls + 49, // 33: steward.v3.AdaptorCall.morpho_aave_v2_debt_token_v1_calls:type_name -> steward.v3.MorphoAaveV2DebtTokenAdaptorV1Calls + 50, // 34: steward.v3.AdaptorCall.morpho_aave_v3_a_token_collateral_v1_calls:type_name -> steward.v3.MorphoAaveV3ATokenCollateralAdaptorV1Calls + 51, // 35: steward.v3.AdaptorCall.morpho_aave_v3_a_token_p2p_v1_calls:type_name -> steward.v3.MorphoAaveV3ATokenP2PAdaptorV1Calls + 52, // 36: steward.v3.AdaptorCall.morpho_aave_v3_debt_token_v1_calls:type_name -> steward.v3.MorphoAaveV3DebtTokenAdaptorV1Calls + 2, // 37: steward.v3.CellarV2.CallOnAdaptor.data:type_name -> steward.v3.AdaptorCall + 16, // 38: steward.v3.CellarV2_2.FunctionCall.add_position:type_name -> steward.v3.CellarV2_2.AddPosition + 17, // 39: steward.v3.CellarV2_2.FunctionCall.call_on_adaptor:type_name -> steward.v3.CellarV2_2.CallOnAdaptor + 18, // 40: steward.v3.CellarV2_2.FunctionCall.remove_position:type_name -> steward.v3.CellarV2_2.RemovePosition + 19, // 41: steward.v3.CellarV2_2.FunctionCall.set_holding_position:type_name -> steward.v3.CellarV2_2.SetHoldingPosition + 20, // 42: steward.v3.CellarV2_2.FunctionCall.set_strategist_payout_address:type_name -> steward.v3.CellarV2_2.SetStrategistPayoutAddress + 21, // 43: steward.v3.CellarV2_2.FunctionCall.swap_positions:type_name -> steward.v3.CellarV2_2.SwapPositions + 23, // 44: steward.v3.CellarV2_2.FunctionCall.set_rebalance_deviation:type_name -> steward.v3.CellarV2_2.SetRebalanceDeviation + 22, // 45: steward.v3.CellarV2_2.FunctionCall.set_share_lock_period:type_name -> steward.v3.CellarV2_2.SetShareLockPeriod + 24, // 46: steward.v3.CellarV2_2.FunctionCall.initiate_shutdown:type_name -> steward.v3.CellarV2_2.InitiateShutdown + 25, // 47: steward.v3.CellarV2_2.FunctionCall.set_strategist_platform_cut:type_name -> steward.v3.CellarV2_2.SetStrategistPlatformCut + 26, // 48: steward.v3.CellarV2_2.FunctionCall.lift_shutdown:type_name -> steward.v3.CellarV2_2.LiftShutdown + 27, // 49: steward.v3.CellarV2_2.FunctionCall.add_adaptor_to_catalogue:type_name -> steward.v3.CellarV2_2.AddAdaptorToCatalogue + 29, // 50: steward.v3.CellarV2_2.FunctionCall.add_position_to_catalogue:type_name -> steward.v3.CellarV2_2.AddPositionToCatalogue + 2, // 51: steward.v3.CellarV2_2.CallOnAdaptor.data:type_name -> steward.v3.AdaptorCall + 15, // 52: steward.v3.CellarV2_2.Multicall.function_calls:type_name -> steward.v3.CellarV2_2.FunctionCall + 53, // [53:53] is the sub-list for method output_type + 53, // [53:53] is the sub-list for method input_type + 53, // [53:53] is the sub-list for extension type_name + 53, // [53:53] is the sub-list for extension extendee + 0, // [0:53] is the sub-list for field type_name } func init() { file_cellar_v2_proto_init() } @@ -2877,6 +3018,11 @@ func file_cellar_v2_proto_init() { file_adaptors_balancer_balancer_pool_proto_init() file_adaptors_compound_c_token_proto_init() file_adaptors_frax_f_token_proto_init() + file_adaptors_morpho_morpho_aave_v2_a_token_proto_init() + file_adaptors_morpho_morpho_aave_v2_debt_token_proto_init() + file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_init() + file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_init() + file_adaptors_morpho_morpho_aave_v3_debt_token_proto_init() file_adaptors_uniswap_uniswap_v3_proto_init() file_adaptors_uniswap_swap_with_uniswap_proto_init() file_adaptors_fees_and_reserves_proto_init() @@ -3284,6 +3430,11 @@ func file_cellar_v2_proto_init() { (*AdaptorCall_AaveV2EnableAssetAsCollateralV1Calls)(nil), (*AdaptorCall_BalancerPoolV1Calls)(nil), (*AdaptorCall_FTokenV1Calls)(nil), + (*AdaptorCall_MorphoAaveV2ATokenV1Calls)(nil), + (*AdaptorCall_MorphoAaveV2DebtTokenV1Calls)(nil), + (*AdaptorCall_MorphoAaveV3ATokenCollateralV1Calls)(nil), + (*AdaptorCall_MorphoAaveV3ATokenP2PV1Calls)(nil), + (*AdaptorCall_MorphoAaveV3DebtTokenV1Calls)(nil), } file_cellar_v2_proto_msgTypes[15].OneofWrappers = []interface{}{ (*CellarV2_2_FunctionCall_AddPosition)(nil), diff --git a/steward_proto_go/steward_proto/f_token.pb.go b/steward_proto_go/steward_proto/f_token.pb.go index 4f1e0349..6a9377a2 100644 --- a/steward_proto_go/steward_proto/f_token.pb.go +++ b/steward_proto_go/steward_proto/f_token.pb.go @@ -1,5 +1,5 @@ // -// Protos for function calls to the OneInch adaptor. +// Protos for function calls to the Frax adaptor. // Code generated by protoc-gen-go. DO NOT EDIT. // versions: @@ -23,7 +23,7 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// Represents call data for the OneInch adaptor. +// Represents call data for the Frax adaptor. type FTokenAdaptorV1 struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/steward_proto_go/steward_proto/morpho_aave_v2_a_token.pb.go b/steward_proto_go/steward_proto/morpho_aave_v2_a_token.pb.go new file mode 100644 index 00000000..d64fee69 --- /dev/null +++ b/steward_proto_go/steward_proto/morpho_aave_v2_a_token.pb.go @@ -0,0 +1,458 @@ +// +// Protos for function calls to the Morpho Aave V2 AToken adaptor. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.26.0 +// protoc v3.21.12 +// source: adaptors/morpho/morpho_aave_v2_a_token.proto + +package steward_proto + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Represents call data for the Morpho Aave V2 AToken adaptor. +type MorphoAaveV2ATokenAdaptorV1 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Function: + // *MorphoAaveV2ATokenAdaptorV1_RevokeApproval + // *MorphoAaveV2ATokenAdaptorV1_DepositToAaveV2Morpho_ + // *MorphoAaveV2ATokenAdaptorV1_WithdrawFromAaveV2Morpho_ + Function isMorphoAaveV2ATokenAdaptorV1_Function `protobuf_oneof:"function"` +} + +func (x *MorphoAaveV2ATokenAdaptorV1) Reset() { + *x = MorphoAaveV2ATokenAdaptorV1{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_morpho_morpho_aave_v2_a_token_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MorphoAaveV2ATokenAdaptorV1) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MorphoAaveV2ATokenAdaptorV1) ProtoMessage() {} + +func (x *MorphoAaveV2ATokenAdaptorV1) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_morpho_morpho_aave_v2_a_token_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MorphoAaveV2ATokenAdaptorV1.ProtoReflect.Descriptor instead. +func (*MorphoAaveV2ATokenAdaptorV1) Descriptor() ([]byte, []int) { + return file_adaptors_morpho_morpho_aave_v2_a_token_proto_rawDescGZIP(), []int{0} +} + +func (m *MorphoAaveV2ATokenAdaptorV1) GetFunction() isMorphoAaveV2ATokenAdaptorV1_Function { + if m != nil { + return m.Function + } + return nil +} + +func (x *MorphoAaveV2ATokenAdaptorV1) GetRevokeApproval() *RevokeApproval { + if x, ok := x.GetFunction().(*MorphoAaveV2ATokenAdaptorV1_RevokeApproval); ok { + return x.RevokeApproval + } + return nil +} + +func (x *MorphoAaveV2ATokenAdaptorV1) GetDepositToAaveV2Morpho() *MorphoAaveV2ATokenAdaptorV1_DepositToAaveV2Morpho { + if x, ok := x.GetFunction().(*MorphoAaveV2ATokenAdaptorV1_DepositToAaveV2Morpho_); ok { + return x.DepositToAaveV2Morpho + } + return nil +} + +func (x *MorphoAaveV2ATokenAdaptorV1) GetWithdrawFromAaveV2Morpho() *MorphoAaveV2ATokenAdaptorV1_WithdrawFromAaveV2Morpho { + if x, ok := x.GetFunction().(*MorphoAaveV2ATokenAdaptorV1_WithdrawFromAaveV2Morpho_); ok { + return x.WithdrawFromAaveV2Morpho + } + return nil +} + +type isMorphoAaveV2ATokenAdaptorV1_Function interface { + isMorphoAaveV2ATokenAdaptorV1_Function() +} + +type MorphoAaveV2ATokenAdaptorV1_RevokeApproval struct { + // Represents function `revokeApproval(ERC20 asset, address spender)` + RevokeApproval *RevokeApproval `protobuf:"bytes,1,opt,name=revoke_approval,json=revokeApproval,proto3,oneof"` +} + +type MorphoAaveV2ATokenAdaptorV1_DepositToAaveV2Morpho_ struct { + // Represents function `depositToAaveV2Morpho(IAaveToken aToken, uint256 amountToDeposit)` + DepositToAaveV2Morpho *MorphoAaveV2ATokenAdaptorV1_DepositToAaveV2Morpho `protobuf:"bytes,2,opt,name=deposit_to_aave_v2_morpho,json=depositToAaveV2Morpho,proto3,oneof"` +} + +type MorphoAaveV2ATokenAdaptorV1_WithdrawFromAaveV2Morpho_ struct { + // Represents function `withdrawFromAaveV2Morpho(IAaveToken aToken, uint256 amountToWithdraw)` + WithdrawFromAaveV2Morpho *MorphoAaveV2ATokenAdaptorV1_WithdrawFromAaveV2Morpho `protobuf:"bytes,3,opt,name=withdraw_from_aave_v2_morpho,json=withdrawFromAaveV2Morpho,proto3,oneof"` +} + +func (*MorphoAaveV2ATokenAdaptorV1_RevokeApproval) isMorphoAaveV2ATokenAdaptorV1_Function() {} + +func (*MorphoAaveV2ATokenAdaptorV1_DepositToAaveV2Morpho_) isMorphoAaveV2ATokenAdaptorV1_Function() {} + +func (*MorphoAaveV2ATokenAdaptorV1_WithdrawFromAaveV2Morpho_) isMorphoAaveV2ATokenAdaptorV1_Function() { +} + +type MorphoAaveV2ATokenAdaptorV1Calls struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Calls []*MorphoAaveV2ATokenAdaptorV1 `protobuf:"bytes,1,rep,name=calls,proto3" json:"calls,omitempty"` +} + +func (x *MorphoAaveV2ATokenAdaptorV1Calls) Reset() { + *x = MorphoAaveV2ATokenAdaptorV1Calls{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_morpho_morpho_aave_v2_a_token_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MorphoAaveV2ATokenAdaptorV1Calls) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MorphoAaveV2ATokenAdaptorV1Calls) ProtoMessage() {} + +func (x *MorphoAaveV2ATokenAdaptorV1Calls) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_morpho_morpho_aave_v2_a_token_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MorphoAaveV2ATokenAdaptorV1Calls.ProtoReflect.Descriptor instead. +func (*MorphoAaveV2ATokenAdaptorV1Calls) Descriptor() ([]byte, []int) { + return file_adaptors_morpho_morpho_aave_v2_a_token_proto_rawDescGZIP(), []int{1} +} + +func (x *MorphoAaveV2ATokenAdaptorV1Calls) GetCalls() []*MorphoAaveV2ATokenAdaptorV1 { + if x != nil { + return x.Calls + } + return nil +} + +// +// Allows strategists to lend assets on Morpho. +// +// Represents function `depositToAaveV2Morpho(IAaveToken aToken, uint256 amountToDeposit)` +type MorphoAaveV2ATokenAdaptorV1_DepositToAaveV2Morpho struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The address of the Aave V2 aToken to deposit to. + AToken string `protobuf:"bytes,1,opt,name=a_token,json=aToken,proto3" json:"a_token,omitempty"` + // The amount of the asset to deposit. + AmountToDeposit string `protobuf:"bytes,2,opt,name=amount_to_deposit,json=amountToDeposit,proto3" json:"amount_to_deposit,omitempty"` +} + +func (x *MorphoAaveV2ATokenAdaptorV1_DepositToAaveV2Morpho) Reset() { + *x = MorphoAaveV2ATokenAdaptorV1_DepositToAaveV2Morpho{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_morpho_morpho_aave_v2_a_token_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MorphoAaveV2ATokenAdaptorV1_DepositToAaveV2Morpho) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MorphoAaveV2ATokenAdaptorV1_DepositToAaveV2Morpho) ProtoMessage() {} + +func (x *MorphoAaveV2ATokenAdaptorV1_DepositToAaveV2Morpho) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_morpho_morpho_aave_v2_a_token_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MorphoAaveV2ATokenAdaptorV1_DepositToAaveV2Morpho.ProtoReflect.Descriptor instead. +func (*MorphoAaveV2ATokenAdaptorV1_DepositToAaveV2Morpho) Descriptor() ([]byte, []int) { + return file_adaptors_morpho_morpho_aave_v2_a_token_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *MorphoAaveV2ATokenAdaptorV1_DepositToAaveV2Morpho) GetAToken() string { + if x != nil { + return x.AToken + } + return "" +} + +func (x *MorphoAaveV2ATokenAdaptorV1_DepositToAaveV2Morpho) GetAmountToDeposit() string { + if x != nil { + return x.AmountToDeposit + } + return "" +} + +// +// Allows strategists to withdraw assets from Morpho. +// +// Represents function `withdrawFromAaveV2Morpho(IAaveToken aToken, uint256 amountToWithdraw)` +type MorphoAaveV2ATokenAdaptorV1_WithdrawFromAaveV2Morpho struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The address of the Aave V2 aToken to withdraw from. + AToken string `protobuf:"bytes,1,opt,name=a_token,json=aToken,proto3" json:"a_token,omitempty"` + // The amount of the asset to withdraw. + AmountToWithdraw string `protobuf:"bytes,2,opt,name=amount_to_withdraw,json=amountToWithdraw,proto3" json:"amount_to_withdraw,omitempty"` +} + +func (x *MorphoAaveV2ATokenAdaptorV1_WithdrawFromAaveV2Morpho) Reset() { + *x = MorphoAaveV2ATokenAdaptorV1_WithdrawFromAaveV2Morpho{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_morpho_morpho_aave_v2_a_token_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MorphoAaveV2ATokenAdaptorV1_WithdrawFromAaveV2Morpho) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MorphoAaveV2ATokenAdaptorV1_WithdrawFromAaveV2Morpho) ProtoMessage() {} + +func (x *MorphoAaveV2ATokenAdaptorV1_WithdrawFromAaveV2Morpho) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_morpho_morpho_aave_v2_a_token_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MorphoAaveV2ATokenAdaptorV1_WithdrawFromAaveV2Morpho.ProtoReflect.Descriptor instead. +func (*MorphoAaveV2ATokenAdaptorV1_WithdrawFromAaveV2Morpho) Descriptor() ([]byte, []int) { + return file_adaptors_morpho_morpho_aave_v2_a_token_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *MorphoAaveV2ATokenAdaptorV1_WithdrawFromAaveV2Morpho) GetAToken() string { + if x != nil { + return x.AToken + } + return "" +} + +func (x *MorphoAaveV2ATokenAdaptorV1_WithdrawFromAaveV2Morpho) GetAmountToWithdraw() string { + if x != nil { + return x.AmountToWithdraw + } + return "" +} + +var File_adaptors_morpho_morpho_aave_v2_a_token_proto protoreflect.FileDescriptor + +var file_adaptors_morpho_morpho_aave_v2_a_token_proto_rawDesc = []byte{ + 0x0a, 0x2c, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, + 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, + 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, + 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x1a, 0x13, 0x61, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0xb1, 0x04, 0x0a, 0x1b, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, + 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x12, + 0x45, 0x0a, 0x0f, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, + 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x70, 0x70, 0x72, + 0x6f, 0x76, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x70, + 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x12, 0x79, 0x0a, 0x19, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x6d, 0x6f, 0x72, + 0x70, 0x68, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x73, 0x74, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, + 0x65, 0x56, 0x32, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, + 0x56, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x6f, 0x41, 0x61, 0x76, 0x65, + 0x56, 0x32, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x48, 0x00, 0x52, 0x15, 0x64, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x54, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x4d, 0x6f, 0x72, 0x70, 0x68, + 0x6f, 0x12, 0x82, 0x01, 0x0a, 0x1c, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x66, + 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x6d, 0x6f, 0x72, 0x70, + 0x68, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, + 0x56, 0x32, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, + 0x31, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x61, + 0x76, 0x65, 0x56, 0x32, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x48, 0x00, 0x52, 0x18, 0x77, 0x69, + 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, + 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x1a, 0x5c, 0x0a, 0x15, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x54, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x12, + 0x17, 0x0a, 0x07, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x61, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x44, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x1a, 0x61, 0x0a, 0x18, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, + 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, + 0x12, 0x17, 0x0a, 0x07, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x61, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x57, + 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x42, 0x0a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x61, 0x0a, 0x20, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, + 0x65, 0x56, 0x32, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, + 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x3d, 0x0a, 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, + 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, + 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x52, + 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x42, 0x10, 0x5a, 0x0e, 0x2f, 0x73, 0x74, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_adaptors_morpho_morpho_aave_v2_a_token_proto_rawDescOnce sync.Once + file_adaptors_morpho_morpho_aave_v2_a_token_proto_rawDescData = file_adaptors_morpho_morpho_aave_v2_a_token_proto_rawDesc +) + +func file_adaptors_morpho_morpho_aave_v2_a_token_proto_rawDescGZIP() []byte { + file_adaptors_morpho_morpho_aave_v2_a_token_proto_rawDescOnce.Do(func() { + file_adaptors_morpho_morpho_aave_v2_a_token_proto_rawDescData = protoimpl.X.CompressGZIP(file_adaptors_morpho_morpho_aave_v2_a_token_proto_rawDescData) + }) + return file_adaptors_morpho_morpho_aave_v2_a_token_proto_rawDescData +} + +var file_adaptors_morpho_morpho_aave_v2_a_token_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_adaptors_morpho_morpho_aave_v2_a_token_proto_goTypes = []interface{}{ + (*MorphoAaveV2ATokenAdaptorV1)(nil), // 0: steward.v3.MorphoAaveV2ATokenAdaptorV1 + (*MorphoAaveV2ATokenAdaptorV1Calls)(nil), // 1: steward.v3.MorphoAaveV2ATokenAdaptorV1Calls + (*MorphoAaveV2ATokenAdaptorV1_DepositToAaveV2Morpho)(nil), // 2: steward.v3.MorphoAaveV2ATokenAdaptorV1.DepositToAaveV2Morpho + (*MorphoAaveV2ATokenAdaptorV1_WithdrawFromAaveV2Morpho)(nil), // 3: steward.v3.MorphoAaveV2ATokenAdaptorV1.WithdrawFromAaveV2Morpho + (*RevokeApproval)(nil), // 4: steward.v3.RevokeApproval +} +var file_adaptors_morpho_morpho_aave_v2_a_token_proto_depIdxs = []int32{ + 4, // 0: steward.v3.MorphoAaveV2ATokenAdaptorV1.revoke_approval:type_name -> steward.v3.RevokeApproval + 2, // 1: steward.v3.MorphoAaveV2ATokenAdaptorV1.deposit_to_aave_v2_morpho:type_name -> steward.v3.MorphoAaveV2ATokenAdaptorV1.DepositToAaveV2Morpho + 3, // 2: steward.v3.MorphoAaveV2ATokenAdaptorV1.withdraw_from_aave_v2_morpho:type_name -> steward.v3.MorphoAaveV2ATokenAdaptorV1.WithdrawFromAaveV2Morpho + 0, // 3: steward.v3.MorphoAaveV2ATokenAdaptorV1Calls.calls:type_name -> steward.v3.MorphoAaveV2ATokenAdaptorV1 + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_adaptors_morpho_morpho_aave_v2_a_token_proto_init() } +func file_adaptors_morpho_morpho_aave_v2_a_token_proto_init() { + if File_adaptors_morpho_morpho_aave_v2_a_token_proto != nil { + return + } + file_adaptors_base_proto_init() + if !protoimpl.UnsafeEnabled { + file_adaptors_morpho_morpho_aave_v2_a_token_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MorphoAaveV2ATokenAdaptorV1); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_morpho_morpho_aave_v2_a_token_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MorphoAaveV2ATokenAdaptorV1Calls); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_morpho_morpho_aave_v2_a_token_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MorphoAaveV2ATokenAdaptorV1_DepositToAaveV2Morpho); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_morpho_morpho_aave_v2_a_token_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MorphoAaveV2ATokenAdaptorV1_WithdrawFromAaveV2Morpho); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_adaptors_morpho_morpho_aave_v2_a_token_proto_msgTypes[0].OneofWrappers = []interface{}{ + (*MorphoAaveV2ATokenAdaptorV1_RevokeApproval)(nil), + (*MorphoAaveV2ATokenAdaptorV1_DepositToAaveV2Morpho_)(nil), + (*MorphoAaveV2ATokenAdaptorV1_WithdrawFromAaveV2Morpho_)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_adaptors_morpho_morpho_aave_v2_a_token_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_adaptors_morpho_morpho_aave_v2_a_token_proto_goTypes, + DependencyIndexes: file_adaptors_morpho_morpho_aave_v2_a_token_proto_depIdxs, + MessageInfos: file_adaptors_morpho_morpho_aave_v2_a_token_proto_msgTypes, + }.Build() + File_adaptors_morpho_morpho_aave_v2_a_token_proto = out.File + file_adaptors_morpho_morpho_aave_v2_a_token_proto_rawDesc = nil + file_adaptors_morpho_morpho_aave_v2_a_token_proto_goTypes = nil + file_adaptors_morpho_morpho_aave_v2_a_token_proto_depIdxs = nil +} diff --git a/steward_proto_go/steward_proto/morpho_aave_v2_debt_token.pb.go b/steward_proto_go/steward_proto/morpho_aave_v2_debt_token.pb.go new file mode 100644 index 00000000..43dfbcb5 --- /dev/null +++ b/steward_proto_go/steward_proto/morpho_aave_v2_debt_token.pb.go @@ -0,0 +1,460 @@ +// +// Protos for function calls to the Morpho Aave V2 Debt Token adaptor. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.26.0 +// protoc v3.21.12 +// source: adaptors/morpho/morpho_aave_v2_debt_token.proto + +package steward_proto + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Represents call data for the Morpho Aave V2 Debt Token adaptor. +type MorphoAaveV2DebtTokenAdaptorV1 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Function: + // *MorphoAaveV2DebtTokenAdaptorV1_RevokeApproval + // *MorphoAaveV2DebtTokenAdaptorV1_BorrowFromAaveV2Morpho_ + // *MorphoAaveV2DebtTokenAdaptorV1_RepayAaveV2MorphoDebt_ + Function isMorphoAaveV2DebtTokenAdaptorV1_Function `protobuf_oneof:"function"` +} + +func (x *MorphoAaveV2DebtTokenAdaptorV1) Reset() { + *x = MorphoAaveV2DebtTokenAdaptorV1{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_morpho_morpho_aave_v2_debt_token_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MorphoAaveV2DebtTokenAdaptorV1) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MorphoAaveV2DebtTokenAdaptorV1) ProtoMessage() {} + +func (x *MorphoAaveV2DebtTokenAdaptorV1) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_morpho_morpho_aave_v2_debt_token_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MorphoAaveV2DebtTokenAdaptorV1.ProtoReflect.Descriptor instead. +func (*MorphoAaveV2DebtTokenAdaptorV1) Descriptor() ([]byte, []int) { + return file_adaptors_morpho_morpho_aave_v2_debt_token_proto_rawDescGZIP(), []int{0} +} + +func (m *MorphoAaveV2DebtTokenAdaptorV1) GetFunction() isMorphoAaveV2DebtTokenAdaptorV1_Function { + if m != nil { + return m.Function + } + return nil +} + +func (x *MorphoAaveV2DebtTokenAdaptorV1) GetRevokeApproval() *RevokeApproval { + if x, ok := x.GetFunction().(*MorphoAaveV2DebtTokenAdaptorV1_RevokeApproval); ok { + return x.RevokeApproval + } + return nil +} + +func (x *MorphoAaveV2DebtTokenAdaptorV1) GetBorrowFromAaveV2Morpho() *MorphoAaveV2DebtTokenAdaptorV1_BorrowFromAaveV2Morpho { + if x, ok := x.GetFunction().(*MorphoAaveV2DebtTokenAdaptorV1_BorrowFromAaveV2Morpho_); ok { + return x.BorrowFromAaveV2Morpho + } + return nil +} + +func (x *MorphoAaveV2DebtTokenAdaptorV1) GetRepayAaveV2MorphoDebt() *MorphoAaveV2DebtTokenAdaptorV1_RepayAaveV2MorphoDebt { + if x, ok := x.GetFunction().(*MorphoAaveV2DebtTokenAdaptorV1_RepayAaveV2MorphoDebt_); ok { + return x.RepayAaveV2MorphoDebt + } + return nil +} + +type isMorphoAaveV2DebtTokenAdaptorV1_Function interface { + isMorphoAaveV2DebtTokenAdaptorV1_Function() +} + +type MorphoAaveV2DebtTokenAdaptorV1_RevokeApproval struct { + // Represents function `revokeApproval(ERC20 asset, address spender)` + RevokeApproval *RevokeApproval `protobuf:"bytes,1,opt,name=revoke_approval,json=revokeApproval,proto3,oneof"` +} + +type MorphoAaveV2DebtTokenAdaptorV1_BorrowFromAaveV2Morpho_ struct { + // Represents function `borrowFromAaveV2Morpho(address aToken, uint256 amountToBorrow)` + BorrowFromAaveV2Morpho *MorphoAaveV2DebtTokenAdaptorV1_BorrowFromAaveV2Morpho `protobuf:"bytes,2,opt,name=borrow_from_aave_v2_morpho,json=borrowFromAaveV2Morpho,proto3,oneof"` +} + +type MorphoAaveV2DebtTokenAdaptorV1_RepayAaveV2MorphoDebt_ struct { + // Represents function `repayAaveV2MorphoDebt(IAaveToken aToken, uint256 amountToRepay)` + RepayAaveV2MorphoDebt *MorphoAaveV2DebtTokenAdaptorV1_RepayAaveV2MorphoDebt `protobuf:"bytes,3,opt,name=repay_aave_v2_morpho_debt,json=repayAaveV2MorphoDebt,proto3,oneof"` +} + +func (*MorphoAaveV2DebtTokenAdaptorV1_RevokeApproval) isMorphoAaveV2DebtTokenAdaptorV1_Function() {} + +func (*MorphoAaveV2DebtTokenAdaptorV1_BorrowFromAaveV2Morpho_) isMorphoAaveV2DebtTokenAdaptorV1_Function() { +} + +func (*MorphoAaveV2DebtTokenAdaptorV1_RepayAaveV2MorphoDebt_) isMorphoAaveV2DebtTokenAdaptorV1_Function() { +} + +type MorphoAaveV2DebtTokenAdaptorV1Calls struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Calls []*MorphoAaveV2DebtTokenAdaptorV1 `protobuf:"bytes,1,rep,name=calls,proto3" json:"calls,omitempty"` +} + +func (x *MorphoAaveV2DebtTokenAdaptorV1Calls) Reset() { + *x = MorphoAaveV2DebtTokenAdaptorV1Calls{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_morpho_morpho_aave_v2_debt_token_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MorphoAaveV2DebtTokenAdaptorV1Calls) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MorphoAaveV2DebtTokenAdaptorV1Calls) ProtoMessage() {} + +func (x *MorphoAaveV2DebtTokenAdaptorV1Calls) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_morpho_morpho_aave_v2_debt_token_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MorphoAaveV2DebtTokenAdaptorV1Calls.ProtoReflect.Descriptor instead. +func (*MorphoAaveV2DebtTokenAdaptorV1Calls) Descriptor() ([]byte, []int) { + return file_adaptors_morpho_morpho_aave_v2_debt_token_proto_rawDescGZIP(), []int{1} +} + +func (x *MorphoAaveV2DebtTokenAdaptorV1Calls) GetCalls() []*MorphoAaveV2DebtTokenAdaptorV1 { + if x != nil { + return x.Calls + } + return nil +} + +// +// Allows strategists to borrow assets from Aave. +// +// Represents function `borrowFromAaveV2Morpho(address aToken, uint256 amountToBorrow)` +type MorphoAaveV2DebtTokenAdaptorV1_BorrowFromAaveV2Morpho struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The address of the Aave V2 aToken to borrow. + AToken string `protobuf:"bytes,1,opt,name=a_token,json=aToken,proto3" json:"a_token,omitempty"` + // The amount of the asset to borrow. + AmountToBorrow string `protobuf:"bytes,2,opt,name=amount_to_borrow,json=amountToBorrow,proto3" json:"amount_to_borrow,omitempty"` +} + +func (x *MorphoAaveV2DebtTokenAdaptorV1_BorrowFromAaveV2Morpho) Reset() { + *x = MorphoAaveV2DebtTokenAdaptorV1_BorrowFromAaveV2Morpho{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_morpho_morpho_aave_v2_debt_token_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MorphoAaveV2DebtTokenAdaptorV1_BorrowFromAaveV2Morpho) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MorphoAaveV2DebtTokenAdaptorV1_BorrowFromAaveV2Morpho) ProtoMessage() {} + +func (x *MorphoAaveV2DebtTokenAdaptorV1_BorrowFromAaveV2Morpho) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_morpho_morpho_aave_v2_debt_token_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MorphoAaveV2DebtTokenAdaptorV1_BorrowFromAaveV2Morpho.ProtoReflect.Descriptor instead. +func (*MorphoAaveV2DebtTokenAdaptorV1_BorrowFromAaveV2Morpho) Descriptor() ([]byte, []int) { + return file_adaptors_morpho_morpho_aave_v2_debt_token_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *MorphoAaveV2DebtTokenAdaptorV1_BorrowFromAaveV2Morpho) GetAToken() string { + if x != nil { + return x.AToken + } + return "" +} + +func (x *MorphoAaveV2DebtTokenAdaptorV1_BorrowFromAaveV2Morpho) GetAmountToBorrow() string { + if x != nil { + return x.AmountToBorrow + } + return "" +} + +// +// Allows strategists to repay loan debt on Aave. +// +// Represents function `repayAaveV2MorphoDebt(IAaveToken aToken, uint256 amountToRepay)` +type MorphoAaveV2DebtTokenAdaptorV1_RepayAaveV2MorphoDebt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The address of the Aave V2 aToken to repay. + AToken string `protobuf:"bytes,1,opt,name=a_token,json=aToken,proto3" json:"a_token,omitempty"` + // The amount of the asset to repay. + AmountToRepay string `protobuf:"bytes,2,opt,name=amount_to_repay,json=amountToRepay,proto3" json:"amount_to_repay,omitempty"` +} + +func (x *MorphoAaveV2DebtTokenAdaptorV1_RepayAaveV2MorphoDebt) Reset() { + *x = MorphoAaveV2DebtTokenAdaptorV1_RepayAaveV2MorphoDebt{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_morpho_morpho_aave_v2_debt_token_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MorphoAaveV2DebtTokenAdaptorV1_RepayAaveV2MorphoDebt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MorphoAaveV2DebtTokenAdaptorV1_RepayAaveV2MorphoDebt) ProtoMessage() {} + +func (x *MorphoAaveV2DebtTokenAdaptorV1_RepayAaveV2MorphoDebt) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_morpho_morpho_aave_v2_debt_token_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MorphoAaveV2DebtTokenAdaptorV1_RepayAaveV2MorphoDebt.ProtoReflect.Descriptor instead. +func (*MorphoAaveV2DebtTokenAdaptorV1_RepayAaveV2MorphoDebt) Descriptor() ([]byte, []int) { + return file_adaptors_morpho_morpho_aave_v2_debt_token_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *MorphoAaveV2DebtTokenAdaptorV1_RepayAaveV2MorphoDebt) GetAToken() string { + if x != nil { + return x.AToken + } + return "" +} + +func (x *MorphoAaveV2DebtTokenAdaptorV1_RepayAaveV2MorphoDebt) GetAmountToRepay() string { + if x != nil { + return x.AmountToRepay + } + return "" +} + +var File_adaptors_morpho_morpho_aave_v2_debt_token_proto protoreflect.FileDescriptor + +var file_adaptors_morpho_morpho_aave_v2_debt_token_proto_rawDesc = []byte{ + 0x0a, 0x2f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, + 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, + 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x0a, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x1a, 0x13, 0x61, + 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xa9, 0x04, 0x0a, 0x1e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, + 0x65, 0x56, 0x32, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x56, 0x31, 0x12, 0x45, 0x0a, 0x0f, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x5f, + 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x76, 0x6f, + 0x6b, 0x65, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, + 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x12, 0x7f, 0x0a, 0x1a, + 0x62, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x61, 0x76, 0x65, + 0x5f, 0x76, 0x32, 0x5f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x41, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, + 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x42, 0x6f, 0x72, + 0x72, 0x6f, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x4d, 0x6f, 0x72, + 0x70, 0x68, 0x6f, 0x48, 0x00, 0x52, 0x16, 0x62, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x46, 0x72, 0x6f, + 0x6d, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x12, 0x7c, 0x0a, + 0x19, 0x72, 0x65, 0x70, 0x61, 0x79, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x32, 0x5f, 0x6d, + 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x40, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, + 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x52, 0x65, 0x70, + 0x61, 0x79, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x44, 0x65, + 0x62, 0x74, 0x48, 0x00, 0x52, 0x15, 0x72, 0x65, 0x70, 0x61, 0x79, 0x41, 0x61, 0x76, 0x65, 0x56, + 0x32, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x44, 0x65, 0x62, 0x74, 0x1a, 0x5b, 0x0a, 0x16, 0x42, + 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x4d, + 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x28, + 0x0a, 0x10, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x62, 0x6f, 0x72, 0x72, + 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x54, 0x6f, 0x42, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x1a, 0x58, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x61, + 0x79, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x44, 0x65, 0x62, + 0x74, 0x12, 0x17, 0x0a, 0x07, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x61, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x70, 0x61, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x52, 0x65, 0x70, + 0x61, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x67, + 0x0a, 0x23, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x44, 0x65, + 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, + 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x40, 0x0a, 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, + 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x32, 0x44, 0x65, + 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, + 0x52, 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x42, 0x10, 0x5a, 0x0e, 0x2f, 0x73, 0x74, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +} + +var ( + file_adaptors_morpho_morpho_aave_v2_debt_token_proto_rawDescOnce sync.Once + file_adaptors_morpho_morpho_aave_v2_debt_token_proto_rawDescData = file_adaptors_morpho_morpho_aave_v2_debt_token_proto_rawDesc +) + +func file_adaptors_morpho_morpho_aave_v2_debt_token_proto_rawDescGZIP() []byte { + file_adaptors_morpho_morpho_aave_v2_debt_token_proto_rawDescOnce.Do(func() { + file_adaptors_morpho_morpho_aave_v2_debt_token_proto_rawDescData = protoimpl.X.CompressGZIP(file_adaptors_morpho_morpho_aave_v2_debt_token_proto_rawDescData) + }) + return file_adaptors_morpho_morpho_aave_v2_debt_token_proto_rawDescData +} + +var file_adaptors_morpho_morpho_aave_v2_debt_token_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_adaptors_morpho_morpho_aave_v2_debt_token_proto_goTypes = []interface{}{ + (*MorphoAaveV2DebtTokenAdaptorV1)(nil), // 0: steward.v3.MorphoAaveV2DebtTokenAdaptorV1 + (*MorphoAaveV2DebtTokenAdaptorV1Calls)(nil), // 1: steward.v3.MorphoAaveV2DebtTokenAdaptorV1Calls + (*MorphoAaveV2DebtTokenAdaptorV1_BorrowFromAaveV2Morpho)(nil), // 2: steward.v3.MorphoAaveV2DebtTokenAdaptorV1.BorrowFromAaveV2Morpho + (*MorphoAaveV2DebtTokenAdaptorV1_RepayAaveV2MorphoDebt)(nil), // 3: steward.v3.MorphoAaveV2DebtTokenAdaptorV1.RepayAaveV2MorphoDebt + (*RevokeApproval)(nil), // 4: steward.v3.RevokeApproval +} +var file_adaptors_morpho_morpho_aave_v2_debt_token_proto_depIdxs = []int32{ + 4, // 0: steward.v3.MorphoAaveV2DebtTokenAdaptorV1.revoke_approval:type_name -> steward.v3.RevokeApproval + 2, // 1: steward.v3.MorphoAaveV2DebtTokenAdaptorV1.borrow_from_aave_v2_morpho:type_name -> steward.v3.MorphoAaveV2DebtTokenAdaptorV1.BorrowFromAaveV2Morpho + 3, // 2: steward.v3.MorphoAaveV2DebtTokenAdaptorV1.repay_aave_v2_morpho_debt:type_name -> steward.v3.MorphoAaveV2DebtTokenAdaptorV1.RepayAaveV2MorphoDebt + 0, // 3: steward.v3.MorphoAaveV2DebtTokenAdaptorV1Calls.calls:type_name -> steward.v3.MorphoAaveV2DebtTokenAdaptorV1 + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_adaptors_morpho_morpho_aave_v2_debt_token_proto_init() } +func file_adaptors_morpho_morpho_aave_v2_debt_token_proto_init() { + if File_adaptors_morpho_morpho_aave_v2_debt_token_proto != nil { + return + } + file_adaptors_base_proto_init() + if !protoimpl.UnsafeEnabled { + file_adaptors_morpho_morpho_aave_v2_debt_token_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MorphoAaveV2DebtTokenAdaptorV1); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_morpho_morpho_aave_v2_debt_token_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MorphoAaveV2DebtTokenAdaptorV1Calls); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_morpho_morpho_aave_v2_debt_token_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MorphoAaveV2DebtTokenAdaptorV1_BorrowFromAaveV2Morpho); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_morpho_morpho_aave_v2_debt_token_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MorphoAaveV2DebtTokenAdaptorV1_RepayAaveV2MorphoDebt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_adaptors_morpho_morpho_aave_v2_debt_token_proto_msgTypes[0].OneofWrappers = []interface{}{ + (*MorphoAaveV2DebtTokenAdaptorV1_RevokeApproval)(nil), + (*MorphoAaveV2DebtTokenAdaptorV1_BorrowFromAaveV2Morpho_)(nil), + (*MorphoAaveV2DebtTokenAdaptorV1_RepayAaveV2MorphoDebt_)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_adaptors_morpho_morpho_aave_v2_debt_token_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_adaptors_morpho_morpho_aave_v2_debt_token_proto_goTypes, + DependencyIndexes: file_adaptors_morpho_morpho_aave_v2_debt_token_proto_depIdxs, + MessageInfos: file_adaptors_morpho_morpho_aave_v2_debt_token_proto_msgTypes, + }.Build() + File_adaptors_morpho_morpho_aave_v2_debt_token_proto = out.File + file_adaptors_morpho_morpho_aave_v2_debt_token_proto_rawDesc = nil + file_adaptors_morpho_morpho_aave_v2_debt_token_proto_goTypes = nil + file_adaptors_morpho_morpho_aave_v2_debt_token_proto_depIdxs = nil +} diff --git a/steward_proto_go/steward_proto/morpho_aave_v3_a_token_collateral.pb.go b/steward_proto_go/steward_proto/morpho_aave_v3_a_token_collateral.pb.go new file mode 100644 index 00000000..b4aebf76 --- /dev/null +++ b/steward_proto_go/steward_proto/morpho_aave_v3_a_token_collateral.pb.go @@ -0,0 +1,467 @@ +// +// Protos for function calls to the Morpho Aave V3 AToken Collateral adaptor. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.26.0 +// protoc v3.21.12 +// source: adaptors/morpho/morpho_aave_v3_a_token_collateral.proto + +package steward_proto + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Represents call data for the Morpho Aave V3 AToken Collateral adaptor. +type MorphoAaveV3ATokenCollateralAdaptorV1 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Function: + // *MorphoAaveV3ATokenCollateralAdaptorV1_RevokeApproval + // *MorphoAaveV3ATokenCollateralAdaptorV1_DepositToAaveV3Morpho_ + // *MorphoAaveV3ATokenCollateralAdaptorV1_WithdrawFromAaveV3Morpho_ + Function isMorphoAaveV3ATokenCollateralAdaptorV1_Function `protobuf_oneof:"function"` +} + +func (x *MorphoAaveV3ATokenCollateralAdaptorV1) Reset() { + *x = MorphoAaveV3ATokenCollateralAdaptorV1{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MorphoAaveV3ATokenCollateralAdaptorV1) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MorphoAaveV3ATokenCollateralAdaptorV1) ProtoMessage() {} + +func (x *MorphoAaveV3ATokenCollateralAdaptorV1) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MorphoAaveV3ATokenCollateralAdaptorV1.ProtoReflect.Descriptor instead. +func (*MorphoAaveV3ATokenCollateralAdaptorV1) Descriptor() ([]byte, []int) { + return file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_rawDescGZIP(), []int{0} +} + +func (m *MorphoAaveV3ATokenCollateralAdaptorV1) GetFunction() isMorphoAaveV3ATokenCollateralAdaptorV1_Function { + if m != nil { + return m.Function + } + return nil +} + +func (x *MorphoAaveV3ATokenCollateralAdaptorV1) GetRevokeApproval() *RevokeApproval { + if x, ok := x.GetFunction().(*MorphoAaveV3ATokenCollateralAdaptorV1_RevokeApproval); ok { + return x.RevokeApproval + } + return nil +} + +func (x *MorphoAaveV3ATokenCollateralAdaptorV1) GetDepositToAaveV3Morpho() *MorphoAaveV3ATokenCollateralAdaptorV1_DepositToAaveV3Morpho { + if x, ok := x.GetFunction().(*MorphoAaveV3ATokenCollateralAdaptorV1_DepositToAaveV3Morpho_); ok { + return x.DepositToAaveV3Morpho + } + return nil +} + +func (x *MorphoAaveV3ATokenCollateralAdaptorV1) GetWithdrawFromAaveV3Morpho() *MorphoAaveV3ATokenCollateralAdaptorV1_WithdrawFromAaveV3Morpho { + if x, ok := x.GetFunction().(*MorphoAaveV3ATokenCollateralAdaptorV1_WithdrawFromAaveV3Morpho_); ok { + return x.WithdrawFromAaveV3Morpho + } + return nil +} + +type isMorphoAaveV3ATokenCollateralAdaptorV1_Function interface { + isMorphoAaveV3ATokenCollateralAdaptorV1_Function() +} + +type MorphoAaveV3ATokenCollateralAdaptorV1_RevokeApproval struct { + // Represents function `revokeApproval(ERC20 asset, address spender)` + RevokeApproval *RevokeApproval `protobuf:"bytes,1,opt,name=revoke_approval,json=revokeApproval,proto3,oneof"` +} + +type MorphoAaveV3ATokenCollateralAdaptorV1_DepositToAaveV3Morpho_ struct { + // Represents function `depositToAaveV3Morpho(ERC20 tokenToDeposit, uint256 amountToDeposit)` + DepositToAaveV3Morpho *MorphoAaveV3ATokenCollateralAdaptorV1_DepositToAaveV3Morpho `protobuf:"bytes,2,opt,name=deposit_to_aave_v3_morpho,json=depositToAaveV3Morpho,proto3,oneof"` +} + +type MorphoAaveV3ATokenCollateralAdaptorV1_WithdrawFromAaveV3Morpho_ struct { + // Represents function `withdrawFromAaveV3Morpho(ERC20 tokenToWithdraw, uint256 amountToWithdraw)` + WithdrawFromAaveV3Morpho *MorphoAaveV3ATokenCollateralAdaptorV1_WithdrawFromAaveV3Morpho `protobuf:"bytes,3,opt,name=withdraw_from_aave_v3_morpho,json=withdrawFromAaveV3Morpho,proto3,oneof"` +} + +func (*MorphoAaveV3ATokenCollateralAdaptorV1_RevokeApproval) isMorphoAaveV3ATokenCollateralAdaptorV1_Function() { +} + +func (*MorphoAaveV3ATokenCollateralAdaptorV1_DepositToAaveV3Morpho_) isMorphoAaveV3ATokenCollateralAdaptorV1_Function() { +} + +func (*MorphoAaveV3ATokenCollateralAdaptorV1_WithdrawFromAaveV3Morpho_) isMorphoAaveV3ATokenCollateralAdaptorV1_Function() { +} + +type MorphoAaveV3ATokenCollateralAdaptorV1Calls struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Calls []*MorphoAaveV3ATokenCollateralAdaptorV1 `protobuf:"bytes,1,rep,name=calls,proto3" json:"calls,omitempty"` +} + +func (x *MorphoAaveV3ATokenCollateralAdaptorV1Calls) Reset() { + *x = MorphoAaveV3ATokenCollateralAdaptorV1Calls{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MorphoAaveV3ATokenCollateralAdaptorV1Calls) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MorphoAaveV3ATokenCollateralAdaptorV1Calls) ProtoMessage() {} + +func (x *MorphoAaveV3ATokenCollateralAdaptorV1Calls) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MorphoAaveV3ATokenCollateralAdaptorV1Calls.ProtoReflect.Descriptor instead. +func (*MorphoAaveV3ATokenCollateralAdaptorV1Calls) Descriptor() ([]byte, []int) { + return file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_rawDescGZIP(), []int{1} +} + +func (x *MorphoAaveV3ATokenCollateralAdaptorV1Calls) GetCalls() []*MorphoAaveV3ATokenCollateralAdaptorV1 { + if x != nil { + return x.Calls + } + return nil +} + +// +// Allows strategists to lend assets on Morpho +// +// Represents function `depositToAaveV3Morpho(ERC20 tokenToDeposit, uint256 amountToDeposit)` +type MorphoAaveV3ATokenCollateralAdaptorV1_DepositToAaveV3Morpho struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The address of the token to deposit + TokenToDeposit string `protobuf:"bytes,1,opt,name=token_to_deposit,json=tokenToDeposit,proto3" json:"token_to_deposit,omitempty"` + // The amount of tokens to deposit + AmountToDeposit string `protobuf:"bytes,2,opt,name=amount_to_deposit,json=amountToDeposit,proto3" json:"amount_to_deposit,omitempty"` +} + +func (x *MorphoAaveV3ATokenCollateralAdaptorV1_DepositToAaveV3Morpho) Reset() { + *x = MorphoAaveV3ATokenCollateralAdaptorV1_DepositToAaveV3Morpho{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MorphoAaveV3ATokenCollateralAdaptorV1_DepositToAaveV3Morpho) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MorphoAaveV3ATokenCollateralAdaptorV1_DepositToAaveV3Morpho) ProtoMessage() {} + +func (x *MorphoAaveV3ATokenCollateralAdaptorV1_DepositToAaveV3Morpho) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MorphoAaveV3ATokenCollateralAdaptorV1_DepositToAaveV3Morpho.ProtoReflect.Descriptor instead. +func (*MorphoAaveV3ATokenCollateralAdaptorV1_DepositToAaveV3Morpho) Descriptor() ([]byte, []int) { + return file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *MorphoAaveV3ATokenCollateralAdaptorV1_DepositToAaveV3Morpho) GetTokenToDeposit() string { + if x != nil { + return x.TokenToDeposit + } + return "" +} + +func (x *MorphoAaveV3ATokenCollateralAdaptorV1_DepositToAaveV3Morpho) GetAmountToDeposit() string { + if x != nil { + return x.AmountToDeposit + } + return "" +} + +// +// Allows strategists to withdraw assets from Morpho +// +// Represents function `withdrawFromAaveV3Morpho(ERC20 tokenToWithdraw, uint256 amountToWithdraw)` +type MorphoAaveV3ATokenCollateralAdaptorV1_WithdrawFromAaveV3Morpho struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The address of the token to withdraw + TokenToWithdraw string `protobuf:"bytes,1,opt,name=token_to_withdraw,json=tokenToWithdraw,proto3" json:"token_to_withdraw,omitempty"` + // The amount of tokens to withdraw + AmountToWithdraw string `protobuf:"bytes,2,opt,name=amount_to_withdraw,json=amountToWithdraw,proto3" json:"amount_to_withdraw,omitempty"` +} + +func (x *MorphoAaveV3ATokenCollateralAdaptorV1_WithdrawFromAaveV3Morpho) Reset() { + *x = MorphoAaveV3ATokenCollateralAdaptorV1_WithdrawFromAaveV3Morpho{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MorphoAaveV3ATokenCollateralAdaptorV1_WithdrawFromAaveV3Morpho) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MorphoAaveV3ATokenCollateralAdaptorV1_WithdrawFromAaveV3Morpho) ProtoMessage() {} + +func (x *MorphoAaveV3ATokenCollateralAdaptorV1_WithdrawFromAaveV3Morpho) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MorphoAaveV3ATokenCollateralAdaptorV1_WithdrawFromAaveV3Morpho.ProtoReflect.Descriptor instead. +func (*MorphoAaveV3ATokenCollateralAdaptorV1_WithdrawFromAaveV3Morpho) Descriptor() ([]byte, []int) { + return file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *MorphoAaveV3ATokenCollateralAdaptorV1_WithdrawFromAaveV3Morpho) GetTokenToWithdraw() string { + if x != nil { + return x.TokenToWithdraw + } + return "" +} + +func (x *MorphoAaveV3ATokenCollateralAdaptorV1_WithdrawFromAaveV3Morpho) GetAmountToWithdraw() string { + if x != nil { + return x.AmountToWithdraw + } + return "" +} + +var File_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto protoreflect.FileDescriptor + +var file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_rawDesc = []byte{ + 0x0a, 0x37, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, + 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, + 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, + 0x72, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x73, 0x74, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x2e, 0x76, 0x33, 0x1a, 0x13, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, + 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf4, 0x04, 0x0a, 0x25, 0x4d, + 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, + 0x6f, 0x72, 0x56, 0x31, 0x12, 0x45, 0x0a, 0x0f, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x5f, 0x61, + 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x76, 0x6f, 0x6b, + 0x65, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x76, + 0x6f, 0x6b, 0x65, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x12, 0x83, 0x01, 0x0a, 0x19, + 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, + 0x76, 0x33, 0x5f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x47, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, + 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, + 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, + 0x56, 0x31, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x6f, 0x41, 0x61, 0x76, 0x65, + 0x56, 0x33, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x48, 0x00, 0x52, 0x15, 0x64, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x54, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x4d, 0x6f, 0x72, 0x70, 0x68, + 0x6f, 0x12, 0x8c, 0x01, 0x0a, 0x1c, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x66, + 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x6d, 0x6f, 0x72, 0x70, + 0x68, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, + 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x57, 0x69, 0x74, 0x68, + 0x64, 0x72, 0x61, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x4d, 0x6f, + 0x72, 0x70, 0x68, 0x6f, 0x48, 0x00, 0x52, 0x18, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, + 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, + 0x1a, 0x6d, 0x0a, 0x15, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x6f, 0x41, 0x61, 0x76, + 0x65, 0x56, 0x33, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x6f, 0x44, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x6f, + 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x1a, + 0x74, 0x0a, 0x18, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x41, + 0x61, 0x76, 0x65, 0x56, 0x33, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x12, 0x2a, 0x0a, 0x11, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x74, 0x6f, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x6f, 0x57, + 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x57, 0x69, 0x74, + 0x68, 0x64, 0x72, 0x61, 0x77, 0x42, 0x0a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x75, 0x0a, 0x2a, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, + 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, + 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, + 0x47, 0x0a, 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, + 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, + 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x43, 0x6f, + 0x6c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, + 0x31, 0x52, 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x42, 0x10, 0x5a, 0x0e, 0x2f, 0x73, 0x74, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +} + +var ( + file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_rawDescOnce sync.Once + file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_rawDescData = file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_rawDesc +) + +func file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_rawDescGZIP() []byte { + file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_rawDescOnce.Do(func() { + file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_rawDescData = protoimpl.X.CompressGZIP(file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_rawDescData) + }) + return file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_rawDescData +} + +var file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_goTypes = []interface{}{ + (*MorphoAaveV3ATokenCollateralAdaptorV1)(nil), // 0: steward.v3.MorphoAaveV3ATokenCollateralAdaptorV1 + (*MorphoAaveV3ATokenCollateralAdaptorV1Calls)(nil), // 1: steward.v3.MorphoAaveV3ATokenCollateralAdaptorV1Calls + (*MorphoAaveV3ATokenCollateralAdaptorV1_DepositToAaveV3Morpho)(nil), // 2: steward.v3.MorphoAaveV3ATokenCollateralAdaptorV1.DepositToAaveV3Morpho + (*MorphoAaveV3ATokenCollateralAdaptorV1_WithdrawFromAaveV3Morpho)(nil), // 3: steward.v3.MorphoAaveV3ATokenCollateralAdaptorV1.WithdrawFromAaveV3Morpho + (*RevokeApproval)(nil), // 4: steward.v3.RevokeApproval +} +var file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_depIdxs = []int32{ + 4, // 0: steward.v3.MorphoAaveV3ATokenCollateralAdaptorV1.revoke_approval:type_name -> steward.v3.RevokeApproval + 2, // 1: steward.v3.MorphoAaveV3ATokenCollateralAdaptorV1.deposit_to_aave_v3_morpho:type_name -> steward.v3.MorphoAaveV3ATokenCollateralAdaptorV1.DepositToAaveV3Morpho + 3, // 2: steward.v3.MorphoAaveV3ATokenCollateralAdaptorV1.withdraw_from_aave_v3_morpho:type_name -> steward.v3.MorphoAaveV3ATokenCollateralAdaptorV1.WithdrawFromAaveV3Morpho + 0, // 3: steward.v3.MorphoAaveV3ATokenCollateralAdaptorV1Calls.calls:type_name -> steward.v3.MorphoAaveV3ATokenCollateralAdaptorV1 + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_init() } +func file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_init() { + if File_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto != nil { + return + } + file_adaptors_base_proto_init() + if !protoimpl.UnsafeEnabled { + file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MorphoAaveV3ATokenCollateralAdaptorV1); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MorphoAaveV3ATokenCollateralAdaptorV1Calls); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MorphoAaveV3ATokenCollateralAdaptorV1_DepositToAaveV3Morpho); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MorphoAaveV3ATokenCollateralAdaptorV1_WithdrawFromAaveV3Morpho); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_msgTypes[0].OneofWrappers = []interface{}{ + (*MorphoAaveV3ATokenCollateralAdaptorV1_RevokeApproval)(nil), + (*MorphoAaveV3ATokenCollateralAdaptorV1_DepositToAaveV3Morpho_)(nil), + (*MorphoAaveV3ATokenCollateralAdaptorV1_WithdrawFromAaveV3Morpho_)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_goTypes, + DependencyIndexes: file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_depIdxs, + MessageInfos: file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_msgTypes, + }.Build() + File_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto = out.File + file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_rawDesc = nil + file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_goTypes = nil + file_adaptors_morpho_morpho_aave_v3_a_token_collateral_proto_depIdxs = nil +} diff --git a/steward_proto_go/steward_proto/morpho_aave_v3_a_token_p2p.pb.go b/steward_proto_go/steward_proto/morpho_aave_v3_a_token_p2p.pb.go new file mode 100644 index 00000000..1cfd2723 --- /dev/null +++ b/steward_proto_go/steward_proto/morpho_aave_v3_a_token_p2p.pb.go @@ -0,0 +1,486 @@ +// +// Protos for function calls to the Morpho Aave V3 AToken P2P adaptor. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.26.0 +// protoc v3.21.12 +// source: adaptors/morpho/morpho_aave_v3_a_token_p2p.proto + +package steward_proto + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Represents call data for the Morpho Aave V3 A Token P2P adaptor. +type MorphoAaveV3ATokenP2PAdaptorV1 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Function: + // *MorphoAaveV3ATokenP2PAdaptorV1_RevokeApproval + // *MorphoAaveV3ATokenP2PAdaptorV1_DepositToAaveV3Morpho_ + // *MorphoAaveV3ATokenP2PAdaptorV1_WithdrawFromAaveV3Morpho_ + Function isMorphoAaveV3ATokenP2PAdaptorV1_Function `protobuf_oneof:"function"` +} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1) Reset() { + *x = MorphoAaveV3ATokenP2PAdaptorV1{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MorphoAaveV3ATokenP2PAdaptorV1) ProtoMessage() {} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MorphoAaveV3ATokenP2PAdaptorV1.ProtoReflect.Descriptor instead. +func (*MorphoAaveV3ATokenP2PAdaptorV1) Descriptor() ([]byte, []int) { + return file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_rawDescGZIP(), []int{0} +} + +func (m *MorphoAaveV3ATokenP2PAdaptorV1) GetFunction() isMorphoAaveV3ATokenP2PAdaptorV1_Function { + if m != nil { + return m.Function + } + return nil +} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1) GetRevokeApproval() *RevokeApproval { + if x, ok := x.GetFunction().(*MorphoAaveV3ATokenP2PAdaptorV1_RevokeApproval); ok { + return x.RevokeApproval + } + return nil +} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1) GetDepositToAaveV3Morpho() *MorphoAaveV3ATokenP2PAdaptorV1_DepositToAaveV3Morpho { + if x, ok := x.GetFunction().(*MorphoAaveV3ATokenP2PAdaptorV1_DepositToAaveV3Morpho_); ok { + return x.DepositToAaveV3Morpho + } + return nil +} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1) GetWithdrawFromAaveV3Morpho() *MorphoAaveV3ATokenP2PAdaptorV1_WithdrawFromAaveV3Morpho { + if x, ok := x.GetFunction().(*MorphoAaveV3ATokenP2PAdaptorV1_WithdrawFromAaveV3Morpho_); ok { + return x.WithdrawFromAaveV3Morpho + } + return nil +} + +type isMorphoAaveV3ATokenP2PAdaptorV1_Function interface { + isMorphoAaveV3ATokenP2PAdaptorV1_Function() +} + +type MorphoAaveV3ATokenP2PAdaptorV1_RevokeApproval struct { + // Represents function `revokeApproval(ERC20 asset, address spender)` + RevokeApproval *RevokeApproval `protobuf:"bytes,1,opt,name=revoke_approval,json=revokeApproval,proto3,oneof"` +} + +type MorphoAaveV3ATokenP2PAdaptorV1_DepositToAaveV3Morpho_ struct { + // Represents function `depositToAaveV3Morpho(ERC20 tokenToDeposit, uint256 amountToDeposit, uint256 maxIterations)` + DepositToAaveV3Morpho *MorphoAaveV3ATokenP2PAdaptorV1_DepositToAaveV3Morpho `protobuf:"bytes,2,opt,name=deposit_to_aave_v3_morpho,json=depositToAaveV3Morpho,proto3,oneof"` +} + +type MorphoAaveV3ATokenP2PAdaptorV1_WithdrawFromAaveV3Morpho_ struct { + // Represents function `withdrawFromAaveV3Morpho(ERC20 tokenToWithdraw, uint256 amountToWithdraw, uint256 maxIterations)` + WithdrawFromAaveV3Morpho *MorphoAaveV3ATokenP2PAdaptorV1_WithdrawFromAaveV3Morpho `protobuf:"bytes,3,opt,name=withdraw_from_aave_v3_morpho,json=withdrawFromAaveV3Morpho,proto3,oneof"` +} + +func (*MorphoAaveV3ATokenP2PAdaptorV1_RevokeApproval) isMorphoAaveV3ATokenP2PAdaptorV1_Function() {} + +func (*MorphoAaveV3ATokenP2PAdaptorV1_DepositToAaveV3Morpho_) isMorphoAaveV3ATokenP2PAdaptorV1_Function() { +} + +func (*MorphoAaveV3ATokenP2PAdaptorV1_WithdrawFromAaveV3Morpho_) isMorphoAaveV3ATokenP2PAdaptorV1_Function() { +} + +type MorphoAaveV3ATokenP2PAdaptorV1Calls struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Calls []*MorphoAaveV3ATokenP2PAdaptorV1 `protobuf:"bytes,1,rep,name=calls,proto3" json:"calls,omitempty"` +} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1Calls) Reset() { + *x = MorphoAaveV3ATokenP2PAdaptorV1Calls{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1Calls) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MorphoAaveV3ATokenP2PAdaptorV1Calls) ProtoMessage() {} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1Calls) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MorphoAaveV3ATokenP2PAdaptorV1Calls.ProtoReflect.Descriptor instead. +func (*MorphoAaveV3ATokenP2PAdaptorV1Calls) Descriptor() ([]byte, []int) { + return file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_rawDescGZIP(), []int{1} +} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1Calls) GetCalls() []*MorphoAaveV3ATokenP2PAdaptorV1 { + if x != nil { + return x.Calls + } + return nil +} + +// +// Allows strategists to lend assets on Morpho +// +// Represents function `depositToAaveV3Morpho(ERC20 tokenToDeposit, uint256 amountToDeposit, uint256 maxIterations)` +type MorphoAaveV3ATokenP2PAdaptorV1_DepositToAaveV3Morpho struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The address of the token to deposit + TokenToDeposit string `protobuf:"bytes,1,opt,name=token_to_deposit,json=tokenToDeposit,proto3" json:"token_to_deposit,omitempty"` + // The amount of tokens to deposit + AmountToDeposit string `protobuf:"bytes,2,opt,name=amount_to_deposit,json=amountToDeposit,proto3" json:"amount_to_deposit,omitempty"` + // The maximum number of iterations to run + MaxIterations string `protobuf:"bytes,3,opt,name=max_iterations,json=maxIterations,proto3" json:"max_iterations,omitempty"` +} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1_DepositToAaveV3Morpho) Reset() { + *x = MorphoAaveV3ATokenP2PAdaptorV1_DepositToAaveV3Morpho{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1_DepositToAaveV3Morpho) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MorphoAaveV3ATokenP2PAdaptorV1_DepositToAaveV3Morpho) ProtoMessage() {} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1_DepositToAaveV3Morpho) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MorphoAaveV3ATokenP2PAdaptorV1_DepositToAaveV3Morpho.ProtoReflect.Descriptor instead. +func (*MorphoAaveV3ATokenP2PAdaptorV1_DepositToAaveV3Morpho) Descriptor() ([]byte, []int) { + return file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1_DepositToAaveV3Morpho) GetTokenToDeposit() string { + if x != nil { + return x.TokenToDeposit + } + return "" +} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1_DepositToAaveV3Morpho) GetAmountToDeposit() string { + if x != nil { + return x.AmountToDeposit + } + return "" +} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1_DepositToAaveV3Morpho) GetMaxIterations() string { + if x != nil { + return x.MaxIterations + } + return "" +} + +// +// Allows strategists to withdraw assets from Morpho +// +// Represents function `withdrawFromAaveV3Morpho(ERC20 tokenToWithdraw, uint256 amountToWithdraw, uint256 maxIterations)` +type MorphoAaveV3ATokenP2PAdaptorV1_WithdrawFromAaveV3Morpho struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The address of the token to withdraw + TokenToWithdraw string `protobuf:"bytes,1,opt,name=token_to_withdraw,json=tokenToWithdraw,proto3" json:"token_to_withdraw,omitempty"` + // The amount of tokens to withdraw + AmountToWithdraw string `protobuf:"bytes,2,opt,name=amount_to_withdraw,json=amountToWithdraw,proto3" json:"amount_to_withdraw,omitempty"` + // The maximum number of iterations to run + MaxIterations string `protobuf:"bytes,3,opt,name=max_iterations,json=maxIterations,proto3" json:"max_iterations,omitempty"` +} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1_WithdrawFromAaveV3Morpho) Reset() { + *x = MorphoAaveV3ATokenP2PAdaptorV1_WithdrawFromAaveV3Morpho{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1_WithdrawFromAaveV3Morpho) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MorphoAaveV3ATokenP2PAdaptorV1_WithdrawFromAaveV3Morpho) ProtoMessage() {} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1_WithdrawFromAaveV3Morpho) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MorphoAaveV3ATokenP2PAdaptorV1_WithdrawFromAaveV3Morpho.ProtoReflect.Descriptor instead. +func (*MorphoAaveV3ATokenP2PAdaptorV1_WithdrawFromAaveV3Morpho) Descriptor() ([]byte, []int) { + return file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1_WithdrawFromAaveV3Morpho) GetTokenToWithdraw() string { + if x != nil { + return x.TokenToWithdraw + } + return "" +} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1_WithdrawFromAaveV3Morpho) GetAmountToWithdraw() string { + if x != nil { + return x.AmountToWithdraw + } + return "" +} + +func (x *MorphoAaveV3ATokenP2PAdaptorV1_WithdrawFromAaveV3Morpho) GetMaxIterations() string { + if x != nil { + return x.MaxIterations + } + return "" +} + +var File_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto protoreflect.FileDescriptor + +var file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_rawDesc = []byte{ + 0x0a, 0x30, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, + 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, + 0x5f, 0x61, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x70, 0x32, 0x70, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x12, 0x0a, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x1a, 0x13, + 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x22, 0xae, 0x05, 0x0a, 0x1e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, + 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x32, 0x50, 0x41, 0x64, 0x61, + 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x12, 0x45, 0x0a, 0x0f, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, + 0x5f, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x76, + 0x6f, 0x6b, 0x65, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0e, 0x72, + 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x12, 0x7c, 0x0a, + 0x19, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, + 0x5f, 0x76, 0x33, 0x5f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x40, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, + 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x50, 0x32, 0x50, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x44, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x54, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x4d, 0x6f, 0x72, 0x70, + 0x68, 0x6f, 0x48, 0x00, 0x52, 0x15, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x6f, 0x41, + 0x61, 0x76, 0x65, 0x56, 0x33, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x12, 0x85, 0x01, 0x0a, 0x1c, + 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x61, + 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, + 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x50, 0x32, 0x50, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x57, + 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x61, 0x76, 0x65, 0x56, + 0x33, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x48, 0x00, 0x52, 0x18, 0x77, 0x69, 0x74, 0x68, 0x64, + 0x72, 0x61, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x4d, 0x6f, 0x72, + 0x70, 0x68, 0x6f, 0x1a, 0x94, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, + 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x12, 0x28, 0x0a, + 0x10, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x6f, + 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x44, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x61, 0x78, + 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x9b, 0x01, 0x0a, 0x18, 0x57, + 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x61, 0x76, 0x65, 0x56, + 0x33, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x5f, 0x74, 0x6f, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x6f, 0x57, 0x69, 0x74, 0x68, 0x64, + 0x72, 0x61, 0x77, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x74, 0x6f, + 0x5f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x10, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, + 0x77, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x49, 0x74, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x67, 0x0a, 0x23, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, + 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x32, 0x50, 0x41, 0x64, 0x61, + 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, 0x73, 0x12, 0x40, 0x0a, 0x05, 0x63, + 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x74, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, + 0x76, 0x65, 0x56, 0x33, 0x41, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x32, 0x50, 0x41, 0x64, 0x61, + 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x52, 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x42, 0x10, 0x5a, + 0x0e, 0x2f, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_rawDescOnce sync.Once + file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_rawDescData = file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_rawDesc +) + +func file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_rawDescGZIP() []byte { + file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_rawDescOnce.Do(func() { + file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_rawDescData = protoimpl.X.CompressGZIP(file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_rawDescData) + }) + return file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_rawDescData +} + +var file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_goTypes = []interface{}{ + (*MorphoAaveV3ATokenP2PAdaptorV1)(nil), // 0: steward.v3.MorphoAaveV3ATokenP2PAdaptorV1 + (*MorphoAaveV3ATokenP2PAdaptorV1Calls)(nil), // 1: steward.v3.MorphoAaveV3ATokenP2PAdaptorV1Calls + (*MorphoAaveV3ATokenP2PAdaptorV1_DepositToAaveV3Morpho)(nil), // 2: steward.v3.MorphoAaveV3ATokenP2PAdaptorV1.DepositToAaveV3Morpho + (*MorphoAaveV3ATokenP2PAdaptorV1_WithdrawFromAaveV3Morpho)(nil), // 3: steward.v3.MorphoAaveV3ATokenP2PAdaptorV1.WithdrawFromAaveV3Morpho + (*RevokeApproval)(nil), // 4: steward.v3.RevokeApproval +} +var file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_depIdxs = []int32{ + 4, // 0: steward.v3.MorphoAaveV3ATokenP2PAdaptorV1.revoke_approval:type_name -> steward.v3.RevokeApproval + 2, // 1: steward.v3.MorphoAaveV3ATokenP2PAdaptorV1.deposit_to_aave_v3_morpho:type_name -> steward.v3.MorphoAaveV3ATokenP2PAdaptorV1.DepositToAaveV3Morpho + 3, // 2: steward.v3.MorphoAaveV3ATokenP2PAdaptorV1.withdraw_from_aave_v3_morpho:type_name -> steward.v3.MorphoAaveV3ATokenP2PAdaptorV1.WithdrawFromAaveV3Morpho + 0, // 3: steward.v3.MorphoAaveV3ATokenP2PAdaptorV1Calls.calls:type_name -> steward.v3.MorphoAaveV3ATokenP2PAdaptorV1 + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_init() } +func file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_init() { + if File_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto != nil { + return + } + file_adaptors_base_proto_init() + if !protoimpl.UnsafeEnabled { + file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MorphoAaveV3ATokenP2PAdaptorV1); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MorphoAaveV3ATokenP2PAdaptorV1Calls); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MorphoAaveV3ATokenP2PAdaptorV1_DepositToAaveV3Morpho); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MorphoAaveV3ATokenP2PAdaptorV1_WithdrawFromAaveV3Morpho); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_msgTypes[0].OneofWrappers = []interface{}{ + (*MorphoAaveV3ATokenP2PAdaptorV1_RevokeApproval)(nil), + (*MorphoAaveV3ATokenP2PAdaptorV1_DepositToAaveV3Morpho_)(nil), + (*MorphoAaveV3ATokenP2PAdaptorV1_WithdrawFromAaveV3Morpho_)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_goTypes, + DependencyIndexes: file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_depIdxs, + MessageInfos: file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_msgTypes, + }.Build() + File_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto = out.File + file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_rawDesc = nil + file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_goTypes = nil + file_adaptors_morpho_morpho_aave_v3_a_token_p2p_proto_depIdxs = nil +} diff --git a/steward_proto_go/steward_proto/morpho_aave_v3_debt_token.pb.go b/steward_proto_go/steward_proto/morpho_aave_v3_debt_token.pb.go new file mode 100644 index 00000000..a1fcc3f6 --- /dev/null +++ b/steward_proto_go/steward_proto/morpho_aave_v3_debt_token.pb.go @@ -0,0 +1,472 @@ +// +// Protos for function calls to the Morpho Aave V3 Debt Token adaptor. + +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.26.0 +// protoc v3.21.12 +// source: adaptors/morpho/morpho_aave_v3_debt_token.proto + +package steward_proto + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Represents call data for the Morpho Aave V3 Debt Token adaptor. +type MorphoAaveV3DebtTokenAdaptorV1 struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Function: + // *MorphoAaveV3DebtTokenAdaptorV1_RevokeApproval + // *MorphoAaveV3DebtTokenAdaptorV1_BorrowFromAaveV3Morpho_ + // *MorphoAaveV3DebtTokenAdaptorV1_RepayAaveV3MorphoDebt_ + Function isMorphoAaveV3DebtTokenAdaptorV1_Function `protobuf_oneof:"function"` +} + +func (x *MorphoAaveV3DebtTokenAdaptorV1) Reset() { + *x = MorphoAaveV3DebtTokenAdaptorV1{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_morpho_morpho_aave_v3_debt_token_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MorphoAaveV3DebtTokenAdaptorV1) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MorphoAaveV3DebtTokenAdaptorV1) ProtoMessage() {} + +func (x *MorphoAaveV3DebtTokenAdaptorV1) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_morpho_morpho_aave_v3_debt_token_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MorphoAaveV3DebtTokenAdaptorV1.ProtoReflect.Descriptor instead. +func (*MorphoAaveV3DebtTokenAdaptorV1) Descriptor() ([]byte, []int) { + return file_adaptors_morpho_morpho_aave_v3_debt_token_proto_rawDescGZIP(), []int{0} +} + +func (m *MorphoAaveV3DebtTokenAdaptorV1) GetFunction() isMorphoAaveV3DebtTokenAdaptorV1_Function { + if m != nil { + return m.Function + } + return nil +} + +func (x *MorphoAaveV3DebtTokenAdaptorV1) GetRevokeApproval() *RevokeApproval { + if x, ok := x.GetFunction().(*MorphoAaveV3DebtTokenAdaptorV1_RevokeApproval); ok { + return x.RevokeApproval + } + return nil +} + +func (x *MorphoAaveV3DebtTokenAdaptorV1) GetBorrowFromAaveV3Morpho() *MorphoAaveV3DebtTokenAdaptorV1_BorrowFromAaveV3Morpho { + if x, ok := x.GetFunction().(*MorphoAaveV3DebtTokenAdaptorV1_BorrowFromAaveV3Morpho_); ok { + return x.BorrowFromAaveV3Morpho + } + return nil +} + +func (x *MorphoAaveV3DebtTokenAdaptorV1) GetRepayAaveV3MorphoDebt() *MorphoAaveV3DebtTokenAdaptorV1_RepayAaveV3MorphoDebt { + if x, ok := x.GetFunction().(*MorphoAaveV3DebtTokenAdaptorV1_RepayAaveV3MorphoDebt_); ok { + return x.RepayAaveV3MorphoDebt + } + return nil +} + +type isMorphoAaveV3DebtTokenAdaptorV1_Function interface { + isMorphoAaveV3DebtTokenAdaptorV1_Function() +} + +type MorphoAaveV3DebtTokenAdaptorV1_RevokeApproval struct { + // Represents function `revokeApproval(ERC20 asset, address spender)` + RevokeApproval *RevokeApproval `protobuf:"bytes,1,opt,name=revoke_approval,json=revokeApproval,proto3,oneof"` +} + +type MorphoAaveV3DebtTokenAdaptorV1_BorrowFromAaveV3Morpho_ struct { + // Represents function `borrowFromAaveV3Morpho(address underlying, uint256 amountToBorrow, uint256 maxIterations)` + BorrowFromAaveV3Morpho *MorphoAaveV3DebtTokenAdaptorV1_BorrowFromAaveV3Morpho `protobuf:"bytes,2,opt,name=borrow_from_aave_v3_morpho,json=borrowFromAaveV3Morpho,proto3,oneof"` +} + +type MorphoAaveV3DebtTokenAdaptorV1_RepayAaveV3MorphoDebt_ struct { + // Represents function `repayAaveV3MorphoDebt(ERC20 tokenToRepay, uint256 amountToRepay)` + RepayAaveV3MorphoDebt *MorphoAaveV3DebtTokenAdaptorV1_RepayAaveV3MorphoDebt `protobuf:"bytes,3,opt,name=repay_aave_v3_morpho_debt,json=repayAaveV3MorphoDebt,proto3,oneof"` +} + +func (*MorphoAaveV3DebtTokenAdaptorV1_RevokeApproval) isMorphoAaveV3DebtTokenAdaptorV1_Function() {} + +func (*MorphoAaveV3DebtTokenAdaptorV1_BorrowFromAaveV3Morpho_) isMorphoAaveV3DebtTokenAdaptorV1_Function() { +} + +func (*MorphoAaveV3DebtTokenAdaptorV1_RepayAaveV3MorphoDebt_) isMorphoAaveV3DebtTokenAdaptorV1_Function() { +} + +type MorphoAaveV3DebtTokenAdaptorV1Calls struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Calls []*MorphoAaveV3DebtTokenAdaptorV1 `protobuf:"bytes,1,rep,name=calls,proto3" json:"calls,omitempty"` +} + +func (x *MorphoAaveV3DebtTokenAdaptorV1Calls) Reset() { + *x = MorphoAaveV3DebtTokenAdaptorV1Calls{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_morpho_morpho_aave_v3_debt_token_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MorphoAaveV3DebtTokenAdaptorV1Calls) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MorphoAaveV3DebtTokenAdaptorV1Calls) ProtoMessage() {} + +func (x *MorphoAaveV3DebtTokenAdaptorV1Calls) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_morpho_morpho_aave_v3_debt_token_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MorphoAaveV3DebtTokenAdaptorV1Calls.ProtoReflect.Descriptor instead. +func (*MorphoAaveV3DebtTokenAdaptorV1Calls) Descriptor() ([]byte, []int) { + return file_adaptors_morpho_morpho_aave_v3_debt_token_proto_rawDescGZIP(), []int{1} +} + +func (x *MorphoAaveV3DebtTokenAdaptorV1Calls) GetCalls() []*MorphoAaveV3DebtTokenAdaptorV1 { + if x != nil { + return x.Calls + } + return nil +} + +// +// Allows strategists to borrow assets from Morpho +// +// Represents function `borrowFromAaveV3Morpho(address underlying, uint256 amountToBorrow, uint256 maxIterations)` +type MorphoAaveV3DebtTokenAdaptorV1_BorrowFromAaveV3Morpho struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The underlying asset to borrow + Underlying string `protobuf:"bytes,1,opt,name=underlying,proto3" json:"underlying,omitempty"` + // The amount of the underlying asset to borrow + AmountToBorrow string `protobuf:"bytes,2,opt,name=amount_to_borrow,json=amountToBorrow,proto3" json:"amount_to_borrow,omitempty"` + // The maximum number of iterations to perform + MaxIterations string `protobuf:"bytes,3,opt,name=max_iterations,json=maxIterations,proto3" json:"max_iterations,omitempty"` +} + +func (x *MorphoAaveV3DebtTokenAdaptorV1_BorrowFromAaveV3Morpho) Reset() { + *x = MorphoAaveV3DebtTokenAdaptorV1_BorrowFromAaveV3Morpho{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_morpho_morpho_aave_v3_debt_token_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MorphoAaveV3DebtTokenAdaptorV1_BorrowFromAaveV3Morpho) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MorphoAaveV3DebtTokenAdaptorV1_BorrowFromAaveV3Morpho) ProtoMessage() {} + +func (x *MorphoAaveV3DebtTokenAdaptorV1_BorrowFromAaveV3Morpho) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_morpho_morpho_aave_v3_debt_token_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MorphoAaveV3DebtTokenAdaptorV1_BorrowFromAaveV3Morpho.ProtoReflect.Descriptor instead. +func (*MorphoAaveV3DebtTokenAdaptorV1_BorrowFromAaveV3Morpho) Descriptor() ([]byte, []int) { + return file_adaptors_morpho_morpho_aave_v3_debt_token_proto_rawDescGZIP(), []int{0, 0} +} + +func (x *MorphoAaveV3DebtTokenAdaptorV1_BorrowFromAaveV3Morpho) GetUnderlying() string { + if x != nil { + return x.Underlying + } + return "" +} + +func (x *MorphoAaveV3DebtTokenAdaptorV1_BorrowFromAaveV3Morpho) GetAmountToBorrow() string { + if x != nil { + return x.AmountToBorrow + } + return "" +} + +func (x *MorphoAaveV3DebtTokenAdaptorV1_BorrowFromAaveV3Morpho) GetMaxIterations() string { + if x != nil { + return x.MaxIterations + } + return "" +} + +// +// Allows strategists to repay loan debt on Morpho +// +// Represents function `repayAaveV3MorphoDebt(ERC20 tokenToRepay, uint256 amountToRepay)` +type MorphoAaveV3DebtTokenAdaptorV1_RepayAaveV3MorphoDebt struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The token to repay + TokenToRepay string `protobuf:"bytes,1,opt,name=token_to_repay,json=tokenToRepay,proto3" json:"token_to_repay,omitempty"` + // The amount of the token to repay + AmountToRepay string `protobuf:"bytes,2,opt,name=amount_to_repay,json=amountToRepay,proto3" json:"amount_to_repay,omitempty"` +} + +func (x *MorphoAaveV3DebtTokenAdaptorV1_RepayAaveV3MorphoDebt) Reset() { + *x = MorphoAaveV3DebtTokenAdaptorV1_RepayAaveV3MorphoDebt{} + if protoimpl.UnsafeEnabled { + mi := &file_adaptors_morpho_morpho_aave_v3_debt_token_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MorphoAaveV3DebtTokenAdaptorV1_RepayAaveV3MorphoDebt) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MorphoAaveV3DebtTokenAdaptorV1_RepayAaveV3MorphoDebt) ProtoMessage() {} + +func (x *MorphoAaveV3DebtTokenAdaptorV1_RepayAaveV3MorphoDebt) ProtoReflect() protoreflect.Message { + mi := &file_adaptors_morpho_morpho_aave_v3_debt_token_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MorphoAaveV3DebtTokenAdaptorV1_RepayAaveV3MorphoDebt.ProtoReflect.Descriptor instead. +func (*MorphoAaveV3DebtTokenAdaptorV1_RepayAaveV3MorphoDebt) Descriptor() ([]byte, []int) { + return file_adaptors_morpho_morpho_aave_v3_debt_token_proto_rawDescGZIP(), []int{0, 1} +} + +func (x *MorphoAaveV3DebtTokenAdaptorV1_RepayAaveV3MorphoDebt) GetTokenToRepay() string { + if x != nil { + return x.TokenToRepay + } + return "" +} + +func (x *MorphoAaveV3DebtTokenAdaptorV1_RepayAaveV3MorphoDebt) GetAmountToRepay() string { + if x != nil { + return x.AmountToRepay + } + return "" +} + +var File_adaptors_morpho_morpho_aave_v3_debt_token_proto protoreflect.FileDescriptor + +var file_adaptors_morpho_morpho_aave_v3_debt_token_proto_rawDesc = []byte{ + 0x0a, 0x2f, 0x61, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, + 0x6f, 0x2f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, + 0x5f, 0x64, 0x65, 0x62, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x0a, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x1a, 0x13, 0x61, + 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0xe5, 0x04, 0x0a, 0x1e, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, + 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, + 0x74, 0x6f, 0x72, 0x56, 0x31, 0x12, 0x45, 0x0a, 0x0f, 0x72, 0x65, 0x76, 0x6f, 0x6b, 0x65, 0x5f, + 0x61, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x52, 0x65, 0x76, 0x6f, + 0x6b, 0x65, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, + 0x76, 0x6f, 0x6b, 0x65, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x76, 0x61, 0x6c, 0x12, 0x7f, 0x0a, 0x1a, + 0x62, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x61, 0x76, 0x65, + 0x5f, 0x76, 0x33, 0x5f, 0x6d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x41, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, + 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x42, 0x6f, 0x72, + 0x72, 0x6f, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x4d, 0x6f, 0x72, + 0x70, 0x68, 0x6f, 0x48, 0x00, 0x52, 0x16, 0x62, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x46, 0x72, 0x6f, + 0x6d, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x12, 0x7c, 0x0a, + 0x19, 0x72, 0x65, 0x70, 0x61, 0x79, 0x5f, 0x61, 0x61, 0x76, 0x65, 0x5f, 0x76, 0x33, 0x5f, 0x6d, + 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x5f, 0x64, 0x65, 0x62, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x40, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, + 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x2e, 0x52, 0x65, 0x70, + 0x61, 0x79, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x44, 0x65, + 0x62, 0x74, 0x48, 0x00, 0x52, 0x15, 0x72, 0x65, 0x70, 0x61, 0x79, 0x41, 0x61, 0x76, 0x65, 0x56, + 0x33, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x44, 0x65, 0x62, 0x74, 0x1a, 0x89, 0x01, 0x0a, 0x16, + 0x42, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, + 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x6c, + 0x79, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x75, 0x6e, 0x64, 0x65, + 0x72, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x12, 0x28, 0x0a, 0x10, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x74, 0x6f, 0x5f, 0x62, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x42, 0x6f, 0x72, 0x72, 0x6f, 0x77, + 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x49, 0x74, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x65, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x61, 0x79, + 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x4d, 0x6f, 0x72, 0x70, 0x68, 0x6f, 0x44, 0x65, 0x62, 0x74, + 0x12, 0x24, 0x0a, 0x0e, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x70, + 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x54, + 0x6f, 0x52, 0x65, 0x70, 0x61, 0x79, 0x12, 0x26, 0x0a, 0x0f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x74, 0x6f, 0x5f, 0x72, 0x65, 0x70, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x54, 0x6f, 0x52, 0x65, 0x70, 0x61, 0x79, 0x42, 0x0a, + 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x67, 0x0a, 0x23, 0x4d, 0x6f, + 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x43, 0x61, 0x6c, 0x6c, + 0x73, 0x12, 0x40, 0x0a, 0x05, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2a, 0x2e, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x76, 0x33, 0x2e, 0x4d, 0x6f, + 0x72, 0x70, 0x68, 0x6f, 0x41, 0x61, 0x76, 0x65, 0x56, 0x33, 0x44, 0x65, 0x62, 0x74, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x6f, 0x72, 0x56, 0x31, 0x52, 0x05, 0x63, 0x61, + 0x6c, 0x6c, 0x73, 0x42, 0x10, 0x5a, 0x0e, 0x2f, 0x73, 0x74, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_adaptors_morpho_morpho_aave_v3_debt_token_proto_rawDescOnce sync.Once + file_adaptors_morpho_morpho_aave_v3_debt_token_proto_rawDescData = file_adaptors_morpho_morpho_aave_v3_debt_token_proto_rawDesc +) + +func file_adaptors_morpho_morpho_aave_v3_debt_token_proto_rawDescGZIP() []byte { + file_adaptors_morpho_morpho_aave_v3_debt_token_proto_rawDescOnce.Do(func() { + file_adaptors_morpho_morpho_aave_v3_debt_token_proto_rawDescData = protoimpl.X.CompressGZIP(file_adaptors_morpho_morpho_aave_v3_debt_token_proto_rawDescData) + }) + return file_adaptors_morpho_morpho_aave_v3_debt_token_proto_rawDescData +} + +var file_adaptors_morpho_morpho_aave_v3_debt_token_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_adaptors_morpho_morpho_aave_v3_debt_token_proto_goTypes = []interface{}{ + (*MorphoAaveV3DebtTokenAdaptorV1)(nil), // 0: steward.v3.MorphoAaveV3DebtTokenAdaptorV1 + (*MorphoAaveV3DebtTokenAdaptorV1Calls)(nil), // 1: steward.v3.MorphoAaveV3DebtTokenAdaptorV1Calls + (*MorphoAaveV3DebtTokenAdaptorV1_BorrowFromAaveV3Morpho)(nil), // 2: steward.v3.MorphoAaveV3DebtTokenAdaptorV1.BorrowFromAaveV3Morpho + (*MorphoAaveV3DebtTokenAdaptorV1_RepayAaveV3MorphoDebt)(nil), // 3: steward.v3.MorphoAaveV3DebtTokenAdaptorV1.RepayAaveV3MorphoDebt + (*RevokeApproval)(nil), // 4: steward.v3.RevokeApproval +} +var file_adaptors_morpho_morpho_aave_v3_debt_token_proto_depIdxs = []int32{ + 4, // 0: steward.v3.MorphoAaveV3DebtTokenAdaptorV1.revoke_approval:type_name -> steward.v3.RevokeApproval + 2, // 1: steward.v3.MorphoAaveV3DebtTokenAdaptorV1.borrow_from_aave_v3_morpho:type_name -> steward.v3.MorphoAaveV3DebtTokenAdaptorV1.BorrowFromAaveV3Morpho + 3, // 2: steward.v3.MorphoAaveV3DebtTokenAdaptorV1.repay_aave_v3_morpho_debt:type_name -> steward.v3.MorphoAaveV3DebtTokenAdaptorV1.RepayAaveV3MorphoDebt + 0, // 3: steward.v3.MorphoAaveV3DebtTokenAdaptorV1Calls.calls:type_name -> steward.v3.MorphoAaveV3DebtTokenAdaptorV1 + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_adaptors_morpho_morpho_aave_v3_debt_token_proto_init() } +func file_adaptors_morpho_morpho_aave_v3_debt_token_proto_init() { + if File_adaptors_morpho_morpho_aave_v3_debt_token_proto != nil { + return + } + file_adaptors_base_proto_init() + if !protoimpl.UnsafeEnabled { + file_adaptors_morpho_morpho_aave_v3_debt_token_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MorphoAaveV3DebtTokenAdaptorV1); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_morpho_morpho_aave_v3_debt_token_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MorphoAaveV3DebtTokenAdaptorV1Calls); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_morpho_morpho_aave_v3_debt_token_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MorphoAaveV3DebtTokenAdaptorV1_BorrowFromAaveV3Morpho); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_adaptors_morpho_morpho_aave_v3_debt_token_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MorphoAaveV3DebtTokenAdaptorV1_RepayAaveV3MorphoDebt); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_adaptors_morpho_morpho_aave_v3_debt_token_proto_msgTypes[0].OneofWrappers = []interface{}{ + (*MorphoAaveV3DebtTokenAdaptorV1_RevokeApproval)(nil), + (*MorphoAaveV3DebtTokenAdaptorV1_BorrowFromAaveV3Morpho_)(nil), + (*MorphoAaveV3DebtTokenAdaptorV1_RepayAaveV3MorphoDebt_)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_adaptors_morpho_morpho_aave_v3_debt_token_proto_rawDesc, + NumEnums: 0, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_adaptors_morpho_morpho_aave_v3_debt_token_proto_goTypes, + DependencyIndexes: file_adaptors_morpho_morpho_aave_v3_debt_token_proto_depIdxs, + MessageInfos: file_adaptors_morpho_morpho_aave_v3_debt_token_proto_msgTypes, + }.Build() + File_adaptors_morpho_morpho_aave_v3_debt_token_proto = out.File + file_adaptors_morpho_morpho_aave_v3_debt_token_proto_rawDesc = nil + file_adaptors_morpho_morpho_aave_v3_debt_token_proto_goTypes = nil + file_adaptors_morpho_morpho_aave_v3_debt_token_proto_depIdxs = nil +} diff --git a/steward_proto_rust/src/prost/descriptor.bin b/steward_proto_rust/src/prost/descriptor.bin index 1c042db9..d3ff73c9 100644 Binary files a/steward_proto_rust/src/prost/descriptor.bin and b/steward_proto_rust/src/prost/descriptor.bin differ diff --git a/steward_proto_rust/src/prost/steward.v3.rs b/steward_proto_rust/src/prost/steward.v3.rs index bb6dba26..39399717 100644 --- a/steward_proto_rust/src/prost/steward.v3.rs +++ b/steward_proto_rust/src/prost/steward.v3.rs @@ -750,7 +750,303 @@ pub struct UniswapV3AdaptorV2Calls { #[prost(message, repeated, tag = "1")] pub calls: ::prost::alloc::vec::Vec, } -/// Represents call data for the OneInch adaptor. +/// Represents call data for the Morpho Aave V2 AToken adaptor. +#[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] +pub struct MorphoAaveV2aTokenAdaptorV1 { + ///**** BASE ADAPTOR FUNCTIONS **** + #[prost(oneof = "morpho_aave_v2a_token_adaptor_v1::Function", tags = "1, 2, 3")] + pub function: ::core::option::Option, +} +/// Nested message and enum types in `MorphoAaveV2ATokenAdaptorV1`. +pub mod morpho_aave_v2a_token_adaptor_v1 { + /// + /// Allows strategists to lend assets on Morpho. + /// + /// Represents function `depositToAaveV2Morpho(IAaveToken aToken, uint256 amountToDeposit)` + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] + pub struct DepositToAaveV2Morpho { + /// The address of the Aave V2 aToken to deposit to. + #[prost(string, tag = "1")] + pub a_token: ::prost::alloc::string::String, + /// The amount of the asset to deposit. + #[prost(string, tag = "2")] + pub amount_to_deposit: ::prost::alloc::string::String, + } + /// + /// Allows strategists to withdraw assets from Morpho. + /// + /// Represents function `withdrawFromAaveV2Morpho(IAaveToken aToken, uint256 amountToWithdraw)` + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] + pub struct WithdrawFromAaveV2Morpho { + /// The address of the Aave V2 aToken to withdraw from. + #[prost(string, tag = "1")] + pub a_token: ::prost::alloc::string::String, + /// The amount of the asset to withdraw. + #[prost(string, tag = "2")] + pub amount_to_withdraw: ::prost::alloc::string::String, + } + ///**** BASE ADAPTOR FUNCTIONS **** + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Oneof)] + pub enum Function { + /// Represents function `revokeApproval(ERC20 asset, address spender)` + #[prost(message, tag = "1")] + RevokeApproval(super::RevokeApproval), + //**** ADAPTOR-SPECIFIC FUNCTIONS **** + /// Represents function `depositToAaveV2Morpho(IAaveToken aToken, uint256 amountToDeposit)` + #[prost(message, tag = "2")] + DepositToAaveV2Morpho(DepositToAaveV2Morpho), + /// Represents function `withdrawFromAaveV2Morpho(IAaveToken aToken, uint256 amountToWithdraw)` + #[prost(message, tag = "3")] + WithdrawFromAaveV2Morpho(WithdrawFromAaveV2Morpho), + } +} +#[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] +pub struct MorphoAaveV2aTokenAdaptorV1Calls { + #[prost(message, repeated, tag = "1")] + pub calls: ::prost::alloc::vec::Vec, +} +/// Represents call data for the Morpho Aave V3 AToken Collateral adaptor. +#[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] +pub struct MorphoAaveV3aTokenCollateralAdaptorV1 { + ///**** BASE ADAPTOR FUNCTIONS **** + #[prost( + oneof = "morpho_aave_v3a_token_collateral_adaptor_v1::Function", + tags = "1, 2, 3" + )] + pub function: ::core::option::Option, +} +/// Nested message and enum types in `MorphoAaveV3ATokenCollateralAdaptorV1`. +pub mod morpho_aave_v3a_token_collateral_adaptor_v1 { + /// + /// Allows strategists to lend assets on Morpho + /// + /// Represents function `depositToAaveV3Morpho(ERC20 tokenToDeposit, uint256 amountToDeposit)` + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] + pub struct DepositToAaveV3Morpho { + /// The address of the token to deposit + #[prost(string, tag = "1")] + pub token_to_deposit: ::prost::alloc::string::String, + /// The amount of tokens to deposit + #[prost(string, tag = "2")] + pub amount_to_deposit: ::prost::alloc::string::String, + } + /// + /// Allows strategists to withdraw assets from Morpho + /// + /// Represents function `withdrawFromAaveV3Morpho(ERC20 tokenToWithdraw, uint256 amountToWithdraw)` + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] + pub struct WithdrawFromAaveV3Morpho { + /// The address of the token to withdraw + #[prost(string, tag = "1")] + pub token_to_withdraw: ::prost::alloc::string::String, + /// The amount of tokens to withdraw + #[prost(string, tag = "2")] + pub amount_to_withdraw: ::prost::alloc::string::String, + } + ///**** BASE ADAPTOR FUNCTIONS **** + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Oneof)] + pub enum Function { + /// Represents function `revokeApproval(ERC20 asset, address spender)` + #[prost(message, tag = "1")] + RevokeApproval(super::RevokeApproval), + //**** ADAPTOR-SPECIFIC FUNCTIONS **** + /// Represents function `depositToAaveV3Morpho(ERC20 tokenToDeposit, uint256 amountToDeposit)` + #[prost(message, tag = "2")] + DepositToAaveV3Morpho(DepositToAaveV3Morpho), + /// Represents function `withdrawFromAaveV3Morpho(ERC20 tokenToWithdraw, uint256 amountToWithdraw)` + #[prost(message, tag = "3")] + WithdrawFromAaveV3Morpho(WithdrawFromAaveV3Morpho), + } +} +#[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] +pub struct MorphoAaveV3aTokenCollateralAdaptorV1Calls { + #[prost(message, repeated, tag = "1")] + pub calls: ::prost::alloc::vec::Vec, +} +/// Represents call data for the Morpho Aave V3 A Token P2P adaptor. +#[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] +pub struct MorphoAaveV3aTokenP2pAdaptorV1 { + ///**** BASE ADAPTOR FUNCTIONS **** + #[prost( + oneof = "morpho_aave_v3a_token_p2p_adaptor_v1::Function", + tags = "1, 2, 3" + )] + pub function: ::core::option::Option, +} +/// Nested message and enum types in `MorphoAaveV3ATokenP2PAdaptorV1`. +pub mod morpho_aave_v3a_token_p2p_adaptor_v1 { + /// + /// Allows strategists to lend assets on Morpho + /// + /// Represents function `depositToAaveV3Morpho(ERC20 tokenToDeposit, uint256 amountToDeposit, uint256 maxIterations)` + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] + pub struct DepositToAaveV3Morpho { + /// The address of the token to deposit + #[prost(string, tag = "1")] + pub token_to_deposit: ::prost::alloc::string::String, + /// The amount of tokens to deposit + #[prost(string, tag = "2")] + pub amount_to_deposit: ::prost::alloc::string::String, + /// The maximum number of iterations to run + #[prost(string, tag = "3")] + pub max_iterations: ::prost::alloc::string::String, + } + /// + /// Allows strategists to withdraw assets from Morpho + /// + /// Represents function `withdrawFromAaveV3Morpho(ERC20 tokenToWithdraw, uint256 amountToWithdraw, uint256 maxIterations)` + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] + pub struct WithdrawFromAaveV3Morpho { + /// The address of the token to withdraw + #[prost(string, tag = "1")] + pub token_to_withdraw: ::prost::alloc::string::String, + /// The amount of tokens to withdraw + #[prost(string, tag = "2")] + pub amount_to_withdraw: ::prost::alloc::string::String, + /// The maximum number of iterations to run + #[prost(string, tag = "3")] + pub max_iterations: ::prost::alloc::string::String, + } + ///**** BASE ADAPTOR FUNCTIONS **** + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Oneof)] + pub enum Function { + /// Represents function `revokeApproval(ERC20 asset, address spender)` + #[prost(message, tag = "1")] + RevokeApproval(super::RevokeApproval), + //**** ADAPTOR-SPECIFIC FUNCTIONS **** + /// Represents function `depositToAaveV3Morpho(ERC20 tokenToDeposit, uint256 amountToDeposit, uint256 maxIterations)` + #[prost(message, tag = "2")] + DepositToAaveV3Morpho(DepositToAaveV3Morpho), + /// Represents function `withdrawFromAaveV3Morpho(ERC20 tokenToWithdraw, uint256 amountToWithdraw, uint256 maxIterations)` + #[prost(message, tag = "3")] + WithdrawFromAaveV3Morpho(WithdrawFromAaveV3Morpho), + } +} +#[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] +pub struct MorphoAaveV3aTokenP2pAdaptorV1Calls { + #[prost(message, repeated, tag = "1")] + pub calls: ::prost::alloc::vec::Vec, +} +/// Represents call data for the Morpho Aave V3 Debt Token adaptor. +#[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] +pub struct MorphoAaveV3DebtTokenAdaptorV1 { + ///**** BASE ADAPTOR FUNCTIONS **** + #[prost( + oneof = "morpho_aave_v3_debt_token_adaptor_v1::Function", + tags = "1, 2, 3" + )] + pub function: ::core::option::Option, +} +/// Nested message and enum types in `MorphoAaveV3DebtTokenAdaptorV1`. +pub mod morpho_aave_v3_debt_token_adaptor_v1 { + /// + /// Allows strategists to borrow assets from Morpho + /// + /// Represents function `borrowFromAaveV3Morpho(address underlying, uint256 amountToBorrow, uint256 maxIterations)` + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] + pub struct BorrowFromAaveV3Morpho { + /// The underlying asset to borrow + #[prost(string, tag = "1")] + pub underlying: ::prost::alloc::string::String, + /// The amount of the underlying asset to borrow + #[prost(string, tag = "2")] + pub amount_to_borrow: ::prost::alloc::string::String, + /// The maximum number of iterations to perform + #[prost(string, tag = "3")] + pub max_iterations: ::prost::alloc::string::String, + } + /// + /// Allows strategists to repay loan debt on Morpho + /// + /// Represents function `repayAaveV3MorphoDebt(ERC20 tokenToRepay, uint256 amountToRepay)` + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] + pub struct RepayAaveV3MorphoDebt { + /// The token to repay + #[prost(string, tag = "1")] + pub token_to_repay: ::prost::alloc::string::String, + /// The amount of the token to repay + #[prost(string, tag = "2")] + pub amount_to_repay: ::prost::alloc::string::String, + } + ///**** BASE ADAPTOR FUNCTIONS **** + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Oneof)] + pub enum Function { + /// Represents function `revokeApproval(ERC20 asset, address spender)` + #[prost(message, tag = "1")] + RevokeApproval(super::RevokeApproval), + //**** ADAPTOR-SPECIFIC FUNCTIONS **** + /// Represents function `borrowFromAaveV3Morpho(address underlying, uint256 amountToBorrow, uint256 maxIterations)` + #[prost(message, tag = "2")] + BorrowFromAaveV3Morpho(BorrowFromAaveV3Morpho), + /// Represents function `repayAaveV3MorphoDebt(ERC20 tokenToRepay, uint256 amountToRepay)` + #[prost(message, tag = "3")] + RepayAaveV3MorphoDebt(RepayAaveV3MorphoDebt), + } +} +#[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] +pub struct MorphoAaveV3DebtTokenAdaptorV1Calls { + #[prost(message, repeated, tag = "1")] + pub calls: ::prost::alloc::vec::Vec, +} +/// Represents call data for the Morpho Aave V2 Debt Token adaptor. +#[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] +pub struct MorphoAaveV2DebtTokenAdaptorV1 { + ///**** BASE ADAPTOR FUNCTIONS **** + #[prost( + oneof = "morpho_aave_v2_debt_token_adaptor_v1::Function", + tags = "1, 2, 3" + )] + pub function: ::core::option::Option, +} +/// Nested message and enum types in `MorphoAaveV2DebtTokenAdaptorV1`. +pub mod morpho_aave_v2_debt_token_adaptor_v1 { + /// + /// Allows strategists to borrow assets from Aave. + /// + /// Represents function `borrowFromAaveV2Morpho(address aToken, uint256 amountToBorrow)` + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] + pub struct BorrowFromAaveV2Morpho { + /// The address of the Aave V2 aToken to borrow. + #[prost(string, tag = "1")] + pub a_token: ::prost::alloc::string::String, + /// The amount of the asset to borrow. + #[prost(string, tag = "2")] + pub amount_to_borrow: ::prost::alloc::string::String, + } + /// + /// Allows strategists to repay loan debt on Aave. + /// + /// Represents function `repayAaveV2MorphoDebt(IAaveToken aToken, uint256 amountToRepay)` + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] + pub struct RepayAaveV2MorphoDebt { + /// The address of the Aave V2 aToken to repay. + #[prost(string, tag = "1")] + pub a_token: ::prost::alloc::string::String, + /// The amount of the asset to repay. + #[prost(string, tag = "2")] + pub amount_to_repay: ::prost::alloc::string::String, + } + ///**** BASE ADAPTOR FUNCTIONS **** + #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Oneof)] + pub enum Function { + /// Represents function `revokeApproval(ERC20 asset, address spender)` + #[prost(message, tag = "1")] + RevokeApproval(super::RevokeApproval), + //**** ADAPTOR-SPECIFIC FUNCTIONS **** + /// Represents function `borrowFromAaveV2Morpho(address aToken, uint256 amountToBorrow)` + #[prost(message, tag = "2")] + BorrowFromAaveV2Morpho(BorrowFromAaveV2Morpho), + /// Represents function `repayAaveV2MorphoDebt(IAaveToken aToken, uint256 amountToRepay)` + #[prost(message, tag = "3")] + RepayAaveV2MorphoDebt(RepayAaveV2MorphoDebt), + } +} +#[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] +pub struct MorphoAaveV2DebtTokenAdaptorV1Calls { + #[prost(message, repeated, tag = "1")] + pub calls: ::prost::alloc::vec::Vec, +} +/// Represents call data for the Frax adaptor. #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] pub struct FTokenAdaptorV1 { ///**** BASE ADAPTOR FUNCTIONS **** @@ -1411,7 +1707,7 @@ pub struct CompoundCTokenAdaptorV2Calls { #[prost(message, repeated, tag = "1")] pub calls: ::prost::alloc::vec::Vec, } -/// Represents call data for the Compound C Token adaptor V2, managing lending positions on Compound. +/// Represents call data for the Balancer Pool adaptor V1, for managing pool positions on Balancer. #[derive(serde::Deserialize, serde::Serialize, Clone, PartialEq, ::prost::Message)] pub struct BalancerPoolAdaptorV1 { ///**** BASE ADAPTOR FUNCTIONS **** @@ -1879,7 +2175,7 @@ pub mod aave_v3_debt_token_adaptor_v1 { /// The function call data for the adaptor #[prost( oneof = "adaptor_call_for_aave_v3_flashloan::CallData", - tags = "2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19" + tags = "2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24" )] pub call_data: ::core::option::Option, } @@ -1944,6 +2240,23 @@ pub mod aave_v3_debt_token_adaptor_v1 { /// Represents function calls to the FTokenAdaptor V1 #[prost(message, tag = "19")] FTokenV1Calls(super::super::FTokenAdaptorV1Calls), + /// Represents function calls to the MorphoAaveV2AToken V1 + #[prost(message, tag = "20")] + MorphoAaveV2ATokenV1Calls(super::super::MorphoAaveV2aTokenAdaptorV1Calls), + /// Represents function calls to the MorphoAaveV2DebtToken V1 + #[prost(message, tag = "21")] + MorphoAaveV2DebtTokenV1Calls(super::super::MorphoAaveV2DebtTokenAdaptorV1Calls), + /// Represents function calls to the MorphoAaveV3ATokenCollateral V1 + #[prost(message, tag = "22")] + MorphoAaveV3ATokenCollateralV1Calls( + super::super::MorphoAaveV3aTokenCollateralAdaptorV1Calls, + ), + /// Represents function calls to the MorphoAaveV3ATokenP2P V1 + #[prost(message, tag = "23")] + MorphoAaveV3ATokenP2pV1Calls(super::super::MorphoAaveV3aTokenP2pAdaptorV1Calls), + /// Represents function calls to the MorphoAaveV3DebtToken V1 + #[prost(message, tag = "24")] + MorphoAaveV3DebtTokenV1Calls(super::super::MorphoAaveV3DebtTokenAdaptorV1Calls), } } ///**** BASE ADAPTOR FUNCTIONS **** @@ -2376,7 +2689,7 @@ pub struct AdaptorCall { /// The function call data for the adaptor #[prost( oneof = "adaptor_call::CallData", - tags = "2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19" + tags = "2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24" )] pub call_data: ::core::option::Option, } @@ -2439,6 +2752,21 @@ pub mod adaptor_call { /// Represents function calls to the FTokenAdaptor V1 #[prost(message, tag = "19")] FTokenV1Calls(super::FTokenAdaptorV1Calls), + /// Represents function calls to the MorphoAaveV2AToken V1 + #[prost(message, tag = "20")] + MorphoAaveV2ATokenV1Calls(super::MorphoAaveV2aTokenAdaptorV1Calls), + /// Represents function calls to the MorphoAaveV2DebtToken V1 + #[prost(message, tag = "21")] + MorphoAaveV2DebtTokenV1Calls(super::MorphoAaveV2DebtTokenAdaptorV1Calls), + /// Represents function calls to the MorphoAaveV3ATokenCollateral V1 + #[prost(message, tag = "22")] + MorphoAaveV3ATokenCollateralV1Calls(super::MorphoAaveV3aTokenCollateralAdaptorV1Calls), + /// Represents function calls to the MorphoAaveV3ATokenP2P V1 + #[prost(message, tag = "23")] + MorphoAaveV3ATokenP2pV1Calls(super::MorphoAaveV3aTokenP2pAdaptorV1Calls), + /// Represents function calls to the MorphoAaveV3DebtToken V1 + #[prost(message, tag = "24")] + MorphoAaveV3DebtTokenV1Calls(super::MorphoAaveV3DebtTokenAdaptorV1Calls), } } ///