diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 00000000..64941b9e Binary files /dev/null and b/.DS_Store differ diff --git a/Makefile b/Makefile index 1926d4dd..5401a9e6 100644 --- a/Makefile +++ b/Makefile @@ -15,8 +15,8 @@ # limitations under the License. # **************************************************************************** -# EDIT THIS: Application name -APPNAME = "PluginBoilerplate" +# Application name +APPNAME = "Origin" # Application version APPVERSION_M = 1 diff --git a/PLUGIN_SPECIFICATION.md b/PLUGIN_SPECIFICATION.md index ae5c8711..94ceccdf 100644 --- a/PLUGIN_SPECIFICATION.md +++ b/PLUGIN_SPECIFICATION.md @@ -1,24 +1,47 @@ # Technical Specification -> **Warning** -This documentation is a template and shall be updated. - ## About - -This documentation describes the smart contracts and functions supported by the boilerplate plugin. +This documentation describes the smart contracts and functions supported by the Origin plugin for Ledger Live. ## Smart Contracts Smart contracts covered by the plugin shall be described here: -| Network | Version | Smart Contract | Address | -| ---- | --- | ---- | --- | -| NetworkName | VX | ContractName | `0x0000000000000000000000000000000000000000` | - -## Functions - -For the smart contracts implemented, the functions covered by the plugin shall be described here: - -|Contract | Function | Selector | Displayed Parameters | -| --- | --- | --- | --- | -|ContractName | FunctionName | `0x00000000`|
type ParameterName
| \ No newline at end of file +| Contract | Address | +| -------------------- | -------------------------------------------- | +| OETH Zapper | `0x9858e47bcbbe6fbac040519b02d7cd4b2c470c66` | +| OETH Vault | `0x39254033945aa2e4809cc2977e7087bee48bd7ab` | +| ETH/OETH Curve Pool | `0x94b17476a93b3262d87b9a326965d1e91f9c13e7` | +| Curve Router | `0x99a58482bd75cbab83b27ec03ca68ff489b5788f` | +| OUSD Vault | `0xe75d77b1865ae93c7eaa3040b038d7aa7bc02f70` | +| OUSD Flipper | `0xcecad69d7d4ed6d52efcfa028af8732f27e08f70` | +| UniswapV3 Router | `0xe592427a0aece92de3edee1f18e0157c05861564` | +| OUSD/3CRV Curve Pool | `0x87650d7bbfc3a9f10587d7778206671719d9910d` | +| ETH/OETH Curve Pool | `0x94b17476a93b3262d87b9a326965d1e91f9c13e7` | +| Curve Router | `0x99a58482bd75cbab83b27ec03ca68ff489b5788f` | +| OUSD Vault | `0xe75d77b1865ae93c7eaa3040b038d7aa7bc02f70` | +| OUSD Flipper | `0xcecad69d7d4ed6d52efcfa028af8732f27e08f70` | +| WOETH | `0xdcee70654261af21c44c093c300ed3bb97b78192` | +| WOUSD | `0xd2af830e8cbdfed6cc11bab697bb25496ed6fa62` | + +## Functions implemented: + +| Function | Selector | Displayed Parameters | +| ------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| deposit | 0xd0e30db0 |
| +| depositSFRXETH | 0xd443e97d |
uint256 amount
uint256 minOETH
| +| mint | 0x156e29f6 |
address \_asset
,uint256 \_amount
uint256 \_minimumOusdAmount
| +| redeem | 0x7cbc2373 |
uint256 \_amount
uint256 \_minimumUnitAmount
| +| exchange | 0x3df02124 |
int128 i
int128 j
uint256 \_dx
uint256 \_min_dy
| +| exchange_underlying | 0xa6417ed6 |
int128 i
int128 j
uint256 \_dx
uint256 \_min_dy
| +| exchange_multiple | 0x353ca424 |
address[9] \_route
uint256 \_amount
uint256 \_expected
| +| exactInput | 0xc04b8d59 |
bytes path
address recipient
uint256 amountIn
uint256 amountOutMinimum
| +| exactInputSingle | 0x414bf389 |
address tokenIn
address tokenOut
address recipient
uint256 amountIn
uint256 amountOutMinimum
| +| buyOusdWithUsdt | 0x35aa0b96 |
uint256 amount
| +| sellOusdForUsdt | 0xcb939053 |
uint256 amount
| +| buyOusdWithDai | 0x5981c746 |
uint256 amount
| +| sellOusdForDai | 0x8a095a0f |
uint256 amount
| +| buyOusdWithUsdc | 0xbfc11ffd |
uint256 amount
| +| sellOusdForUsdc | 0xc6b68169 |
uint256 amount
| +| redeem | 0xba087652 |
uint256 assets
address receiver
| +| redeem | 0xba087652 |
uint256 shares
address receiver
| diff --git a/README.md b/README.md index 25a4e582..5e6d5ec8 100644 --- a/README.md +++ b/README.md @@ -2,23 +2,16 @@ [![Compilation & tests](https://github.com/LedgerHQ/app-plugin-boilerplate/actions/workflows/build_and_functional_tests.yml/badge.svg?branch=develop)](https://github.com/LedgerHQ/app-plugin-boilerplate/actions/workflows/build_and_functional_tests.yml) -# app-plugin-boilerplate +# app-plugin-origin -This repo is meant to be a forkable example of a plugin. - -Plugins are lightweight applications that go hand-in-hand with the Ethereum -Application on a Nano (S, S plus, X) and Stax devices. - -They allow users to safely interact with smart contracts by parsing the -transaction data and displaying its content in a human-readable way. This is -done on a "per contract" basis, meaning a plugin is required for every DApp. - -The code has been commented, and special "EDIT THIS" comments indicate where -developers are expected to adapt the code to their own needs. - -It is STRONGLY recommended to follow the -[plugin guide](https://developers.ledger.com/docs/dapp/embedded-plugin/code-overview/) -in order to better understand the flow and the context for plugins. +Ledger's recommended [plugin guide](https://developers.ledger.com/docs/dapp/embedded-plugin/code-overview/) is out-dated and doesn't work since they introduced a lot of new changes. Here's a simple way to get started with this repo: +1. Clone this repo (along with git submodules) +2. Install [Xquartz](https://www.xquartz.org/) and make sure you have enabled "Allow connections from network clients" enabled under "Security" settings. +3. Install and start Docker (Note: If Docker is already running, quit and start it after starting Xquartz, otherwise docker cannot connect to Xquartz). +4. Install the [Ledger Dev Tools VS Code plugin](https://marketplace.visualstudio.com/items?itemName=LedgerHQ.ledger-dev-tools#:~:text=ledger%2Dvscode%2Dextension,Plus%2C%20Nano%20X%2C%20Stax) and makes sure it's enabled +5. Once you have installed the plugin and open the repo, the plugin should by default try to create and start the containers. If it doesn't, you can simply click "Update Container" under "Ledger Dev Tools" in the Activity Side Bar on VS Code. +6. On the "Ledger Dev Tools" side bar, Select a target and then click on Build. +7. Once build is complete, click on "Run tests" to run the tests ## Ethereum SDK @@ -33,8 +26,12 @@ the code is compiled and tested on the latest version of the SDK. ## Documentation -The documentation about the plugin shall be added in [PLUGIN_SPECIFICATON.md](https://github.com/LedgerHQ/app-plugin-boilerplate/blob/develop/PLUGIN_SPECIFICATION.md). It shall includes at least the smart contracts and functions supported by the plugin. +The documentation about the plugin is in [PLUGIN_SPECIFICATON.md](https://github.com/LedgerHQ/app-plugin-boilerplate/blob/develop/PLUGIN_SPECIFICATION.md). It includes the smart contracts and functions supported by the plugin. ## Formatting The C source code is expected to be formatted with `clang-format` 11.0.0 or higher. + +``` +clang-format -style=Google -i src/* +``` \ No newline at end of file diff --git a/glyphs/stax_origin_64px.gif b/glyphs/stax_origin_64px.gif new file mode 100644 index 00000000..2440f0c4 Binary files /dev/null and b/glyphs/stax_origin_64px.gif differ diff --git a/glyphs/stax_origin_64px_bitmap.jpg b/glyphs/stax_origin_64px_bitmap.jpg new file mode 100644 index 00000000..2440f0c4 Binary files /dev/null and b/glyphs/stax_origin_64px_bitmap.jpg differ diff --git a/glyphs/stax_pluginboilerplate_64px.gif b/glyphs/stax_pluginboilerplate_64px.gif deleted file mode 100644 index 8bb3c2d3..00000000 Binary files a/glyphs/stax_pluginboilerplate_64px.gif and /dev/null differ diff --git a/icons/nanos_app_origin.gif b/icons/nanos_app_origin.gif new file mode 100644 index 00000000..f33e4829 Binary files /dev/null and b/icons/nanos_app_origin.gif differ diff --git a/icons/nanos_app_origin.jpg b/icons/nanos_app_origin.jpg new file mode 100644 index 00000000..ec60121e Binary files /dev/null and b/icons/nanos_app_origin.jpg differ diff --git a/icons/nanos_app_pluginboilerplate.gif b/icons/nanos_app_pluginboilerplate.gif deleted file mode 100644 index beb00efd..00000000 Binary files a/icons/nanos_app_pluginboilerplate.gif and /dev/null differ diff --git a/icons/nanox_app_origin.gif b/icons/nanox_app_origin.gif new file mode 100644 index 00000000..b601c0ba Binary files /dev/null and b/icons/nanox_app_origin.gif differ diff --git a/icons/nanox_app_origin.jpg b/icons/nanox_app_origin.jpg new file mode 100644 index 00000000..3e6de6f0 Binary files /dev/null and b/icons/nanox_app_origin.jpg differ diff --git a/icons/nanox_app_pluginboilerplate.gif b/icons/nanox_app_pluginboilerplate.gif deleted file mode 100644 index 0f194529..00000000 Binary files a/icons/nanox_app_pluginboilerplate.gif and /dev/null differ diff --git a/icons/stax_app_origin.gif b/icons/stax_app_origin.gif new file mode 100644 index 00000000..51c98e24 Binary files /dev/null and b/icons/stax_app_origin.gif differ diff --git a/icons/stax_app_origin.jpg b/icons/stax_app_origin.jpg new file mode 100644 index 00000000..145bed8a Binary files /dev/null and b/icons/stax_app_origin.jpg differ diff --git a/icons/stax_app_pluginboilerplate.gif b/icons/stax_app_pluginboilerplate.gif deleted file mode 100644 index be577494..00000000 Binary files a/icons/stax_app_pluginboilerplate.gif and /dev/null differ diff --git a/src/handle_finalize.c b/src/handle_finalize.c index c8231770..61cc85c7 100644 --- a/src/handle_finalize.c +++ b/src/handle_finalize.c @@ -1,21 +1,50 @@ #include "plugin.h" void handle_finalize(ethPluginFinalize_t *msg) { - context_t *context = (context_t *) msg->pluginContext; + context_t *context = (context_t *)msg->pluginContext; - msg->uiType = ETH_UI_TYPE_GENERIC; + msg->uiType = ETH_UI_TYPE_GENERIC; - // EDIT THIS: Set the total number of screen you will need. - msg->numScreens = 2; - // EDIT THIS: Handle this case like you wish to (i.e. maybe no additional screen needed?). - // If the beneficiary is NOT the sender, we will need an additional screen to display it. - if (memcmp(msg->address, context->beneficiary, ADDRESS_LENGTH) != 0) { - msg->numScreens += 1; - } + // Number of screens needed + msg->numScreens = 2; + + bool sender_is_beneficiary = + memcmp(msg->address, context->beneficiary, ADDRESS_LENGTH) == 0; - // EDIT THIS: set `tokenLookup1` (and maybe `tokenLookup2`) to point to - // token addresses you will info for (such as decimals, ticker...). - msg->tokenLookup1 = context->token_received; + if (sender_is_beneficiary) { + // No need to show beneficary screen when signer is same as `beneficiary` + bool wrap_tx = + (context->selectorIndex == WRAP || context->selectorIndex == UNWRAP); + bool uniswap_tx = + (context->selectorIndex == UNISWAP_V3_ROUTER_EXACT_INPUT || + context->selectorIndex == UNISWAP_ROUTER_EXACT_INPUT_SINGLE); + + if (wrap_tx) { + msg->numScreens -= 1; + } else if (uniswap_tx) { + msg->numScreens += 1; + } + } + if (!ADDRESS_IS_NETWORK_TOKEN(context->contract_address_sent)) { + // Address is not network token (0xeee...) so we will need to look up the + // token in the CAL. + printf_hex_array("Setting address sent to: ", ADDRESS_LENGTH, + context->contract_address_sent); + msg->tokenLookup1 = context->contract_address_sent; + } else { + sent_network_token(context); + msg->tokenLookup1 = NULL; + } + if (!ADDRESS_IS_NETWORK_TOKEN(context->contract_address_received)) { + // Address is not network token (0xeee...) so we will need to look up the + // token in the CAL. + printf_hex_array("Setting address received to: ", ADDRESS_LENGTH, + context->contract_address_received); + msg->tokenLookup2 = context->contract_address_received; + } else { + received_network_token(context); + msg->tokenLookup2 = NULL; + } - msg->result = ETH_PLUGIN_RESULT_OK; + msg->result = ETH_PLUGIN_RESULT_OK; } diff --git a/src/handle_init_contract.c b/src/handle_init_contract.c index bdb15573..3f7761f0 100644 --- a/src/handle_init_contract.c +++ b/src/handle_init_contract.c @@ -1,59 +1,90 @@ -#include "plugin_utils.h" #include "plugin.h" +#include "plugin_utils.h" // Called once to init. void handle_init_contract(ethPluginInitContract_t *msg) { - // Make sure we are running a compatible version. - if (msg->interfaceVersion != ETH_PLUGIN_INTERFACE_VERSION_LATEST) { - // If not the case, return the `UNAVAILABLE` status. - msg->result = ETH_PLUGIN_RESULT_UNAVAILABLE; - return; - } + // Make sure we are running a compatible version. + if (msg->interfaceVersion != ETH_PLUGIN_INTERFACE_VERSION_LATEST) { + // If not the case, return the `UNAVAILABLE` status. + msg->result = ETH_PLUGIN_RESULT_UNAVAILABLE; + return; + } - // Double check that the `context_t` struct is not bigger than the maximum size (defined by - // `msg->pluginContextLength`). - if (msg->pluginContextLength < sizeof(context_t)) { - PRINTF("Plugin parameters structure is bigger than allowed size\n"); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } + // Double check that the `context_t` struct is not bigger than the maximum + // size (defined by `msg->pluginContextLength`). + if (msg->pluginContextLength < sizeof(context_t)) { + PRINTF("Plugin parameters structure is bigger than allowed size\n"); + msg->result = ETH_PLUGIN_RESULT_ERROR; + return; + } - context_t *context = (context_t *) msg->pluginContext; + context_t *context = (context_t *)msg->pluginContext; - // Initialize the context (to 0). - memset(context, 0, sizeof(*context)); + // Initialize the context (to 0). + memset(context, 0, sizeof(*context)); - size_t index; - if (!find_selector(U4BE(msg->selector, 0), SELECTORS, SELECTOR_COUNT, &index)) { - PRINTF("Error: selector not found!\n"); - msg->result = ETH_PLUGIN_RESULT_UNAVAILABLE; - return; - } - context->selectorIndex = index; - // check for overflow - if ((size_t) context->selectorIndex != index) { - PRINTF("Error: overflow detected on selector index!\n"); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } + size_t index; + if (!find_selector(U4BE(msg->selector, 0), SELECTORS, SELECTOR_COUNT, + &index)) { + PRINTF("Error: selector not found!\n"); + msg->result = ETH_PLUGIN_RESULT_UNAVAILABLE; + return; + } + context->selectorIndex = index; + // check for overflow + if ((size_t)context->selectorIndex != index) { + PRINTF("Error: overflow detected on selector index!\n"); + msg->result = ETH_PLUGIN_RESULT_ERROR; + return; + } - // Set `next_param` to be the first field we expect to parse. - // EDIT THIS: Adapt the `cases`, and set the `next_param` to be the first parameter you expect - // to parse. - switch (context->selectorIndex) { - case SWAP_EXACT_ETH_FOR_TOKENS: - context->next_param = MIN_AMOUNT_RECEIVED; - break; - case BOILERPLATE_DUMMY_2: - context->next_param = TOKEN_RECEIVED; - break; - // Keep this - default: - PRINTF("Missing selectorIndex: %d\n", context->selectorIndex); - msg->result = ETH_PLUGIN_RESULT_ERROR; - return; - } + // Set `next_param` to be the first field we expect to parse. + switch (context->selectorIndex) { + case ZAPPER_DEPOSIT_ETH: + context->next_param = NONE; + break; + case CURVE_POOL_EXCHANGE: + case CURVE_POOL_EXCHANGE_UNDERLYING: + if (memcmp(CURVE_OETH_POOL_ADDRESS, + msg->pluginSharedRO->txContent->destination, + ADDRESS_LENGTH) == 0 || + memcmp(CURVE_OUSD_POOL_ADDRESS, + msg->pluginSharedRO->txContent->destination, + ADDRESS_LENGTH) == 0) { + context->next_param = TOKEN_SENT; + break; + } + PRINTF("Missing selectorIndex: %d\n", context->selectorIndex); + msg->result = ETH_PLUGIN_RESULT_ERROR; + return; + case UNISWAP_V3_ROUTER_EXACT_INPUT: + context->skip += 2; + context->next_param = BENEFICIARY; + case UNISWAP_ROUTER_EXACT_INPUT_SINGLE: + break; + case CURVE_ROUTER_EXCHANGE_MULTIPLE: + case VAULT_MINT: + context->next_param = TOKEN_SENT; + break; + case FLIPPER_BUY_OUSD_WITH_USDT: + case FLIPPER_SELL_OUSD_FOR_USDT: + case FLIPPER_BUY_OUSD_WITH_DAI: + case FLIPPER_SELL_OUSD_FOR_DAI: + case FLIPPER_BUY_OUSD_WITH_USDC: + case FLIPPER_SELL_OUSD_FOR_USDC: + case ZAPPER_DEPOSIT_SFRXETH: + case VAULT_REDEEM: + case WRAP: + case UNWRAP: + context->next_param = AMOUNT_SENT; + break; + // Keep this + default: + PRINTF("Missing selectorIndex: %d\n", context->selectorIndex); + msg->result = ETH_PLUGIN_RESULT_ERROR; + return; + } - // Return valid status. - msg->result = ETH_PLUGIN_RESULT_OK; + // Return valid status. + msg->result = ETH_PLUGIN_RESULT_OK; } diff --git a/src/handle_provide_parameter.c b/src/handle_provide_parameter.c index b34e2926..cc5c9c0c 100644 --- a/src/handle_provide_parameter.c +++ b/src/handle_provide_parameter.c @@ -1,68 +1,482 @@ #include "plugin.h" -// EDIT THIS: Remove this function and write your own handlers! -static void handle_swap_exact_eth_for_tokens(ethPluginProvideParameter_t *msg, context_t *context) { - if (context->go_to_offset) { - if (msg->parameterOffset != context->offset + SELECTOR_SIZE) { - return; - } - context->go_to_offset = false; +static void handle_beneficiary(ethPluginProvideParameter_t *msg, + context_t *context) { + memset(context->beneficiary, 0, sizeof(context->beneficiary)); + memcpy(context->beneficiary, + &msg->parameter[PARAMETER_LENGTH - ADDRESS_LENGTH], + sizeof(context->beneficiary)); + printf_hex_array("BENEFICIARY: ", ADDRESS_LENGTH, context->beneficiary); +} + +static void handle_amount_sent(ethPluginProvideParameter_t *msg, + context_t *context) { + memcpy(context->amount_sent, msg->parameter, INT256_LENGTH); +} + +static void handle_min_amount_received(ethPluginProvideParameter_t *msg, + context_t *context) { + memcpy(context->min_amount_received, msg->parameter, PARAMETER_LENGTH); +} + +static void handle_token_sent(ethPluginProvideParameter_t *msg, + context_t *context) { + memset(context->contract_address_sent, 0, + sizeof(context->contract_address_sent)); + memcpy(context->contract_address_sent, + &msg->parameter[PARAMETER_LENGTH - ADDRESS_LENGTH], ADDRESS_LENGTH); + printf_hex_array("TOKEN SENT: ", ADDRESS_LENGTH, + context->contract_address_sent); +} + +static void handle_token_sent_curve_pool(ethPluginProvideParameter_t *msg, + context_t *context) { + memset(context->contract_address_sent, 0, + sizeof(context->contract_address_sent)); + + bool is_oeth = + memcmp(CURVE_OETH_POOL_ADDRESS, + msg->pluginSharedRO->txContent->destination, ADDRESS_LENGTH) == 0; + + if (is_oeth) { + switch (msg->parameter[PARAMETER_LENGTH - 1]) { + case 0: + memcpy(context->contract_address_sent, NULL_ETH_ADDRESS, + ADDRESS_LENGTH); + break; + case 1: + memcpy(context->contract_address_sent, OETH_ADDRESS, ADDRESS_LENGTH); + break; + default: + PRINTF("Param not supported\n"); + break; } - switch (context->next_param) { - case MIN_AMOUNT_RECEIVED: // amountOutMin - copy_parameter(context->amount_received, - msg->parameter, - sizeof(context->amount_received)); - context->next_param = PATH_OFFSET; - break; - case PATH_OFFSET: // path - context->offset = U2BE(msg->parameter, PARAMETER_LENGTH - 2); - context->next_param = BENEFICIARY; - break; - case BENEFICIARY: // to - copy_address(context->beneficiary, msg->parameter, sizeof(context->beneficiary)); - context->next_param = PATH_LENGTH; - context->go_to_offset = true; - break; - case PATH_LENGTH: - context->offset = msg->parameterOffset - SELECTOR_SIZE + PARAMETER_LENGTH * 2; - context->go_to_offset = true; - context->next_param = TOKEN_RECEIVED; - break; - case TOKEN_RECEIVED: // path[1] -> contract address of token received - copy_address(context->token_received, msg->parameter, sizeof(context->token_received)); - context->next_param = UNEXPECTED_PARAMETER; - break; - // Keep this - default: - PRINTF("Param not supported: %d\n", context->next_param); - msg->result = ETH_PLUGIN_RESULT_ERROR; - break; + } else { + switch (msg->parameter[PARAMETER_LENGTH - 1]) { + case 0: + memcpy(context->contract_address_sent, OUSD_ADDRESS, ADDRESS_LENGTH); + break; + case 1: + memcpy(context->contract_address_sent, DAI_ADDRESS, ADDRESS_LENGTH); + break; + case 2: + memcpy(context->contract_address_sent, USDC_ADDRESS, ADDRESS_LENGTH); + break; + case 3: + memcpy(context->contract_address_sent, USDT_ADDRESS, ADDRESS_LENGTH); + break; + default: + PRINTF("Param not supported\n"); + break; } + } + + printf_hex_array("TOKEN SENT: ", ADDRESS_LENGTH, + context->contract_address_sent); } -void handle_provide_parameter(ethPluginProvideParameter_t *msg) { - context_t *context = (context_t *) msg->pluginContext; - // We use `%.*H`: it's a utility function to print bytes. You first give - // the number of bytes you wish to print (in this case, `PARAMETER_LENGTH`) and then - // the address (here `msg->parameter`). - PRINTF("plugin provide parameter: offset %d\nBytes: %.*H\n", - msg->parameterOffset, - PARAMETER_LENGTH, - msg->parameter); - - msg->result = ETH_PLUGIN_RESULT_OK; - - // EDIT THIS: adapt the cases and the names of the functions. - switch (context->selectorIndex) { - case SWAP_EXACT_ETH_FOR_TOKENS: - handle_swap_exact_eth_for_tokens(msg, context); - break; - case BOILERPLATE_DUMMY_2: - break; - default: - PRINTF("Selector Index not supported: %d\n", context->selectorIndex); - msg->result = ETH_PLUGIN_RESULT_ERROR; - break; +static void handle_token_received(ethPluginProvideParameter_t *msg, + context_t *context) { + memset(context->contract_address_received, 0, + sizeof(context->contract_address_received)); + + memcpy(context->contract_address_received, + &msg->parameter[PARAMETER_LENGTH - ADDRESS_LENGTH], ADDRESS_LENGTH); + printf_hex_array("TOKEN RECEIVED: ", ADDRESS_LENGTH, + context->contract_address_received); +} + +static void handle_token_received_curve_pool(ethPluginProvideParameter_t *msg, + context_t *context) { + memset(context->contract_address_received, 0, + sizeof(context->contract_address_received)); + + bool is_oeth = + memcmp(CURVE_OETH_POOL_ADDRESS, + msg->pluginSharedRO->txContent->destination, ADDRESS_LENGTH) == 0; + + // determine token addresses of curve pools based on contract address and + // value of i/j params + if (is_oeth) { + switch (msg->parameter[PARAMETER_LENGTH - 1]) { + case 0: + memcpy(context->contract_address_received, NULL_ETH_ADDRESS, + ADDRESS_LENGTH); + break; + case 1: + memcpy(context->contract_address_received, OETH_ADDRESS, + ADDRESS_LENGTH); + break; + default: + PRINTF("Param not supported\n"); + break; } + } else { + switch (msg->parameter[PARAMETER_LENGTH - 1]) { + case 0: + memcpy(context->contract_address_received, OUSD_ADDRESS, + ADDRESS_LENGTH); + break; + case 1: + memcpy(context->contract_address_received, DAI_ADDRESS, ADDRESS_LENGTH); + break; + case 2: + memcpy(context->contract_address_received, USDC_ADDRESS, + ADDRESS_LENGTH); + break; + case 3: + memcpy(context->contract_address_received, USDT_ADDRESS, + ADDRESS_LENGTH); + break; + default: + PRINTF("Param not supported\n"); + break; + } + } + printf_hex_array("TOKEN RECEIVED: ", ADDRESS_LENGTH, + context->contract_address_received); +} + +static void handle_wrap_and_unwrap(ethPluginProvideParameter_t *msg, + context_t *context) { + switch (context->next_param) { + case AMOUNT_SENT: // path[1] -> contract address of token received + handle_amount_sent(msg, context); + context->next_param = BENEFICIARY; + break; + case BENEFICIARY: // path[1] -> contract address of token received + handle_beneficiary(msg, context); + context->next_param = NONE; + break; + case NONE: + break; + // Keep this + default: + PRINTF("Param not supported: %d\n", context->next_param); + msg->result = ETH_PLUGIN_RESULT_ERROR; + break; + } +} + +static void handle_zapper_deposit_eth(ethPluginProvideParameter_t *msg, + context_t *context) { + switch (context->next_param) { + case NONE: + break; + default: + PRINTF("Param not supported: %d\n", context->next_param); + msg->result = ETH_PLUGIN_RESULT_ERROR; + break; + } +} + +static void handle_zapper_deposit_sfrxeth(ethPluginProvideParameter_t *msg, + context_t *context) { + switch (context->next_param) { + case AMOUNT_SENT: + handle_amount_sent(msg, context); + context->next_param = MIN_AMOUNT_RECEIVED; + break; + case MIN_AMOUNT_RECEIVED: + handle_min_amount_received(msg, context); + context->next_param = NONE; + break; + case NONE: + break; + default: + PRINTF("Param not supported\n"); + msg->result = ETH_PLUGIN_RESULT_ERROR; + break; + } +} + +// mint(address _asset,uint256 _amount,uint256 _minimumOusdAmount) +static void handle_vault_mint(ethPluginProvideParameter_t *msg, + context_t *context) { + switch (context->next_param) { + case TOKEN_SENT: + handle_token_sent(msg, context); + context->next_param = AMOUNT_SENT; + break; + case AMOUNT_SENT: + handle_amount_sent(msg, context); + context->next_param = MIN_AMOUNT_RECEIVED; + break; + case MIN_AMOUNT_RECEIVED: + handle_min_amount_received(msg, context); + context->next_param = NONE; + break; + case NONE: + break; + default: + PRINTF("Param not supported\n"); + msg->result = ETH_PLUGIN_RESULT_ERROR; + break; + } +} + +// redeem(uint256 _amount,uint256 _minimumUnitAmount) +static void handle_vault_redeem(ethPluginProvideParameter_t *msg, + context_t *context) { + switch (context->next_param) { + case AMOUNT_SENT: + handle_amount_sent(msg, context); + context->next_param = MIN_AMOUNT_RECEIVED; + break; + case MIN_AMOUNT_RECEIVED: + handle_min_amount_received(msg, context); + context->next_param = NONE; + break; + case NONE: + break; + default: + PRINTF("Param not supported\n"); + msg->result = ETH_PLUGIN_RESULT_ERROR; + break; + } +} + +// exchange(int128 i,int128 j,uint256 _dx,uint256 _min_dy) +static void handle_curve_pool_exchange(ethPluginProvideParameter_t *msg, + context_t *context) { + switch (context->next_param) { + case TOKEN_SENT: + handle_token_sent_curve_pool(msg, context); + context->next_param = TOKEN_RECEIVED; + break; + case TOKEN_RECEIVED: + handle_token_received_curve_pool(msg, context); + context->next_param = AMOUNT_SENT; + break; + case AMOUNT_SENT: + handle_amount_sent(msg, context); + context->next_param = MIN_AMOUNT_RECEIVED; + break; + case MIN_AMOUNT_RECEIVED: + handle_min_amount_received(msg, context); + context->next_param = NONE; + break; + case NONE: + break; + default: + PRINTF("Param not supported\n"); + msg->result = ETH_PLUGIN_RESULT_ERROR; + break; + } +} + +// exchange_multiple(address[9] _route,uint256[3][4] _swap_params,uint256 +// _amount,uint256 _expected) +static void handle_curve_router_exchange(ethPluginProvideParameter_t *msg, + context_t *context) { + switch (context->next_param) { + case TOKEN_SENT: + handle_token_sent(msg, context); + context->next_param = TOKEN_RECEIVED; + break; + case TOKEN_RECEIVED: + PRINTF("Counter: %d\n", context->counter); + context->counter += 1; + if (memcmp(&msg->parameter[PARAMETER_LENGTH - ADDRESS_LENGTH], + NULL_ETH_ADDRESS, ADDRESS_LENGTH) == 0) { + context->skip += 20 - context->counter; + context->counter = 0; + context->next_param = AMOUNT_SENT; + } else { + handle_token_received(msg, context); + context->next_param = TOKEN_RECEIVED; + } + break; + case AMOUNT_SENT: + handle_amount_sent(msg, context); + context->next_param = MIN_AMOUNT_RECEIVED; + break; + case MIN_AMOUNT_RECEIVED: + handle_min_amount_received(msg, context); + context->next_param = NONE; + break; + case NONE: + break; + default: + PRINTF("Param not supported\n"); + msg->result = ETH_PLUGIN_RESULT_ERROR; + break; + } +} + +// exactInput(tuple params) +static void handle_uniswap_v3_exchange(ethPluginProvideParameter_t *msg, + context_t *context) { + switch (context->next_param) { + case BENEFICIARY: + handle_beneficiary(msg, context); + context->skip += 1; + context->next_param = AMOUNT_SENT; + break; + case AMOUNT_SENT: + handle_amount_sent(msg, context); + context->next_param = MIN_AMOUNT_RECEIVED; + break; + case MIN_AMOUNT_RECEIVED: + handle_min_amount_received(msg, context); + context->next_param = PATH_LENGTH; + break; + case PATH_LENGTH: + context->offset = + U2BE(msg->parameter, PARAMETER_LENGTH - sizeof(context->offset)); + PRINTF("OFFSET: %d\n", context->offset); + context->next_param = TOKEN_SENT; + break; + case TOKEN_SENT: + // first 20 bytes of path is token sent + memcpy(context->contract_address_sent, msg->parameter, ADDRESS_LENGTH); + printf_hex_array("TOKEN_SENT: ", ADDRESS_LENGTH, + context->contract_address_sent); + context->skip = (context->offset - ADDRESS_LENGTH) / 32 - 1; + context->next_param = TOKEN_RECEIVED; + break; + case TOKEN_RECEIVED: + // address of token received starts at 20 bytes from end of path + memcpy(&context->contract_address_received[0], + &msg->parameter[(context->offset - ADDRESS_LENGTH) % + PARAMETER_LENGTH], + ADDRESS_LENGTH); + context->next_param = TOKEN_RECEIVED_REST; + break; + case TOKEN_RECEIVED_REST: + // copy rest of address in case it overflows into the next param + memcpy( + &context + ->contract_address_received[PARAMETER_LENGTH - + (context->offset - ADDRESS_LENGTH) % + PARAMETER_LENGTH], + &msg->parameter[0], + (context->offset - ADDRESS_LENGTH) % PARAMETER_LENGTH + + ADDRESS_LENGTH - PARAMETER_LENGTH); + context->next_param = NONE; + break; + case NONE: + break; + default: + PRINTF("Param not supported\n"); + msg->result = ETH_PLUGIN_RESULT_ERROR; + break; + } +} + +// exactInputSingle(tuple params) +static void handle_uniswap_exchange_single(ethPluginProvideParameter_t *msg, + context_t *context) { + switch (context->next_param) { + case TOKEN_SENT: + handle_token_sent(msg, context); + context->next_param = TOKEN_RECEIVED; + break; + case TOKEN_RECEIVED: + handle_token_received(msg, context); + context->skip += 1; + context->next_param = BENEFICIARY; + break; + case BENEFICIARY: + handle_beneficiary(msg, context); + context->skip += 1; + context->next_param = AMOUNT_SENT; + break; + case AMOUNT_SENT: + handle_amount_sent(msg, context); + context->next_param = MIN_AMOUNT_RECEIVED; + break; + case MIN_AMOUNT_RECEIVED: + handle_min_amount_received(msg, context); + context->next_param = NONE; + break; + case NONE: + break; + default: + PRINTF("Param not supported\n"); + msg->result = ETH_PLUGIN_RESULT_ERROR; + break; + } +} + +// buyOusdWithUsdt(uint256 amount) +// sellOusdForUsdt(uint256 amount) +// buyOusdWithDai(uint256 amount) +// sellOusdForDai(uint256 amount) +// buyOusdWithUsdc(uint256 amount) +// sellOusdForUsdc(uint256 amount) +static void handle_flipper_exchange(ethPluginProvideParameter_t *msg, + context_t *context) { + switch (context->next_param) { + case AMOUNT_SENT: + handle_amount_sent(msg, context); + context->next_param = NONE; + break; + case NONE: + break; + default: + PRINTF("Param not supported\n"); + msg->result = ETH_PLUGIN_RESULT_ERROR; + break; + } +} + +void handle_provide_parameter(ethPluginProvideParameter_t *msg) { + context_t *context = (context_t *)msg->pluginContext; + // We use `%.*H`: it's a utility function to print bytes. You first give + // the number of bytes you wish to print (in this case, `PARAMETER_LENGTH`) + // and then the address (here `msg->parameter`). + PRINTF("plugin provide parameter: offset %d\nBytes: %.*H\n", + msg->parameterOffset, PARAMETER_LENGTH, msg->parameter); + + msg->result = ETH_PLUGIN_RESULT_OK; + + if (context->skip) { + context->skip--; + return; + } + + switch (context->selectorIndex) { + case WRAP: + case UNWRAP: + handle_wrap_and_unwrap(msg, context); + break; + case ZAPPER_DEPOSIT_ETH: + handle_zapper_deposit_eth(msg, context); + break; + case ZAPPER_DEPOSIT_SFRXETH: + handle_zapper_deposit_sfrxeth(msg, context); + break; + case VAULT_MINT: + handle_vault_mint(msg, context); + break; + case VAULT_REDEEM: + handle_vault_redeem(msg, context); + break; + case CURVE_POOL_EXCHANGE: + case CURVE_POOL_EXCHANGE_UNDERLYING: + handle_curve_pool_exchange(msg, context); + break; + case CURVE_ROUTER_EXCHANGE_MULTIPLE: + handle_curve_router_exchange(msg, context); + break; + case UNISWAP_V3_ROUTER_EXACT_INPUT: + handle_uniswap_v3_exchange(msg, context); + break; + case UNISWAP_ROUTER_EXACT_INPUT_SINGLE: + handle_uniswap_exchange_single(msg, context); + break; + case FLIPPER_BUY_OUSD_WITH_USDT: + case FLIPPER_SELL_OUSD_FOR_USDT: + case FLIPPER_BUY_OUSD_WITH_DAI: + case FLIPPER_SELL_OUSD_FOR_DAI: + case FLIPPER_BUY_OUSD_WITH_USDC: + case FLIPPER_SELL_OUSD_FOR_USDC: + handle_flipper_exchange(msg, context); + break; + default: + PRINTF("Selector Index not supported: %d\n", context->selectorIndex); + msg->result = ETH_PLUGIN_RESULT_ERROR; + break; + } } diff --git a/src/handle_provide_token.c b/src/handle_provide_token.c index b7e53979..963967ed 100644 --- a/src/handle_provide_token.c +++ b/src/handle_provide_token.c @@ -1,28 +1,56 @@ #include "plugin.h" -// EDIT THIS: Adapt this function to your needs! Remember, the information for tokens are held in -// `msg->token1` and `msg->token2`. If those pointers are `NULL`, this means the ethereum app didn't +// The information for tokens are held in `msg->token1` and `msg->token2`. +// If those pointers are `NULL`, this means the ethereum app didn't // find any info regarding the requested tokens! void handle_provide_token(ethPluginProvideInfo_t *msg) { - context_t *context = (context_t *) msg->pluginContext; + context_t *context = (context_t *)msg->pluginContext; - if (msg->item1) { - // The Ethereum App found the information for the requested token! - // Store its decimals. - context->decimals = msg->item1->token.decimals; - // Store its ticker. - strlcpy(context->ticker, (char *) msg->item1->token.ticker, sizeof(context->ticker)); - - // Keep track that we found the token. - context->token_found = true; + PRINTF("Origin plugin provide token: 0x%p, 0x%p\n", msg->item1, msg->item2); + if (!check_token_sent(context)) { + if (ADDRESS_IS_NETWORK_TOKEN(context->contract_address_sent)) { + sent_network_token(context); + } else if (msg->item1 != NULL) { + context->decimals_sent = msg->item1->token.decimals; + strlcpy(context->ticker_sent, (char *)msg->item1->token.ticker, + sizeof(context->ticker_sent)); + context->tokens_found |= TOKEN_SENT_FOUND; } else { - // The Ethereum App did not manage to find the info for the requested token. - context->token_found = false; + // The Ethereum App found the information for the requested token! + // Store its decimals. + context->decimals_sent = DEFAULT_DECIMAL; + // Store its ticker. + strlcpy(context->ticker_sent, DEFAULT_TICKER, + sizeof(context->ticker_sent)); + // // We will need an additional screen to display a warning message. + msg->additionalScreens++; + } + } - // If we wanted to add a screen, say a warning screen for example, we could instruct the - // ethereum app to add an additional screen by setting `msg->additionalScreens` here, just - // like so: - // msg->additionalScreens = 1; + if (!check_token_received(context)) { + if (ADDRESS_IS_NETWORK_TOKEN(context->contract_address_received)) { + received_network_token(context); + } else if (msg->item2 != NULL) { + context->decimals_received = msg->item2->token.decimals; + strlcpy(context->ticker_received, (char *)msg->item2->token.ticker, + sizeof(context->ticker_received)); + context->tokens_found |= TOKEN_RECEIVED_FOUND; + } else if (context->selectorIndex == VAULT_REDEEM) { + context->decimals_received = DEFAULT_DECIMAL; + strlcpy(context->ticker_received, "UNITS", + sizeof(context->ticker_received)); + } else { + // The Ethereum App did not manage to find the info for the requested + // token. + context->decimals_received = DEFAULT_DECIMAL; + strlcpy(context->ticker_received, DEFAULT_TICKER, + sizeof(context->ticker_received)); + // If we wanted to add a screen, say a warning screen for example, we + // could instruct the ethereum app to add an additional screen by setting + // `msg->additionalScreens` here, just like so: + msg->additionalScreens++; } - msg->result = ETH_PLUGIN_RESULT_OK; + } + + msg->result = ETH_PLUGIN_RESULT_OK; } diff --git a/src/handle_query_contract_id.c b/src/handle_query_contract_id.c index 8c52902e..fd1fa027 100644 --- a/src/handle_query_contract_id.c +++ b/src/handle_query_contract_id.c @@ -2,19 +2,46 @@ // Sets the first screen to display. void handle_query_contract_id(ethQueryContractID_t *msg) { - const context_t *context = (const context_t *) msg->pluginContext; - // msg->name will be the upper sentence displayed on the screen. - // msg->version will be the lower sentence displayed on the screen. + const context_t *context = (const context_t *)msg->pluginContext; + // msg->name will be the upper sentence displayed on the screen. + // msg->version will be the lower sentence displayed on the screen. - // For the first screen, display the plugin name. - strlcpy(msg->name, APPNAME, msg->nameLength); + // For the first screen, display the plugin name. + strlcpy(msg->name, APPNAME, msg->nameLength); - // EDIT THIS: Adapt the cases by modifying the strings you pass to `strlcpy`. - if (context->selectorIndex == SWAP_EXACT_ETH_FOR_TOKENS) { - strlcpy(msg->version, "Swap", msg->versionLength); - msg->result = ETH_PLUGIN_RESULT_OK; - } else { - PRINTF("Selector index: %d not supported\n", context->selectorIndex); - msg->result = ETH_PLUGIN_RESULT_ERROR; - } + switch (context->selectorIndex) { + case ZAPPER_DEPOSIT_ETH: + case ZAPPER_DEPOSIT_SFRXETH: + case VAULT_MINT: + strlcpy(msg->version, "Mint", msg->versionLength); + break; + case VAULT_REDEEM: + strlcpy(msg->version, "Redeem", msg->versionLength); + break; + case CURVE_POOL_EXCHANGE: + case CURVE_POOL_EXCHANGE_UNDERLYING: + case CURVE_ROUTER_EXCHANGE_MULTIPLE: + case UNISWAP_V3_ROUTER_EXACT_INPUT: + case UNISWAP_ROUTER_EXACT_INPUT_SINGLE: + case FLIPPER_BUY_OUSD_WITH_USDT: + case FLIPPER_SELL_OUSD_FOR_USDT: + case FLIPPER_BUY_OUSD_WITH_DAI: + case FLIPPER_SELL_OUSD_FOR_DAI: + case FLIPPER_BUY_OUSD_WITH_USDC: + case FLIPPER_SELL_OUSD_FOR_USDC: + strlcpy(msg->version, "Swap", msg->versionLength); + break; + case WRAP: + strlcpy(msg->version, "Wrap", msg->versionLength); + break; + case UNWRAP: + strlcpy(msg->version, "Unwrap", msg->versionLength); + break; + default: + PRINTF("Selector Index :%d not supported\n", context->selectorIndex); + msg->result = ETH_PLUGIN_RESULT_ERROR; + return; + } + + msg->result = ETH_PLUGIN_RESULT_OK; } diff --git a/src/handle_query_contract_ui.c b/src/handle_query_contract_ui.c index 6d2b8b49..49ae7220 100644 --- a/src/handle_query_contract_ui.c +++ b/src/handle_query_contract_ui.c @@ -1,95 +1,337 @@ #include "plugin.h" -// EDIT THIS: You need to adapt / remove the static functions (set_send_ui, set_receive_ui ...) to -// match what you wish to display. - // Set UI for the "Send" screen. -// EDIT THIS: Adapt / remove this function to your needs. -static bool set_send_ui(ethQueryContractUI_t *msg) { - strlcpy(msg->title, "Send", msg->titleLength); - - const uint8_t *eth_amount = msg->pluginSharedRO->txContent->value.value; - uint8_t eth_amount_size = msg->pluginSharedRO->txContent->value.length; - - // Converts the uint256 number located in `eth_amount` to its string representation and - // copies this to `msg->msg`. - return amountToString(eth_amount, - eth_amount_size, - WEI_TO_ETHER, - "ETH", - msg->msg, - msg->msgLength); +static bool set_send_ui(ethQueryContractUI_t *msg, context_t *context) { + strlcpy(context->ticker_sent, + get_ticker_for_address(context->contract_address_sent), + sizeof(context->ticker_sent)); + + context->amount_length = INT256_LENGTH; + + bool is_woeth = + memcmp(WOETH_ADDRESS, msg->pluginSharedRO->txContent->destination, + ADDRESS_LENGTH) == 0; + + strlcpy(msg->title, "Send", msg->titleLength); + + switch (context->selectorIndex) { + case ZAPPER_DEPOSIT_ETH: + strlcpy(msg->title, "Deposit", msg->titleLength); + memcpy(context->amount_sent, &msg->pluginSharedRO->txContent->value.value, + msg->pluginSharedRO->txContent->value.length); + context->amount_length = msg->pluginSharedRO->txContent->value.length; + break; + case ZAPPER_DEPOSIT_SFRXETH: + strlcpy(msg->title, "Deposit", msg->titleLength); + strlcpy(context->ticker_sent, SFRXETH_TICKER, + sizeof(context->ticker_sent)); + break; + case VAULT_MINT: + strlcpy(msg->title, "Deposit", msg->titleLength); + if (memcmp(USDT_ADDRESS, context->contract_address_sent, + ADDRESS_LENGTH) == 0 || + memcmp(USDC_ADDRESS, context->contract_address_sent, + ADDRESS_LENGTH) == 0) { + context->decimals_sent = USDT_DECIMALS; + } + break; + case VAULT_REDEEM: + strlcpy(msg->title, "Redeem", msg->titleLength); + if (memcmp(OETH_VAULT_ADDRESS, + msg->pluginSharedRO->txContent->destination, + ADDRESS_LENGTH) == 0) { + strlcpy(context->ticker_sent, OETH_TICKER, + sizeof(context->ticker_sent)); + } else { + strlcpy(context->ticker_sent, OUSD_TICKER, + sizeof(context->ticker_sent)); + } + break; + case CURVE_POOL_EXCHANGE: + break; + case CURVE_POOL_EXCHANGE_UNDERLYING: + break; + case CURVE_ROUTER_EXCHANGE_MULTIPLE: + case UNISWAP_V3_ROUTER_EXACT_INPUT: + case UNISWAP_ROUTER_EXACT_INPUT_SINGLE: + if (memcmp(USDT_ADDRESS, context->contract_address_sent, + ADDRESS_LENGTH) == 0 || + memcmp(USDC_ADDRESS, context->contract_address_sent, + ADDRESS_LENGTH) == 0) { + context->decimals_sent = USDT_DECIMALS; + } + break; + case FLIPPER_BUY_OUSD_WITH_USDT: + strlcpy(context->ticker_sent, USDT_TICKER, sizeof(context->ticker_sent)); + context->decimals_sent = USDT_DECIMALS; + break; + case FLIPPER_BUY_OUSD_WITH_DAI: + strlcpy(context->ticker_sent, DAI_TICKER, sizeof(context->ticker_sent)); + context->decimals_sent = DAI_DECIMALS; + break; + case FLIPPER_BUY_OUSD_WITH_USDC: + strlcpy(context->ticker_sent, USDC_TICKER, sizeof(context->ticker_sent)); + context->decimals_sent = USDC_DECIMALS; + break; + case FLIPPER_SELL_OUSD_FOR_USDT: + case FLIPPER_SELL_OUSD_FOR_DAI: + case FLIPPER_SELL_OUSD_FOR_USDC: + strlcpy(context->ticker_sent, OUSD_TICKER, sizeof(context->ticker_sent)); + context->decimals_sent = OUSD_DECIMALS; + break; + case WRAP: + strlcpy(msg->title, "Wrap", msg->titleLength); + strlcpy(context->ticker_sent, is_woeth ? OETH_TICKER : OUSD_TICKER, + sizeof(context->ticker_sent)); + break; + case UNWRAP: + strlcpy(msg->title, "Unwrap", msg->titleLength); + strlcpy(context->ticker_sent, is_woeth ? OETH_TICKER : OUSD_TICKER, + sizeof(context->ticker_sent)); + break; + default: + PRINTF("Unhandled selector Index: %d\n", context->selectorIndex); + msg->result = ETH_PLUGIN_RESULT_ERROR; + return false; + } + + // Converts the uint256 number located in `eth_amount` to its string + // representation and copies this to `msg->msg`. + return amountToString(context->amount_sent, context->amount_length, + context->decimals_sent, context->ticker_sent, msg->msg, + msg->msgLength); } // Set UI for "Receive" screen. -// EDIT THIS: Adapt / remove this function to your needs. -static bool set_receive_ui(ethQueryContractUI_t *msg, const context_t *context) { - strlcpy(msg->title, "Receive Min.", msg->titleLength); - - uint8_t decimals = context->decimals; - const char *ticker = context->ticker; - - // If the token look up failed, use the default network ticker along with the default decimals. - if (!context->token_found) { - decimals = WEI_TO_ETHER; - ticker = msg->network_ticker; - } - - return amountToString(context->amount_received, - sizeof(context->amount_received), - decimals, - ticker, - msg->msg, - msg->msgLength); +static bool set_receive_ui(ethQueryContractUI_t *msg, context_t *context) { + strlcpy(context->ticker_received, + get_ticker_for_address(context->contract_address_received), + sizeof(context->ticker_received)); + + context->amount_length = INT256_LENGTH; + + strlcpy(msg->title, "Receive Min", msg->titleLength); + + bool is_oeth = + memcmp(OETH_VAULT_ADDRESS, msg->pluginSharedRO->txContent->destination, + ADDRESS_LENGTH) == 0; + + switch (context->selectorIndex) { + case ZAPPER_DEPOSIT_ETH: + memcpy(context->min_amount_received, + &msg->pluginSharedRO->txContent->value.value, + msg->pluginSharedRO->txContent->value.length); + context->amount_length = msg->pluginSharedRO->txContent->value.length; + strlcpy(context->ticker_received, OETH_TICKER, + sizeof(context->ticker_received)); + break; + case ZAPPER_DEPOSIT_SFRXETH: + strlcpy(context->ticker_received, OETH_TICKER, + sizeof(context->ticker_received)); + break; + case VAULT_MINT: + strlcpy(context->ticker_received, is_oeth ? OETH_TICKER : OUSD_TICKER, + sizeof(context->ticker_received)); + break; + case VAULT_REDEEM: + strlcpy(context->ticker_received, is_oeth ? "LST MIX" : "USD MIX", + sizeof(context->ticker_received)); + break; + case CURVE_POOL_EXCHANGE: + break; + case CURVE_POOL_EXCHANGE_UNDERLYING: + break; + case CURVE_ROUTER_EXCHANGE_MULTIPLE: + case UNISWAP_V3_ROUTER_EXACT_INPUT: + case UNISWAP_ROUTER_EXACT_INPUT_SINGLE: + if (memcmp(USDT_ADDRESS, context->contract_address_received, + ADDRESS_LENGTH) == 0 || + memcmp(USDC_ADDRESS, context->contract_address_received, + ADDRESS_LENGTH) == 0) { + context->decimals_received = USDT_DECIMALS; + } + break; + case FLIPPER_BUY_OUSD_WITH_USDT: + case FLIPPER_BUY_OUSD_WITH_DAI: + case FLIPPER_BUY_OUSD_WITH_USDC: + memcpy(context->min_amount_received, context->amount_sent, + sizeof(context->amount_sent)); + strlcpy(context->ticker_received, OUSD_TICKER, + sizeof(context->ticker_received)); + if (memcmp(USDT_ADDRESS, context->contract_address_received, + ADDRESS_LENGTH) == 0 || + memcmp(USDC_ADDRESS, context->contract_address_received, + ADDRESS_LENGTH) == 0) { + context->decimals_received = USDT_DECIMALS; + } else { + context->decimals_received = OUSD_DECIMALS; + } + break; + case FLIPPER_SELL_OUSD_FOR_USDT: + memcpy(context->min_amount_received, context->amount_sent, + sizeof(context->amount_sent)); + strlcpy(context->ticker_received, USDT_TICKER, + sizeof(context->ticker_received)); + context->decimals_received = OUSD_DECIMALS; + break; + case FLIPPER_SELL_OUSD_FOR_DAI: + memcpy(context->min_amount_received, context->amount_sent, + sizeof(context->amount_sent)); + strlcpy(context->ticker_received, DAI_TICKER, + sizeof(context->ticker_received)); + context->decimals_received = DAI_DECIMALS; + break; + case FLIPPER_SELL_OUSD_FOR_USDC: + memcpy(context->min_amount_received, context->amount_sent, + sizeof(context->amount_sent)); + strlcpy(context->ticker_received, USDC_TICKER, + sizeof(context->ticker_received)); + context->decimals_received = OUSD_DECIMALS; + break; + default: + PRINTF("Unhandled selector Index: %d\n", context->selectorIndex); + msg->result = ETH_PLUGIN_RESULT_ERROR; + return false; + } + + // Convert to string. + return amountToString(context->min_amount_received, context->amount_length, + context->decimals_received, context->ticker_received, + msg->msg, msg->msgLength); +} + +// Set UI for "Warning" screen. +static bool set_warning_ui(ethQueryContractUI_t *msg, + const context_t *context __attribute__((unused))) { + strlcpy(msg->title, "WARNING", msg->titleLength); + strlcpy(msg->msg, "Unknown token", msg->msgLength); + return true; } // Set UI for "Beneficiary" screen. -// EDIT THIS: Adapt / remove this function to your needs. static bool set_beneficiary_ui(ethQueryContractUI_t *msg, context_t *context) { - strlcpy(msg->title, "Beneficiary", msg->titleLength); - - // Prefix the address with `0x`. - msg->msg[0] = '0'; - msg->msg[1] = 'x'; - - // We need a random chainID for legacy reasons with `getEthAddressStringFromBinary`. - // Setting it to `0` will make it work with every chainID :) - uint64_t chainid = 0; - - // Get the string representation of the address stored in `context->beneficiary`. Put it in - // `msg->msg`. - return getEthAddressStringFromBinary( - context->beneficiary, - msg->msg + 2, // +2 here because we've already prefixed with '0x'. - msg->pluginSharedRW->sha3, - chainid); + strlcpy(msg->title, "Beneficiary", msg->titleLength); + + // Prefix the address with `0x`. + msg->msg[0] = '0'; + msg->msg[1] = 'x'; + + // We need a random chainID for legacy reasons with + // `getEthAddressStringFromBinary`. Setting it to `0` will make it work with + // every chainID :) + uint64_t chainid = 0; + + // Get the string representation of the address stored in + // `context->beneficiary`. Put it in `msg->msg`. + return getEthAddressStringFromBinary( + context->beneficiary, + msg->msg + 2, // +2 here because we've already prefixed with '0x'. + msg->pluginSharedRW->sha3, chainid); +} + +// Helper function that returns the enum corresponding to the screen that should +// be displayed. +static screens_t get_screen(const ethQueryContractUI_t *msg, + const context_t *context) { + uint8_t index = msg->screenIndex; + + bool token_sent_found = context->tokens_found & TOKEN_SENT_FOUND; + bool token_received_found = context->tokens_found & TOKEN_RECEIVED_FOUND; + + bool both_tokens_found = token_received_found && token_sent_found; + bool both_tokens_not_found = !token_received_found && !token_sent_found; + + bool wrap = + context->selectorIndex == WRAP || context->selectorIndex == UNWRAP; + + switch (index) { + case 0: + if (both_tokens_found) { + return SEND_SCREEN; + } else if (both_tokens_not_found) { + return WARN_SCREEN; + } else if (token_sent_found) { + return SEND_SCREEN; + } else if (token_received_found) { + return WARN_SCREEN; + } + break; + case 1: + if (wrap) { + return BENEFICIARY_SCREEN; + } else if (both_tokens_found) { + return RECEIVE_SCREEN; + } else if (both_tokens_not_found) { + return SEND_SCREEN; + } else if (token_sent_found) { + return WARN_SCREEN; + } else if (token_received_found) { + return SEND_SCREEN; + } + break; + case 2: + if (both_tokens_found) { + return BENEFICIARY_SCREEN; + } else if (both_tokens_not_found) { + return WARN_SCREEN; + } else { + return RECEIVE_SCREEN; + } + break; + case 3: + if (both_tokens_found) { + return ERROR; + } else if (both_tokens_not_found) { + return RECEIVE_SCREEN; + } else { + return BENEFICIARY_SCREEN; + } + break; + case 4: + if (both_tokens_found) { + return ERROR; + } else if (both_tokens_not_found) { + return BENEFICIARY_SCREEN; + } + break; + default: + return ERROR; + break; + } + return ERROR; } void handle_query_contract_ui(ethQueryContractUI_t *msg) { - context_t *context = (context_t *) msg->pluginContext; - bool ret = false; - - // msg->title is the upper line displayed on the device. - // msg->msg is the lower line displayed on the device. - - // Clean the display fields. - memset(msg->title, 0, msg->titleLength); - memset(msg->msg, 0, msg->msgLength); - - // EDIT THIS: Adapt the cases for the screens you'd like to display. - switch (msg->screenIndex) { - case 0: - ret = set_send_ui(msg); - break; - case 1: - ret = set_receive_ui(msg, context); - break; - case 2: - ret = set_beneficiary_ui(msg, context); - break; - // Keep this - default: - PRINTF("Received an invalid screenIndex\n"); - } - msg->result = ret ? ETH_PLUGIN_RESULT_OK : ETH_PLUGIN_RESULT_ERROR; + context_t *context = (context_t *)msg->pluginContext; + bool ret = false; + + // msg->title is the upper line displayed on the device. + // msg->msg is the lower line displayed on the device. + + // Clean the display fields. + memset(msg->title, 0, msg->titleLength); + memset(msg->msg, 0, msg->msgLength); + + screens_t screen = get_screen(msg, context); + + switch (screen) { + case SEND_SCREEN: + ret = set_send_ui(msg, context); + break; + case RECEIVE_SCREEN: + ret = set_receive_ui(msg, context); + break; + case WARN_SCREEN: + ret = set_warning_ui(msg, context); + break; + case BENEFICIARY_SCREEN: + ret = set_beneficiary_ui(msg, context); + break; + + // Keep this + default: + PRINTF("Received an invalid screenIndex\n"); + } + + msg->result = ret ? ETH_PLUGIN_RESULT_OK : ETH_PLUGIN_RESULT_ERROR; } diff --git a/src/plugin.c b/src/plugin.c index cad5461a..b563c357 100644 --- a/src/plugin.c +++ b/src/plugin.c @@ -1,5 +1,5 @@ /******************************************************************************* - * Plugin Boilerplate + * Origin Plugin * (c) 2023 Ledger * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,9 +15,70 @@ * limitations under the License. ********************************************************************************/ -#include #include "plugin.h" -// This array will be automatically expanded to map all selector_t names with the correct value. -// Do not modify ! +#include + +// This array will be automatically expanded to map all selector_t names with +// the correct value. Do not modify ! const uint32_t SELECTORS[SELECTOR_COUNT] = {SELECTORS_LIST(TO_VALUE)}; + +const uint8_t NULL_ETH_ADDRESS[ADDRESS_LENGTH] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + +const uint8_t OETH_ADDRESS[ADDRESS_LENGTH] = { + 0x85, 0x6c, 0x4e, 0xfb, 0x76, 0xc1, 0xd1, 0xae, 0x02, 0xe2, + 0x0c, 0xeb, 0x03, 0xa2, 0xa6, 0xa0, 0x8b, 0x0b, 0x8d, 0xc3}; + +const uint8_t WETH_ADDRESS[ADDRESS_LENGTH] = { + 0xc0, 0x2a, 0xaa, 0x39, 0xb2, 0x23, 0xfe, 0x8d, 0x0a, 0x0e, + 0x5c, 0x4f, 0x27, 0xea, 0xd9, 0x08, 0x3c, 0x75, 0x6c, 0xc2}; + +const uint8_t FRXETH_ADDRESS[ADDRESS_LENGTH] = { + 0x5e, 0x84, 0x22, 0x34, 0x52, 0x38, 0xf3, 0x42, 0x75, 0x88, + 0x80, 0x49, 0x02, 0x18, 0x21, 0xe8, 0xe0, 0x8c, 0xaa, 0x1f}; + +const uint8_t RETH_ADDRESS[ADDRESS_LENGTH] = { + 0xae, 0x78, 0x73, 0x6c, 0xd6, 0x15, 0xf3, 0x74, 0xd3, 0x08, + 0x51, 0x23, 0xa2, 0x10, 0x44, 0x8e, 0x74, 0xfc, 0x63, 0x93}; + +const uint8_t STETH_ADDRESS[ADDRESS_LENGTH] = { + 0xae, 0x7a, 0xb9, 0x65, 0x20, 0xde, 0x3a, 0x18, 0xe5, 0xe1, + 0x11, 0xb5, 0xea, 0xab, 0x09, 0x53, 0x12, 0xd7, 0xfe, 0x84}; + +const uint8_t OUSD_ADDRESS[ADDRESS_LENGTH] = { + 0x2a, 0x8e, 0x1e, 0x67, 0x6e, 0xc2, 0x38, 0xd8, 0xa9, 0x92, + 0x30, 0x7b, 0x49, 0x5b, 0x45, 0xb3, 0xfe, 0xaa, 0x5e, 0x86}; + +const uint8_t DAI_ADDRESS[ADDRESS_LENGTH] = { + 0x6b, 0x17, 0x54, 0x74, 0xe8, 0x90, 0x94, 0xc4, 0x4d, 0xa9, + 0x8b, 0x95, 0x4e, 0xed, 0xea, 0xc4, 0x95, 0x27, 0x1d, 0x0f}; + +const uint8_t USDC_ADDRESS[ADDRESS_LENGTH] = { + 0xa0, 0xb8, 0x69, 0x91, 0xc6, 0x21, 0x8b, 0x36, 0xc1, 0xd1, + 0x9d, 0x4a, 0x2e, 0x9e, 0xb0, 0xce, 0x36, 0x06, 0xeb, 0x48}; + +const uint8_t USDT_ADDRESS[ADDRESS_LENGTH] = { + 0xda, 0xc1, 0x7f, 0x95, 0x8d, 0x2e, 0xe5, 0x23, 0xa2, 0x20, + 0x62, 0x06, 0x99, 0x45, 0x97, 0xc1, 0x3d, 0x83, 0x1e, 0xc7}; + +const uint8_t OETH_VAULT_ADDRESS[ADDRESS_LENGTH] = { + 0x39, 0x25, 0x40, 0x33, 0x94, 0x5a, 0xa2, 0xe4, 0x80, 0x9c, + 0xc2, 0x97, 0x7e, 0x70, 0x87, 0xbe, 0xe4, 0x8b, 0xd7, 0xab}; + +const uint8_t WOETH_ADDRESS[ADDRESS_LENGTH] = { + 0xdc, 0xee, 0x70, 0x65, 0x42, 0x61, 0xaf, 0x21, 0xc4, 0x4c, + 0x09, 0x3c, 0x30, 0x0e, 0xd3, 0xbb, 0x97, 0xb7, 0x81, 0x92}; + +const uint8_t CURVE_OETH_POOL_ADDRESS[ADDRESS_LENGTH] = { + 0x94, 0xb1, 0x74, 0x76, 0xa9, 0x3b, 0x32, 0x62, 0xd8, 0x7b, + 0x9a, 0x32, 0x69, 0x65, 0xd1, 0xe9, 0x1f, 0x9c, 0x13, 0xe7}; + +const uint8_t CURVE_OUSD_POOL_ADDRESS[ADDRESS_LENGTH] = { + 0x87, 0x65, 0x0d, 0x7b, 0xbf, 0xc3, 0xa9, 0xf1, 0x05, 0x87, + 0xd7, 0x77, 0x82, 0x06, 0x67, 0x17, 0x19, 0xd9, 0x91, 0x0d}; + +const uint8_t CURVE_POOL_ETH_ADDRESS[ADDRESS_LENGTH] = { + 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, + 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee}; \ No newline at end of file diff --git a/src/plugin.h b/src/plugin.h index 53449dbc..ebc5f071 100644 --- a/src/plugin.h +++ b/src/plugin.h @@ -1,5 +1,5 @@ /******************************************************************************* - * Plugin Boilerplate + * Origin Plugin * (c) 2023 Ledger * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -18,67 +18,326 @@ #pragma once #include + #include "eth_internals.h" #include "eth_plugin_interface.h" // All possible selectors of your plugin. -// EDIT THIS: Enter your selectors here, in the format X(NAME, value) // A Xmacro below will create for you: // - an enum named selector_t with every NAME // - a map named SELECTORS associating each NAME with it's value -#define SELECTORS_LIST(X) \ - X(SWAP_EXACT_ETH_FOR_TOKENS, 0x7ff36ab5) \ - X(BOILERPLATE_DUMMY_2, 0x13374242) +#define SELECTORS_LIST(X) \ + /* ### VAULT */ \ + /* mint(address,uint256,uint256) */ \ + X(VAULT_MINT, 0x156e29f6) \ + /* redeem(uint256,uint256) */ \ + X(VAULT_REDEEM, 0x7cbc2373) \ + /* ### CURVE */ \ + /* exchange(int128,int128,uint256,uint256) */ \ + X(CURVE_POOL_EXCHANGE, 0x3df02124) \ + /* exchange_underlying(int128,int128,uint256,uint256) */ \ + X(CURVE_POOL_EXCHANGE_UNDERLYING, 0xa6417ed6) \ + /* exchange_multiple(address[9],uint256[3],uint256,uint256) */ \ + X(CURVE_ROUTER_EXCHANGE_MULTIPLE, 0x353ca424) \ + /* ### UNISWAP */ \ + /* exactInput(ExactInputParams params) */ \ + X(UNISWAP_V3_ROUTER_EXACT_INPUT, 0xc04b8d59) \ + /* exactInputSingle(ExactInputSingleParams params) */ \ + X(UNISWAP_ROUTER_EXACT_INPUT_SINGLE, 0x414bf389) \ + /* ### ZAPPER */ \ + /* deposit() */ \ + X(ZAPPER_DEPOSIT_ETH, 0xd0e30db0) \ + /* depositSFRXETH(uint256,uint256) */ \ + X(ZAPPER_DEPOSIT_SFRXETH, 0xd443e97d) \ + /* ### FLIPPER */ \ + /* buyOusdWithUsdt(uint256) */ \ + X(FLIPPER_BUY_OUSD_WITH_USDT, 0x35aa0b96) \ + /* sellOusdForUsdt(uint256) */ \ + X(FLIPPER_SELL_OUSD_FOR_USDT, 0xcb939053) \ + /* buyOusdWithDai(uint256) */ \ + X(FLIPPER_BUY_OUSD_WITH_DAI, 0x5981c746) \ + /* sellOusdForDai(uint256) */ \ + X(FLIPPER_SELL_OUSD_FOR_DAI, 0x8a095a0f) \ + /* buyOusdWithUsdc(uint256) */ \ + X(FLIPPER_BUY_OUSD_WITH_USDC, 0xbfc11ffd) \ + /* sellOusdForUsdc(uint256) */ \ + X(FLIPPER_SELL_OUSD_FOR_USDC, 0xc6b68169) \ + /* ### 4626 VAULT */ \ + /* deposit(uint256,address) */ \ + X(WRAP, 0x6e553f65) \ + /* redeem(uint256,address,address) */ \ + X(UNWRAP, 0xba087652) // Xmacro helpers to define the enum and map // Do not modify ! -#define TO_ENUM(selector_name, selector_id) selector_name, +#define TO_ENUM(selector_name, selector_id) selector_name, #define TO_VALUE(selector_name, selector_id) selector_id, // This enum will be automatically expanded to hold all selector names. // The value SELECTOR_COUNT can be used to get the number of defined selectors // Do not modify ! typedef enum selector_e { - SELECTORS_LIST(TO_ENUM) SELECTOR_COUNT, + SELECTORS_LIST(TO_ENUM) SELECTOR_COUNT, } selector_t; -// This array will be automatically expanded to map all selector_t names with the correct value. -// Do not modify ! +// This array will be automatically expanded to map all selector_t names with +// the correct value. Do not modify ! extern const uint32_t SELECTORS[SELECTOR_COUNT]; // Enumeration used to parse the smart contract data. -// EDIT THIS: Adapt the parameter names here. typedef enum { - MIN_AMOUNT_RECEIVED = 0, - TOKEN_RECEIVED, - BENEFICIARY, - PATH_OFFSET, - PATH_LENGTH, - UNEXPECTED_PARAMETER, + TOKEN_SENT, + TOKEN_RECEIVED, + TOKEN_RECEIVED_REST, + AMOUNT_SENT, + MIN_AMOUNT_RECEIVED, + BENEFICIARY, + PATH_LENGTH, + UNEXPECTED_PARAMETER, + NONE, } parameter; // Shared global memory with Ethereum app. Must be at most 5 * 32 bytes. -// EDIT THIS: This struct is used by your plugin to save the parameters you parse. You -// will need to adapt this struct to your plugin. +// parse. You will need to adapt this struct to your plugin. typedef struct context_s { - // For display. - uint8_t amount_received[INT256_LENGTH]; - uint8_t beneficiary[ADDRESS_LENGTH]; - uint8_t token_received[ADDRESS_LENGTH]; - char ticker[MAX_TICKER_LEN]; - uint8_t decimals; - uint8_t token_found; - - // For parsing data. - uint8_t next_param; // Set to be the next param we expect to parse. - uint16_t offset; // Offset at which the array or struct starts. - bool go_to_offset; // If set, will force the parsing to iterate through parameters until - // `offset` is reached. - - // For both parsing and display. - selector_t selectorIndex; + // For display. + + uint8_t amount_sent[INT256_LENGTH]; + uint8_t min_amount_received[INT256_LENGTH]; + uint8_t contract_address_sent[ADDRESS_LENGTH]; + uint8_t contract_address_received[ADDRESS_LENGTH]; + uint8_t beneficiary[ADDRESS_LENGTH]; + char ticker_sent[MAX_TICKER_LEN]; + char ticker_received[MAX_TICKER_LEN]; + + uint8_t tokens_found; + uint8_t decimals_sent; + uint8_t decimals_received; + uint8_t skip; + + bool valid; + uint8_t amount_length; + + // For parsing data. + uint8_t next_param; // Set to be the next param we expect to parse. + uint8_t counter; + uint16_t offset; // Offset at which the array or struct starts. + + // For both parsing and display. + selector_t selectorIndex; } context_t; -// Check if the context structure will fit in the RAM section ETH will prepare for us -// Do not remove! +typedef enum { + SEND_SCREEN, + RECEIVE_SCREEN, + WARN_SCREEN, + BENEFICIARY_SCREEN, + ERROR, +} screens_t; + +#define TOKEN_SENT_FOUND 1 +#define TOKEN_RECEIVED_FOUND 1 << 1 + +// Number of decimals used when the token wasn't found in the CAL. +#define DEFAULT_DECIMAL WEI_TO_ETHER + +// Ticker used when the token wasn't found in the CAL. +#define DEFAULT_TICKER "" + +#define ETH_TICKER "ETH" + +#define OETH_TICKER "OETH" +#define OETH_DECIMALS WEI_TO_ETHER + +#define WETH_TICKER "WETH" +#define WETH_DECIMALS WEI_TO_ETHER + +#define STETH_TICKER "STETH" +#define STETH_DECIMALS WEI_TO_ETHER + +#define RETH_TICKER "RETH" +#define RETH_DECIMALS WEI_TO_ETHER + +#define FRXETH_TICKER "FRXETH" +#define FRXETH_DECIMALS WEI_TO_ETHER + +#define OUSD_TICKER "OUSD" +#define OUSD_DECIMALS WEI_TO_ETHER + +#define DAI_TICKER "DAI" +#define DAI_DECIMALS WEI_TO_ETHER + +#define USDC_TICKER "USDC" +#define USDC_DECIMALS 6 + +#define USDT_TICKER "USDT" +#define USDT_DECIMALS 6 + +#define WOETH_TICKER "WOETH" +#define WOUSD_TICKER "WOUSD" + +#define SFRXETH_TICKER "sfrxETH" + +extern const uint8_t NULL_ETH_ADDRESS[ADDRESS_LENGTH]; +extern const uint8_t WETH_ADDRESS[ADDRESS_LENGTH]; +extern const uint8_t FRXETH_ADDRESS[ADDRESS_LENGTH]; +extern const uint8_t RETH_ADDRESS[ADDRESS_LENGTH]; +extern const uint8_t STETH_ADDRESS[ADDRESS_LENGTH]; +extern const uint8_t OETH_ADDRESS[ADDRESS_LENGTH]; +extern const uint8_t OUSD_ADDRESS[ADDRESS_LENGTH]; +extern const uint8_t DAI_ADDRESS[ADDRESS_LENGTH]; +extern const uint8_t USDC_ADDRESS[ADDRESS_LENGTH]; +extern const uint8_t USDT_ADDRESS[ADDRESS_LENGTH]; +extern const uint8_t CURVE_POOL_ETH_ADDRESS[ADDRESS_LENGTH]; + +extern const uint8_t OETH_VAULT_ADDRESS[ADDRESS_LENGTH]; +extern const uint8_t CURVE_OETH_POOL_ADDRESS[ADDRESS_LENGTH]; +extern const uint8_t CURVE_OUSD_POOL_ADDRESS[ADDRESS_LENGTH]; +extern const uint8_t WOETH_ADDRESS[ADDRESS_LENGTH]; + +#define ADDRESS_IS_NETWORK_TOKEN(_addr) \ + (!memcmp(_addr, NULL_ETH_ADDRESS, ADDRESS_LENGTH) || \ + !memcmp(_addr, CURVE_POOL_ETH_ADDRESS, ADDRESS_LENGTH)) +#define ADDRESS_IS_OETH(_addr) (!memcmp(_addr, OETH_ADDRESS, ADDRESS_LENGTH)) +#define ADDRESS_IS_WETH(_addr) (!memcmp(_addr, WETH_ADDRESS, ADDRESS_LENGTH)) +#define ADDRESS_IS_STETH(_addr) (!memcmp(_addr, STETH_ADDRESS, ADDRESS_LENGTH)) +#define ADDRESS_IS_RETH(_addr) (!memcmp(_addr, RETH_ADDRESS, ADDRESS_LENGTH)) +#define ADDRESS_IS_FRXETH(_addr) \ + (!memcmp(_addr, FRXETH_ADDRESS, ADDRESS_LENGTH)) +#define ADDRESS_IS_OUSD(_addr) (!memcmp(_addr, OUSD_ADDRESS, ADDRESS_LENGTH)) +#define ADDRESS_IS_DAI(_addr) (!memcmp(_addr, DAI_ADDRESS, ADDRESS_LENGTH)) +#define ADDRESS_IS_USDC(_addr) (!memcmp(_addr, USDC_ADDRESS, ADDRESS_LENGTH)) +#define ADDRESS_IS_USDT(_addr) (!memcmp(_addr, USDT_ADDRESS, ADDRESS_LENGTH)) + +// Check if the context structure will fit in the RAM section ETH will prepare +// for us Do not remove! ASSERT_SIZEOF_PLUGIN_CONTEXT(context_t); + +void handle_provide_parameter(ethPluginProvideParameter_t *msg); +void handle_query_contract_ui(ethQueryContractUI_t *msg); +void handle_init_contract(ethPluginInitContract_t *msg); +void handle_finalize(ethPluginFinalize_t *msg); +void handle_provide_token(ethPluginProvideInfo_t *msg); +void handle_query_contract_id(ethQueryContractID_t *msg); + +static inline bool check_token_sent(context_t *context) { + if (ADDRESS_IS_OETH(context->contract_address_sent)) { + context->decimals_sent = OETH_DECIMALS; + context->tokens_found |= TOKEN_SENT_FOUND; + } else if (ADDRESS_IS_NETWORK_TOKEN(context->contract_address_sent)) { + context->decimals_sent = DEFAULT_DECIMAL; + context->tokens_found |= TOKEN_SENT_FOUND; + } else if (ADDRESS_IS_WETH(context->contract_address_sent)) { + context->decimals_sent = WETH_DECIMALS; + context->tokens_found |= TOKEN_SENT_FOUND; + } else if (ADDRESS_IS_RETH(context->contract_address_sent)) { + context->decimals_sent = RETH_DECIMALS; + context->tokens_found |= TOKEN_SENT_FOUND; + } else if (ADDRESS_IS_STETH(context->contract_address_sent)) { + context->decimals_sent = STETH_DECIMALS; + context->tokens_found |= TOKEN_SENT_FOUND; + } else if (ADDRESS_IS_FRXETH(context->contract_address_sent)) { + context->decimals_sent = FRXETH_DECIMALS; + context->tokens_found |= TOKEN_SENT_FOUND; + } else if (ADDRESS_IS_OUSD(context->contract_address_sent)) { + context->decimals_sent = OUSD_DECIMALS; + context->tokens_found |= TOKEN_SENT_FOUND; + } else if (ADDRESS_IS_DAI(context->contract_address_sent)) { + context->decimals_sent = DAI_DECIMALS; + context->tokens_found |= TOKEN_SENT_FOUND; + } else if (ADDRESS_IS_USDC(context->contract_address_sent)) { + context->decimals_sent = USDC_DECIMALS; + context->tokens_found |= TOKEN_SENT_FOUND; + } else if (ADDRESS_IS_USDT(context->contract_address_sent)) { + context->decimals_sent = USDT_DECIMALS; + context->tokens_found |= TOKEN_SENT_FOUND; + } else { + return false; + } + return true; +} + +static inline bool check_token_received(context_t *context) { + if (ADDRESS_IS_OETH(context->contract_address_received)) { + context->decimals_received = OETH_DECIMALS; + context->tokens_found |= TOKEN_RECEIVED_FOUND; + } else if (ADDRESS_IS_NETWORK_TOKEN(context->contract_address_received)) { + context->decimals_sent = DEFAULT_DECIMAL; + context->tokens_found |= TOKEN_RECEIVED_FOUND; + } else if (ADDRESS_IS_WETH(context->contract_address_received)) { + context->decimals_received = WETH_DECIMALS; + context->tokens_found |= TOKEN_RECEIVED_FOUND; + } else if (ADDRESS_IS_RETH(context->contract_address_received)) { + context->decimals_received = RETH_DECIMALS; + context->tokens_found |= TOKEN_RECEIVED_FOUND; + } else if (ADDRESS_IS_STETH(context->contract_address_received)) { + context->decimals_received = STETH_DECIMALS; + context->tokens_found |= TOKEN_RECEIVED_FOUND; + } else if (ADDRESS_IS_FRXETH(context->contract_address_received)) { + context->decimals_received = FRXETH_DECIMALS; + context->tokens_found |= TOKEN_RECEIVED_FOUND; + } else if (ADDRESS_IS_OUSD(context->contract_address_received)) { + context->decimals_received = OUSD_DECIMALS; + context->tokens_found |= TOKEN_RECEIVED_FOUND; + } else if (ADDRESS_IS_DAI(context->contract_address_received)) { + context->decimals_received = DAI_DECIMALS; + context->tokens_found |= TOKEN_RECEIVED_FOUND; + } else if (ADDRESS_IS_USDC(context->contract_address_received)) { + context->decimals_received = USDC_DECIMALS; + context->tokens_found |= TOKEN_RECEIVED_FOUND; + } else if (ADDRESS_IS_USDT(context->contract_address_received)) { + context->decimals_received = USDT_DECIMALS; + context->tokens_found |= TOKEN_RECEIVED_FOUND; + } else { + return false; + } + return true; +} + +static inline void sent_network_token(context_t *context) { + context->decimals_sent = WEI_TO_ETHER; + context->tokens_found |= TOKEN_SENT_FOUND; +} + +static inline void received_network_token(context_t *context) { + context->decimals_received = WEI_TO_ETHER; + context->tokens_found |= TOKEN_RECEIVED_FOUND; +} + +static inline void printf_hex_array(const char *title __attribute__((unused)), + size_t len __attribute__((unused)), + const uint8_t *data + __attribute__((unused))) { + PRINTF(title); + for (size_t i = 0; i < len; ++i) { + PRINTF("%02x", data[i]); + }; + PRINTF("\n"); +} + +static inline const char *get_ticker_for_address( + uint8_t address[ADDRESS_LENGTH]) { + if (ADDRESS_IS_NETWORK_TOKEN(address)) { + return ETH_TICKER; + } else if (ADDRESS_IS_OETH(address)) { + return OETH_TICKER; + } else if (ADDRESS_IS_WETH(address)) { + return WETH_TICKER; + } else if (ADDRESS_IS_FRXETH(address)) { + return FRXETH_TICKER; + } else if (ADDRESS_IS_RETH(address)) { + return RETH_TICKER; + } else if (ADDRESS_IS_STETH(address)) { + return STETH_TICKER; + } else if (ADDRESS_IS_OUSD(address)) { + return OUSD_TICKER; + } else if (ADDRESS_IS_DAI(address)) { + return DAI_TICKER; + } else if (ADDRESS_IS_USDC(address)) { + return USDC_TICKER; + } else if (ADDRESS_IS_USDT(address)) { + return USDT_TICKER; + } else { + return DEFAULT_TICKER; + } +} \ No newline at end of file diff --git a/tests/.DS_Store b/tests/.DS_Store new file mode 100644 index 00000000..6665f0d9 Binary files /dev/null and b/tests/.DS_Store differ diff --git a/tests/abis/0x000102030405060708090a0b0c0d0e0f10111213.abi.json b/tests/abis/0x000102030405060708090a0b0c0d0e0f10111213.abi.json deleted file mode 100644 index cb199761..00000000 --- a/tests/abis/0x000102030405060708090a0b0c0d0e0f10111213.abi.json +++ /dev/null @@ -1,36 +0,0 @@ -[ - { - "inputs" : [ - { - "internalType" : "uint256", - "name" : "amountOutMin", - "type" : "uint256" - }, - { - "internalType" : "address[]", - "name" : "path", - "type" : "address[]" - }, - { - "internalType" : "address", - "name" : "to", - "type" : "address" - }, - { - "internalType" : "uint256", - "name" : "deadline", - "type" : "uint256" - } - ], - "name" : "swapExactETHForTokens", - "outputs" : [ - { - "internalType" : "uint256[]", - "name" : "amounts", - "type" : "uint256[]" - } - ], - "stateMutability" : "payable", - "type" : "function" - } -] diff --git a/tests/abis/4626-vault.abi.json b/tests/abis/4626-vault.abi.json new file mode 100644 index 00000000..380892da --- /dev/null +++ b/tests/abis/4626-vault.abi.json @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"contract ERC20","name":"underlying_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernor","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernor","type":"address"}],"name":"GovernorshipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernor","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernor","type":"address"}],"name":"PendingGovernorshipTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"governor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isGovernor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newGovernor","type":"address"}],"name":"transferGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"asset_","type":"address"},{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"transferToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/tests/abis/curve-pool.abi.json b/tests/abis/curve-pool.abi.json new file mode 100644 index 00000000..0a7b4834 --- /dev/null +++ b/tests/abis/curve-pool.abi.json @@ -0,0 +1 @@ +[{"name":"Transfer","inputs":[{"name":"sender","type":"address","indexed":true},{"name":"receiver","type":"address","indexed":true},{"name":"value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true},{"name":"spender","type":"address","indexed":true},{"name":"value","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"TokenExchange","inputs":[{"name":"buyer","type":"address","indexed":true},{"name":"sold_id","type":"int128","indexed":false},{"name":"tokens_sold","type":"uint256","indexed":false},{"name":"bought_id","type":"int128","indexed":false},{"name":"tokens_bought","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"AddLiquidity","inputs":[{"name":"provider","type":"address","indexed":true},{"name":"token_amounts","type":"uint256[2]","indexed":false},{"name":"fees","type":"uint256[2]","indexed":false},{"name":"invariant","type":"uint256","indexed":false},{"name":"token_supply","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"RemoveLiquidity","inputs":[{"name":"provider","type":"address","indexed":true},{"name":"token_amounts","type":"uint256[2]","indexed":false},{"name":"fees","type":"uint256[2]","indexed":false},{"name":"token_supply","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"RemoveLiquidityOne","inputs":[{"name":"provider","type":"address","indexed":true},{"name":"token_amount","type":"uint256","indexed":false},{"name":"coin_amount","type":"uint256","indexed":false},{"name":"token_supply","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"RemoveLiquidityImbalance","inputs":[{"name":"provider","type":"address","indexed":true},{"name":"token_amounts","type":"uint256[2]","indexed":false},{"name":"fees","type":"uint256[2]","indexed":false},{"name":"invariant","type":"uint256","indexed":false},{"name":"token_supply","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"RampA","inputs":[{"name":"old_A","type":"uint256","indexed":false},{"name":"new_A","type":"uint256","indexed":false},{"name":"initial_time","type":"uint256","indexed":false},{"name":"future_time","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"StopRampA","inputs":[{"name":"A","type":"uint256","indexed":false},{"name":"t","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"CommitNewFee","inputs":[{"name":"new_fee","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"ApplyNewFee","inputs":[{"name":"fee","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"initialize","inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_coins","type":"address[4]"},{"name":"_rate_multipliers","type":"uint256[4]"},{"name":"_A","type":"uint256"},{"name":"_fee","type":"uint256"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"transfer","inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"transferFrom","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"approve","inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"permit","inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_deadline","type":"uint256"},{"name":"_v","type":"uint8"},{"name":"_r","type":"bytes32"},{"name":"_s","type":"bytes32"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"last_price","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"ema_price","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_balances","inputs":[],"outputs":[{"name":"","type":"uint256[2]"}]},{"stateMutability":"view","type":"function","name":"admin_fee","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"A","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"A_precise","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_p","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"price_oracle","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_virtual_price","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"calc_token_amount","inputs":[{"name":"_amounts","type":"uint256[2]"},{"name":"_is_deposit","type":"bool"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"add_liquidity","inputs":[{"name":"_amounts","type":"uint256[2]"},{"name":"_min_mint_amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"add_liquidity","inputs":[{"name":"_amounts","type":"uint256[2]"},{"name":"_min_mint_amount","type":"uint256"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_dy","inputs":[{"name":"i","type":"int128"},{"name":"j","type":"int128"},{"name":"dx","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"exchange","inputs":[{"name":"i","type":"int128"},{"name":"j","type":"int128"},{"name":"_dx","type":"uint256"},{"name":"_min_dy","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"exchange","inputs":[{"name":"i","type":"int128"},{"name":"j","type":"int128"},{"name":"_dx","type":"uint256"},{"name":"_min_dy","type":"uint256"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity","inputs":[{"name":"_burn_amount","type":"uint256"},{"name":"_min_amounts","type":"uint256[2]"}],"outputs":[{"name":"","type":"uint256[2]"}]},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity","inputs":[{"name":"_burn_amount","type":"uint256"},{"name":"_min_amounts","type":"uint256[2]"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256[2]"}]},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity_imbalance","inputs":[{"name":"_amounts","type":"uint256[2]"},{"name":"_max_burn_amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity_imbalance","inputs":[{"name":"_amounts","type":"uint256[2]"},{"name":"_max_burn_amount","type":"uint256"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"calc_withdraw_one_coin","inputs":[{"name":"_burn_amount","type":"uint256"},{"name":"i","type":"int128"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity_one_coin","inputs":[{"name":"_burn_amount","type":"uint256"},{"name":"i","type":"int128"},{"name":"_min_received","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"remove_liquidity_one_coin","inputs":[{"name":"_burn_amount","type":"uint256"},{"name":"i","type":"int128"},{"name":"_min_received","type":"uint256"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"ramp_A","inputs":[{"name":"_future_A","type":"uint256"},{"name":"_future_time","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"stop_ramp_A","inputs":[],"outputs":[]},{"stateMutability":"view","type":"function","name":"admin_balances","inputs":[{"name":"i","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"withdraw_admin_fees","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"commit_new_fee","inputs":[{"name":"_new_fee","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"apply_new_fee","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_ma_exp_time","inputs":[{"name":"_ma_exp_time","type":"uint256"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"coins","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"balances","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"fee","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"future_fee","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"admin_action_deadline","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"initial_A","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"future_A","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"initial_A_time","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"future_A_time","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string"}]},{"stateMutability":"view","type":"function","name":"balanceOf","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"allowance","inputs":[{"name":"arg0","type":"address"},{"name":"arg1","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32"}]},{"stateMutability":"view","type":"function","name":"nonces","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"ma_exp_time","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"ma_last_time","inputs":[],"outputs":[{"name":"","type":"uint256"}]}] \ No newline at end of file diff --git a/tests/abis/curve-router.abi.json b/tests/abis/curve-router.abi.json new file mode 100644 index 00000000..9f08d194 --- /dev/null +++ b/tests/abis/curve-router.abi.json @@ -0,0 +1 @@ +[{"name":"TokenExchange","inputs":[{"name":"buyer","type":"address","indexed":true},{"name":"receiver","type":"address","indexed":true},{"name":"pool","type":"address","indexed":true},{"name":"token_sold","type":"address","indexed":false},{"name":"token_bought","type":"address","indexed":false},{"name":"amount_sold","type":"uint256","indexed":false},{"name":"amount_bought","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"ExchangeMultiple","inputs":[{"name":"buyer","type":"address","indexed":true},{"name":"receiver","type":"address","indexed":true},{"name":"route","type":"address[9]","indexed":false},{"name":"swap_params","type":"uint256[3][4]","indexed":false},{"name":"pools","type":"address[4]","indexed":false},{"name":"amount_sold","type":"uint256","indexed":false},{"name":"amount_bought","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_address_provider","type":"address"},{"name":"_calculator","type":"address"},{"name":"_weth","type":"address"}],"outputs":[]},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"function","name":"exchange_with_best_rate","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_expected","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"exchange_with_best_rate","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_expected","type":"uint256"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"exchange","inputs":[{"name":"_pool","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_expected","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"exchange","inputs":[{"name":"_pool","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_expected","type":"uint256"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"exchange_multiple","inputs":[{"name":"_route","type":"address[9]"},{"name":"_swap_params","type":"uint256[3][4]"},{"name":"_amount","type":"uint256"},{"name":"_expected","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"exchange_multiple","inputs":[{"name":"_route","type":"address[9]"},{"name":"_swap_params","type":"uint256[3][4]"},{"name":"_amount","type":"uint256"},{"name":"_expected","type":"uint256"},{"name":"_pools","type":"address[4]"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"exchange_multiple","inputs":[{"name":"_route","type":"address[9]"},{"name":"_swap_params","type":"uint256[3][4]"},{"name":"_amount","type":"uint256"},{"name":"_expected","type":"uint256"},{"name":"_pools","type":"address[4]"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_best_rate","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_best_rate","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_exclude_pools","type":"address[8]"}],"outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_exchange_amount","inputs":[{"name":"_pool","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_input_amount","inputs":[{"name":"_pool","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_exchange_amounts","inputs":[{"name":"_pool","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amounts","type":"uint256[100]"}],"outputs":[{"name":"","type":"uint256[100]"}]},{"stateMutability":"view","type":"function","name":"get_exchange_multiple_amount","inputs":[{"name":"_route","type":"address[9]"},{"name":"_swap_params","type":"uint256[3][4]"},{"name":"_amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_exchange_multiple_amount","inputs":[{"name":"_route","type":"address[9]"},{"name":"_swap_params","type":"uint256[3][4]"},{"name":"_amount","type":"uint256"},{"name":"_pools","type":"address[4]"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_calculator","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"nonpayable","type":"function","name":"update_registry_address","inputs":[],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"set_calculator","inputs":[{"name":"_pool","type":"address"},{"name":"_calculator","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"set_default_calculator","inputs":[{"name":"_calculator","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"claim_balance","inputs":[{"name":"_token","type":"address"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"nonpayable","type":"function","name":"set_killed","inputs":[{"name":"_is_killed","type":"bool"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"registry","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"factory_registry","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"crypto_registry","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"default_calculator","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"is_killed","inputs":[],"outputs":[{"name":"","type":"bool"}]}] \ No newline at end of file diff --git a/tests/abis/flipper.abi.json b/tests/abis/flipper.abi.json new file mode 100644 index 00000000..1004b8f7 --- /dev/null +++ b/tests/abis/flipper.abi.json @@ -0,0 +1 @@ +[{"constant":true,"inputs":[],"name":"governor","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buyOusdWithUsdt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buyOusdWithDai","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sellOusdForDai","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"buyOusdWithUsdc","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sellOusdForUsdc","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isGovernor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sellOusdForUsdt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_newGovernor","type":"address"}],"name":"transferGovernance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"rebaseOptIn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernor","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernor","type":"address"}],"name":"PendingGovernorshipTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernor","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernor","type":"address"}],"name":"GovernorshipTransferred","type":"event"}] \ No newline at end of file diff --git a/tests/abis/ousd-curve-pool.abi.json b/tests/abis/ousd-curve-pool.abi.json new file mode 100644 index 00000000..5f764dad --- /dev/null +++ b/tests/abis/ousd-curve-pool.abi.json @@ -0,0 +1 @@ +[{"name":"Transfer","inputs":[{"type":"address","name":"sender","indexed":true},{"type":"address","name":"receiver","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false,"type":"event"},{"name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"spender","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false,"type":"event"},{"name":"TokenExchange","inputs":[{"type":"address","name":"buyer","indexed":true},{"type":"int128","name":"sold_id","indexed":false},{"type":"uint256","name":"tokens_sold","indexed":false},{"type":"int128","name":"bought_id","indexed":false},{"type":"uint256","name":"tokens_bought","indexed":false}],"anonymous":false,"type":"event"},{"name":"TokenExchangeUnderlying","inputs":[{"type":"address","name":"buyer","indexed":true},{"type":"int128","name":"sold_id","indexed":false},{"type":"uint256","name":"tokens_sold","indexed":false},{"type":"int128","name":"bought_id","indexed":false},{"type":"uint256","name":"tokens_bought","indexed":false}],"anonymous":false,"type":"event"},{"name":"AddLiquidity","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256[2]","name":"token_amounts","indexed":false},{"type":"uint256[2]","name":"fees","indexed":false},{"type":"uint256","name":"invariant","indexed":false},{"type":"uint256","name":"token_supply","indexed":false}],"anonymous":false,"type":"event"},{"name":"RemoveLiquidity","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256[2]","name":"token_amounts","indexed":false},{"type":"uint256[2]","name":"fees","indexed":false},{"type":"uint256","name":"token_supply","indexed":false}],"anonymous":false,"type":"event"},{"name":"RemoveLiquidityOne","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256","name":"token_amount","indexed":false},{"type":"uint256","name":"coin_amount","indexed":false},{"type":"uint256","name":"token_supply","indexed":false}],"anonymous":false,"type":"event"},{"name":"RemoveLiquidityImbalance","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256[2]","name":"token_amounts","indexed":false},{"type":"uint256[2]","name":"fees","indexed":false},{"type":"uint256","name":"invariant","indexed":false},{"type":"uint256","name":"token_supply","indexed":false}],"anonymous":false,"type":"event"},{"name":"CommitNewAdmin","inputs":[{"type":"uint256","name":"deadline","indexed":true},{"type":"address","name":"admin","indexed":true}],"anonymous":false,"type":"event"},{"name":"NewAdmin","inputs":[{"type":"address","name":"admin","indexed":true}],"anonymous":false,"type":"event"},{"name":"CommitNewFee","inputs":[{"type":"uint256","name":"deadline","indexed":true},{"type":"uint256","name":"fee","indexed":false},{"type":"uint256","name":"admin_fee","indexed":false}],"anonymous":false,"type":"event"},{"name":"NewFee","inputs":[{"type":"uint256","name":"fee","indexed":false},{"type":"uint256","name":"admin_fee","indexed":false}],"anonymous":false,"type":"event"},{"name":"RampA","inputs":[{"type":"uint256","name":"old_A","indexed":false},{"type":"uint256","name":"new_A","indexed":false},{"type":"uint256","name":"initial_time","indexed":false},{"type":"uint256","name":"future_time","indexed":false}],"anonymous":false,"type":"event"},{"name":"StopRampA","inputs":[{"type":"uint256","name":"A","indexed":false},{"type":"uint256","name":"t","indexed":false}],"anonymous":false,"type":"event"},{"outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"name":"initialize","outputs":[],"inputs":[{"type":"string","name":"_name"},{"type":"string","name":"_symbol"},{"type":"address","name":"_coin"},{"type":"uint256","name":"_decimals"},{"type":"uint256","name":"_A"},{"type":"uint256","name":"_fee"},{"type":"address","name":"_admin"}],"stateMutability":"nonpayable","type":"function","gas":470049},{"name":"decimals","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":291},{"name":"transfer","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_to"},{"type":"uint256","name":"_value"}],"stateMutability":"nonpayable","type":"function","gas":75402},{"name":"transferFrom","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_from"},{"type":"address","name":"_to"},{"type":"uint256","name":"_value"}],"stateMutability":"nonpayable","type":"function","gas":112037},{"name":"approve","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"_spender"},{"type":"uint256","name":"_value"}],"stateMutability":"nonpayable","type":"function","gas":37854},{"name":"get_previous_balances","outputs":[{"type":"uint256[2]","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2254},{"name":"get_balances","outputs":[{"type":"uint256[2]","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2284},{"name":"get_twap_balances","outputs":[{"type":"uint256[2]","name":""}],"inputs":[{"type":"uint256[2]","name":"_first_balances"},{"type":"uint256[2]","name":"_last_balances"},{"type":"uint256","name":"_time_elapsed"}],"stateMutability":"view","type":"function","gas":1522},{"name":"get_price_cumulative_last","outputs":[{"type":"uint256[2]","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2344},{"name":"admin_fee","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":621},{"name":"A","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":5859},{"name":"A_precise","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":5821},{"name":"get_virtual_price","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1011891},{"name":"calc_token_amount","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256[2]","name":"_amounts"},{"type":"bool","name":"_is_deposit"}],"stateMutability":"view","type":"function"},{"name":"calc_token_amount","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256[2]","name":"_amounts"},{"type":"bool","name":"_is_deposit"},{"type":"bool","name":"_previous"}],"stateMutability":"view","type":"function"},{"name":"add_liquidity","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256[2]","name":"_amounts"},{"type":"uint256","name":"_min_mint_amount"}],"stateMutability":"nonpayable","type":"function"},{"name":"add_liquidity","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256[2]","name":"_amounts"},{"type":"uint256","name":"_min_mint_amount"},{"type":"address","name":"_receiver"}],"stateMutability":"nonpayable","type":"function"},{"name":"get_dy","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"int128","name":"i"},{"type":"int128","name":"j"},{"type":"uint256","name":"dx"}],"stateMutability":"view","type":"function"},{"name":"get_dy","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"int128","name":"i"},{"type":"int128","name":"j"},{"type":"uint256","name":"dx"},{"type":"uint256[2]","name":"_balances"}],"stateMutability":"view","type":"function"},{"name":"get_dy_underlying","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"int128","name":"i"},{"type":"int128","name":"j"},{"type":"uint256","name":"dx"}],"stateMutability":"view","type":"function"},{"name":"get_dy_underlying","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"int128","name":"i"},{"type":"int128","name":"j"},{"type":"uint256","name":"dx"},{"type":"uint256[2]","name":"_balances"}],"stateMutability":"view","type":"function"},{"name":"exchange","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"int128","name":"i"},{"type":"int128","name":"j"},{"type":"uint256","name":"dx"},{"type":"uint256","name":"min_dy"}],"stateMutability":"nonpayable","type":"function"},{"name":"exchange","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"int128","name":"i"},{"type":"int128","name":"j"},{"type":"uint256","name":"dx"},{"type":"uint256","name":"min_dy"},{"type":"address","name":"_receiver"}],"stateMutability":"nonpayable","type":"function"},{"name":"exchange_underlying","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"int128","name":"i"},{"type":"int128","name":"j"},{"type":"uint256","name":"dx"},{"type":"uint256","name":"min_dy"}],"stateMutability":"nonpayable","type":"function"},{"name":"exchange_underlying","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"int128","name":"i"},{"type":"int128","name":"j"},{"type":"uint256","name":"dx"},{"type":"uint256","name":"min_dy"},{"type":"address","name":"_receiver"}],"stateMutability":"nonpayable","type":"function"},{"name":"remove_liquidity","outputs":[{"type":"uint256[2]","name":""}],"inputs":[{"type":"uint256","name":"_burn_amount"},{"type":"uint256[2]","name":"_min_amounts"}],"stateMutability":"nonpayable","type":"function"},{"name":"remove_liquidity","outputs":[{"type":"uint256[2]","name":""}],"inputs":[{"type":"uint256","name":"_burn_amount"},{"type":"uint256[2]","name":"_min_amounts"},{"type":"address","name":"_receiver"}],"stateMutability":"nonpayable","type":"function"},{"name":"remove_liquidity_imbalance","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256[2]","name":"_amounts"},{"type":"uint256","name":"_max_burn_amount"}],"stateMutability":"nonpayable","type":"function"},{"name":"remove_liquidity_imbalance","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256[2]","name":"_amounts"},{"type":"uint256","name":"_max_burn_amount"},{"type":"address","name":"_receiver"}],"stateMutability":"nonpayable","type":"function"},{"name":"calc_withdraw_one_coin","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"_burn_amount"},{"type":"int128","name":"i"}],"stateMutability":"view","type":"function"},{"name":"calc_withdraw_one_coin","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"_burn_amount"},{"type":"int128","name":"i"},{"type":"bool","name":"_previous"}],"stateMutability":"view","type":"function"},{"name":"remove_liquidity_one_coin","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"_burn_amount"},{"type":"int128","name":"i"},{"type":"uint256","name":"_min_received"}],"stateMutability":"nonpayable","type":"function"},{"name":"remove_liquidity_one_coin","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"_burn_amount"},{"type":"int128","name":"i"},{"type":"uint256","name":"_min_received"},{"type":"address","name":"_receiver"}],"stateMutability":"nonpayable","type":"function"},{"name":"ramp_A","outputs":[],"inputs":[{"type":"uint256","name":"_future_A"},{"type":"uint256","name":"_future_time"}],"stateMutability":"nonpayable","type":"function","gas":152464},{"name":"stop_ramp_A","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":149225},{"name":"admin_balances","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"i"}],"stateMutability":"view","type":"function","gas":3601},{"name":"withdraw_admin_fees","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":11347},{"name":"admin","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2141},{"name":"coins","outputs":[{"type":"address","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":2280},{"name":"balances","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":2310},{"name":"fee","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2231},{"name":"block_timestamp_last","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2261},{"name":"initial_A","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2291},{"name":"future_A","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2321},{"name":"initial_A_time","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2351},{"name":"future_A_time","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2381},{"name":"name","outputs":[{"type":"string","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":8813},{"name":"symbol","outputs":[{"type":"string","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":7866},{"name":"balanceOf","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2686},{"name":"allowance","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"},{"type":"address","name":"arg1"}],"stateMutability":"view","type":"function","gas":2931},{"name":"totalSupply","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2531}] \ No newline at end of file diff --git a/tests/abis/uniswap-v3.abi.json b/tests/abis/uniswap-v3.abi.json new file mode 100644 index 00000000..2d94b59f --- /dev/null +++ b/tests/abis/uniswap-v3.abi.json @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH9","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WETH9","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactInputParams","name":"params","type":"tuple"}],"name":"exactInput","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMinimum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactInputSingleParams","name":"params","type":"tuple"}],"name":"exactInputSingle","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"bytes","name":"path","type":"bytes"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"}],"internalType":"struct ISwapRouter.ExactOutputParams","name":"params","type":"tuple"}],"name":"exactOutput","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMaximum","type":"uint256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct ISwapRouter.ExactOutputSingleParams","name":"params","type":"tuple"}],"name":"exactOutputSingle","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"refundETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowed","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitAllowedIfNecessary","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"selfPermitIfNecessary","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"sweepToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"feeBips","type":"uint256"},{"internalType":"address","name":"feeRecipient","type":"address"}],"name":"sweepTokenWithFee","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"int256","name":"amount0Delta","type":"int256"},{"internalType":"int256","name":"amount1Delta","type":"int256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"uniswapV3SwapCallback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"unwrapWETH9","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountMinimum","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"feeBips","type":"uint256"},{"internalType":"address","name":"feeRecipient","type":"address"}],"name":"unwrapWETH9WithFee","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}] \ No newline at end of file diff --git a/tests/abis/vault-core.abi.json b/tests/abis/vault-core.abi.json new file mode 100644 index 00000000..abeb9356 --- /dev/null +++ b/tests/abis/vault-core.abi.json @@ -0,0 +1 @@ +[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"AllocateThresholdUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_asset","type":"address"},{"indexed":false,"internalType":"address","name":"_strategy","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"AssetAllocated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_asset","type":"address"},{"indexed":false,"internalType":"address","name":"_strategy","type":"address"}],"name":"AssetDefaultStrategyUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_asset","type":"address"}],"name":"AssetSupported","type":"event"},{"anonymous":false,"inputs":[],"name":"CapitalPaused","type":"event"},{"anonymous":false,"inputs":[],"name":"CapitalUnpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernor","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernor","type":"address"}],"name":"GovernorshipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxSupplyDiff","type":"uint256"}],"name":"MaxSupplyDiffChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"NetOusdMintForStrategyThresholdChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_ousdMetaStrategy","type":"address"}],"name":"OusdMetaStrategyUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernor","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernor","type":"address"}],"name":"PendingGovernorshipTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_priceProvider","type":"address"}],"name":"PriceProviderUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"RebasePaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"RebaseThresholdUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"RebaseUnpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_redeemFeeBps","type":"uint256"}],"name":"RedeemFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"StrategistUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_addr","type":"address"}],"name":"StrategyApproved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_addr","type":"address"}],"name":"StrategyRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_basis","type":"uint256"}],"name":"SwapAllowedUndervalueChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_asset","type":"address"},{"indexed":false,"internalType":"uint256","name":"_basis","type":"uint256"}],"name":"SwapSlippageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_fromAsset","type":"address"},{"indexed":true,"internalType":"address","name":"_toAsset","type":"address"},{"indexed":false,"internalType":"uint256","name":"_fromAssetAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_toAssetAmount","type":"uint256"}],"name":"Swapped","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"SwapperChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"}],"name":"TrusteeAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_basis","type":"uint256"}],"name":"TrusteeFeeBpsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_vaultBuffer","type":"uint256"}],"name":"VaultBufferUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_yield","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"YieldDistribution","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"allocate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"assetDefaultStrategies","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoAllocateThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burnForStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"calculateRedeemOutputs","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"capitalPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_asset","type":"address"}],"name":"checkBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllAssets","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAllStrategies","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_asset","type":"address"}],"name":"getAssetConfig","outputs":[{"components":[{"internalType":"bool","name":"isSupported","type":"bool"},{"internalType":"enum VaultStorage.UnitConversion","name":"unitConversion","type":"uint8"},{"internalType":"uint8","name":"decimals","type":"uint8"},{"internalType":"uint16","name":"allowedOracleSlippageBps","type":"uint16"}],"internalType":"struct VaultStorage.Asset","name":"config","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAssetCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStrategyCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isGovernor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_asset","type":"address"}],"name":"isSupportedAsset","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupplyDiff","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_asset","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_minimumOusdAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintForStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"netOusdMintForStrategyThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"netOusdMintedForStrategy","outputs":[{"internalType":"int256","name":"","type":"int256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ousdMetaStrategy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceProvider","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"priceUnitMint","outputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"priceUnitRedeem","outputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rebasePaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebaseThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_minimumUnitAmount","type":"uint256"}],"name":"redeem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minimumUnitAmount","type":"uint256"}],"name":"redeemAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"redeemFeeBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImpl","type":"address"}],"name":"setAdminImpl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"strategistAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalValue","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newGovernor","type":"address"}],"name":"transferGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"trusteeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trusteeFeeBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vaultBuffer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}] \ No newline at end of file diff --git a/tests/abis/zapper.abi.json b/tests/abis/zapper.abi.json new file mode 100644 index 00000000..b10f011e --- /dev/null +++ b/tests/abis/zapper.abi.json @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"address","name":"_oeth","type":"address"},{"internalType":"address","name":"_vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Zap","type":"event"},{"inputs":[],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"minOETH","type":"uint256"}],"name":"depositSFRXETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"frxeth","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oeth","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sfrxeth","outputs":[{"internalType":"contract ISfrxETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"contract IVault","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"contract IWETH9","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}] \ No newline at end of file diff --git a/tests/ethereum_build/.DS_Store b/tests/ethereum_build/.DS_Store new file mode 100644 index 00000000..f57d65af Binary files /dev/null and b/tests/ethereum_build/.DS_Store differ diff --git a/tests/oeth/.DS_Store b/tests/oeth/.DS_Store new file mode 100644 index 00000000..135733a9 Binary files /dev/null and b/tests/oeth/.DS_Store differ diff --git a/tests/oeth/test_oeth_curve_swap.py b/tests/oeth/test_oeth_curve_swap.py new file mode 100644 index 00000000..a42de5a9 --- /dev/null +++ b/tests/oeth/test_oeth_curve_swap.py @@ -0,0 +1,132 @@ +from web3 import Web3 +from tests.utils import run_test, load_contract + +contract_curve_pool = load_contract( + "94b17476a93b3262d87b9a326965d1e91f9c13e7", + "curve-pool" +) + +contract_curve_router = load_contract( + "94b17476a93b3262d87b9a326965d1e91f9c13e7", + "curve-router" +) + +def test_oeth_curve_swap_from_oeth(backend, firmware, navigator, test_name): + data = contract_curve_pool.encodeABI("exchange", [ + 1, + 0, + Web3.to_wei(1, "ether"), + Web3.to_wei(0.975, "ether") + ]) + + run_test(contract_curve_pool, data, backend, firmware, navigator, test_name) + +def test_oeth_curve_swap_to_oeth(backend, firmware, navigator, test_name): + data = contract_curve_pool.encodeABI("exchange", [ + 0, + 1, + Web3.to_wei(1, "ether"), + Web3.to_wei(0.995, "ether") + ]) + + run_test(contract_curve_pool, data, backend, firmware, navigator, test_name) + +def test_oeth_curve_swap_multiple_oeth_to_reth(backend, firmware, navigator, test_name): + data = contract_curve_router.encodeABI("exchange_multiple", [ + [ + bytes.fromhex("856c4Efb76C1D1AE02e20CEB03A2A6a08b0b8dC3"), + bytes.fromhex("94b17476a93b3262d87b9a326965d1e91f9c13e7"), + bytes.fromhex("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"), + bytes.fromhex("0f3159811670c117c372428d4e69ac32325e4d0f"), + bytes.fromhex("ae78736cd615f374d3085123a210448e74fc6393"), + bytes.fromhex("0000000000000000000000000000000000000000"), + bytes.fromhex("0000000000000000000000000000000000000000"), + bytes.fromhex("0000000000000000000000000000000000000000"), + bytes.fromhex("0000000000000000000000000000000000000000"), + ], + [ + [0, 0, 0], + [0, 0, 0], + [0, 0, 0], + [0, 0, 0] + ], + Web3.to_wei(1, "ether"), + Web3.to_wei(0.941, "ether"), + ]) + + run_test(contract_curve_router, data, backend, firmware, navigator, test_name) + +def test_oeth_curve_swap_multiple_reth_to_oeth(backend, firmware, navigator, test_name): + data = contract_curve_router.encodeABI("exchange_multiple", [ + [ + bytes.fromhex("ae78736cd615f374d3085123a210448e74fc6393"), + bytes.fromhex("0f3159811670c117c372428d4e69ac32325e4d0f"), + bytes.fromhex("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"), + bytes.fromhex("94b17476a93b3262d87b9a326965d1e91f9c13e7"), + bytes.fromhex("856c4Efb76C1D1AE02e20CEB03A2A6a08b0b8dC3"), + bytes.fromhex("0000000000000000000000000000000000000000"), + bytes.fromhex("0000000000000000000000000000000000000000"), + bytes.fromhex("0000000000000000000000000000000000000000"), + bytes.fromhex("0000000000000000000000000000000000000000"), + ], + [ + [0, 0, 0], + [0, 0, 0], + [0, 0, 0], + [0, 0, 0] + ], + Web3.to_wei(1, "ether"), + Web3.to_wei(0.941, "ether"), + ]) + + run_test(contract_curve_router, data, backend, firmware, navigator, test_name) + +def test_oeth_curve_swap_multiple_eth_to_oeth(backend, firmware, navigator, test_name): + data = contract_curve_router.encodeABI("exchange_multiple", [ + [ + bytes.fromhex("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"), + bytes.fromhex("94b17476a93b3262d87b9a326965d1e91f9c13e7"), + bytes.fromhex("856c4Efb76C1D1AE02e20CEB03A2A6a08b0b8dC3"), + bytes.fromhex("0000000000000000000000000000000000000000"), + bytes.fromhex("0000000000000000000000000000000000000000"), + bytes.fromhex("0000000000000000000000000000000000000000"), + bytes.fromhex("0000000000000000000000000000000000000000"), + bytes.fromhex("0000000000000000000000000000000000000000"), + bytes.fromhex("0000000000000000000000000000000000000000"), + ], + [ + [0, 0, 0], + [0, 0, 0], + [0, 0, 0], + [0, 0, 0] + ], + Web3.to_wei(1, "ether"), + Web3.to_wei(0.941, "ether"), + ]) + + run_test(contract_curve_router, data, backend, firmware, navigator, test_name) + +def test_oeth_curve_swap_multiple_oeth_to_eth(backend, firmware, navigator, test_name): + data = contract_curve_router.encodeABI("exchange_multiple", [ + [ + bytes.fromhex("856c4Efb76C1D1AE02e20CEB03A2A6a08b0b8dC3"), + bytes.fromhex("94b17476a93b3262d87b9a326965d1e91f9c13e7"), + bytes.fromhex("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"), + bytes.fromhex("0000000000000000000000000000000000000000"), + bytes.fromhex("0000000000000000000000000000000000000000"), + bytes.fromhex("0000000000000000000000000000000000000000"), + bytes.fromhex("0000000000000000000000000000000000000000"), + bytes.fromhex("0000000000000000000000000000000000000000"), + bytes.fromhex("0000000000000000000000000000000000000000"), + ], + [ + [0, 0, 0], + [0, 0, 0], + [0, 0, 0], + [0, 0, 0] + ], + Web3.to_wei(1, "ether"), + Web3.to_wei(0.941, "ether"), + ]) + + run_test(contract_curve_router, data, backend, firmware, navigator, test_name) \ No newline at end of file diff --git a/tests/oeth/test_oeth_vault.py b/tests/oeth/test_oeth_vault.py new file mode 100644 index 00000000..1d118d16 --- /dev/null +++ b/tests/oeth/test_oeth_vault.py @@ -0,0 +1,51 @@ +from web3 import Web3 +from tests.utils import run_test, load_contract + +contract_oeth_vault = load_contract( + "39254033945AA2E4809Cc2977E7087BEE48bd7Ab", + "vault-core" +) + +def test_oeth_vault_mint_weth(backend, firmware, navigator, test_name): + data = contract_oeth_vault.encodeABI("mint", [ + bytes.fromhex("C02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"), + Web3.to_wei(1, "ether"), + Web3.to_wei(1, "ether") + ]) + + run_test(contract_oeth_vault, data, backend, firmware, navigator, test_name) + +def test_oeth_vault_mint_reth(backend, firmware, navigator, test_name): + data = contract_oeth_vault.encodeABI("mint", [ + bytes.fromhex("ae78736cd615f374d3085123a210448e74fc6393"), + Web3.to_wei(1, "ether"), + Web3.to_wei(1, "ether") + ]) + + run_test(contract_oeth_vault, data, backend, firmware, navigator, test_name) + +def test_oeth_vault_mint_steth(backend, firmware, navigator, test_name): + data = contract_oeth_vault.encodeABI("mint", [ + bytes.fromhex("ae7ab96520de3a18e5e111b5eaab095312d7fe84"), + Web3.to_wei(1, "ether"), + Web3.to_wei(1, "ether") + ]) + + run_test(contract_oeth_vault, data, backend, firmware, navigator, test_name) + +def test_oeth_vault_mint_frxeth(backend, firmware, navigator, test_name): + data = contract_oeth_vault.encodeABI("mint", [ + bytes.fromhex("5e8422345238f34275888049021821e8e08caa1f"), + Web3.to_wei(1, "ether"), + Web3.to_wei(1, "ether") + ]) + + run_test(contract_oeth_vault, data, backend, firmware, navigator, test_name) + +def test_oeth_vault_redeem(backend, firmware, navigator, test_name): + data = contract_oeth_vault.encodeABI("redeem", [ + Web3.to_wei(1, "ether"), + Web3.to_wei(0.88, "ether") + ]) + + run_test(contract_oeth_vault, data, backend, firmware, navigator, test_name) diff --git a/tests/oeth/test_oeth_wrap.py b/tests/oeth/test_oeth_wrap.py new file mode 100644 index 00000000..c9bf6a37 --- /dev/null +++ b/tests/oeth/test_oeth_wrap.py @@ -0,0 +1,56 @@ +from web3 import Web3 +from tests.utils import run_test, load_contract + +from ledger_app_clients.ethereum.client import EthAppClient +import ledger_app_clients.ethereum.response_parser as ResponseParser + +contract_woeth = load_contract( + "DcEe70654261AF21C44c093C300eD3Bb97b78192", + "4626-vault" +) + +def test_oeth_wrap(backend, firmware, navigator, test_name): + client = EthAppClient(backend) + + with client.get_public_addr(display=False): + pass + _, addr, _ = ResponseParser.pk_addr(client.response().data) + + data = contract_woeth.encodeABI("deposit", [ + Web3.to_wei(1, "ether"), + addr + ]) + + run_test(contract_woeth, data, backend, firmware, navigator, test_name) + +def test_oeth_wrap_different_beneficiary(backend, firmware, navigator, test_name): + data = contract_woeth.encodeABI("deposit", [ + Web3.to_wei(1, "ether"), + bytes.fromhex("000000000000000000000000000000000000dEaD") + ]) + + run_test(contract_woeth, data, backend, firmware, navigator, test_name) + +def test_oeth_unwrap(backend, firmware, navigator, test_name): + client = EthAppClient(backend) + + with client.get_public_addr(display=False): + pass + _, addr, _ = ResponseParser.pk_addr(client.response().data) + + data = contract_woeth.encodeABI("redeem", [ + Web3.to_wei(1, "ether"), + addr, + addr + ]) + + run_test(contract_woeth, data, backend, firmware, navigator, test_name) + +def test_oeth_unwrap_different_beneficiary(backend, firmware, navigator, test_name): + data = contract_woeth.encodeABI("redeem", [ + Web3.to_wei(1, "ether"), + bytes.fromhex("000000000000000000000000000000000000dEaD"), + bytes.fromhex("000000000000000000000000000000000002dEaD") + ]) + + run_test(contract_woeth, data, backend, firmware, navigator, test_name) diff --git a/tests/oeth/test_zapper.py b/tests/oeth/test_zapper.py new file mode 100644 index 00000000..794e2f5b --- /dev/null +++ b/tests/oeth/test_zapper.py @@ -0,0 +1,28 @@ +from web3 import Web3 +from tests.utils import run_test, load_contract + +contract_oeth_zapper = load_contract( + "9858e47bcbbe6fbac040519b02d7cd4b2c470c66", + "zapper" +) + +def test_oeth_zapper_deposit_eth(backend, firmware, navigator, test_name): + data = contract_oeth_zapper.encodeABI("deposit", []) + + run_test( + contract_oeth_zapper, + data, + backend, + firmware, + navigator, + test_name, + value=Web3.to_wei(1, "ether") + ) + +def test_oeth_zapper_deposit_sfrxeth(backend, firmware, navigator, test_name): + data = contract_oeth_zapper.encodeABI("depositSFRXETH", [ + Web3.to_wei(1, "ether"), + Web3.to_wei(0.991, "ether") + ]) + + run_test(contract_oeth_zapper, data, backend, firmware, navigator, test_name) diff --git a/tests/ousd/.DS_Store b/tests/ousd/.DS_Store new file mode 100644 index 00000000..135733a9 Binary files /dev/null and b/tests/ousd/.DS_Store differ diff --git a/tests/ousd/test_flipper.py b/tests/ousd/test_flipper.py new file mode 100644 index 00000000..14c0c668 --- /dev/null +++ b/tests/ousd/test_flipper.py @@ -0,0 +1,91 @@ +from web3 import Web3 +from tests.utils import run_test, load_contract + +contract_ousd_flipper = load_contract( + "cecaD69d7D4Ed6D52eFcFA028aF8732F27e08F70", + "flipper" +) + +def test_ousd_flipper_flip_with_usdc(backend, firmware, navigator, test_name): + data = contract_ousd_flipper.encodeABI("buyOusdWithUsdc", [ + Web3.to_wei(10000, "ether") + ]) + + run_test( + contract_ousd_flipper, + data, + backend, + firmware, + navigator, + test_name + ) + +def test_ousd_flipper_flip_to_usdc(backend, firmware, navigator, test_name): + data = contract_ousd_flipper.encodeABI("sellOusdForUsdc", [ + Web3.to_wei(10000, "ether") + ]) + + run_test( + contract_ousd_flipper, + data, + backend, + firmware, + navigator, + test_name + ) + +def test_ousd_flipper_flip_with_usdt(backend, firmware, navigator, test_name): + data = contract_ousd_flipper.encodeABI("buyOusdWithUsdt", [ + Web3.to_wei(10000, "ether"), + ]) + + run_test( + contract_ousd_flipper, + data, + backend, + firmware, + navigator, + test_name + ) + +def test_ousd_flipper_flip_to_usdt(backend, firmware, navigator, test_name): + data = contract_ousd_flipper.encodeABI("sellOusdForUsdt", [ + Web3.to_wei(10000, "ether") + ]) + + run_test( + contract_ousd_flipper, + data, + backend, + firmware, + navigator, + test_name + ) + +def test_ousd_flipper_flip_with_dai(backend, firmware, navigator, test_name): + data = contract_ousd_flipper.encodeABI("buyOusdWithDai", [ + Web3.to_wei(10000, "ether") + ]) + + run_test( + contract_ousd_flipper, + data, + backend, + firmware, + navigator, + test_name + ) + +def test_ousd_flipper_flip_to_dai(backend, firmware, navigator, test_name): + data = contract_ousd_flipper.encodeABI("sellOusdForDai", [ + Web3.to_wei(10000, "ether") + ]) + + run_test( + contract_ousd_flipper, + data, + backend, + firmware, + navigator, + test_name + ) diff --git a/tests/ousd/test_ousd_curve_swap.py b/tests/ousd/test_ousd_curve_swap.py new file mode 100644 index 00000000..1108ea37 --- /dev/null +++ b/tests/ousd/test_ousd_curve_swap.py @@ -0,0 +1,67 @@ +from web3 import Web3 +from tests.utils import run_test, load_contract + +contract_curve_pool = load_contract( + "87650D7bbfC3A9F10587d7778206671719d9910D", + "ousd-curve-pool" +) + +def test_ousd_curve_swap_from_dai(backend, firmware, navigator, test_name): + data = contract_curve_pool.encodeABI("exchange_underlying", [ + 1, + 0, + Web3.to_wei(10000, "ether"), + Web3.to_wei(9750, "ether") + ]) + + run_test(contract_curve_pool, data, backend, firmware, navigator, test_name) + +def test_ousd_curve_swap_to_dai(backend, firmware, navigator, test_name): + data = contract_curve_pool.encodeABI("exchange_underlying", [ + 0, + 1, + Web3.to_wei(10000, "ether"), + Web3.to_wei(9750, "ether") + ]) + + run_test(contract_curve_pool, data, backend, firmware, navigator, test_name) + +def test_ousd_curve_swap_from_usdt(backend, firmware, navigator, test_name): + data = contract_curve_pool.encodeABI("exchange_underlying", [ + 3, + 0, + Web3.to_wei(10000, "mwei"), + Web3.to_wei(9750, "ether") + ]) + + run_test(contract_curve_pool, data, backend, firmware, navigator, test_name) + +def test_ousd_curve_swap_to_usdt(backend, firmware, navigator, test_name): + data = contract_curve_pool.encodeABI("exchange_underlying", [ + 0, + 3, + Web3.to_wei(10000, "ether"), + Web3.to_wei(9750, "mwei") + ]) + + run_test(contract_curve_pool, data, backend, firmware, navigator, test_name) + +def test_ousd_curve_swap_from_usdc(backend, firmware, navigator, test_name): + data = contract_curve_pool.encodeABI("exchange_underlying", [ + 2, + 0, + Web3.to_wei(10000, "mwei"), + Web3.to_wei(9750, "ether") + ]) + + run_test(contract_curve_pool, data, backend, firmware, navigator, test_name) + +def test_ousd_curve_swap_to_usdc(backend, firmware, navigator, test_name): + data = contract_curve_pool.encodeABI("exchange_underlying", [ + 0, + 2, + Web3.to_wei(10000, "ether"), + Web3.to_wei(9750, "mwei") + ]) + + run_test(contract_curve_pool, data, backend, firmware, navigator, test_name) diff --git a/tests/ousd/test_ousd_univ3.py b/tests/ousd/test_ousd_univ3.py new file mode 100644 index 00000000..af7801bb --- /dev/null +++ b/tests/ousd/test_ousd_univ3.py @@ -0,0 +1,133 @@ +from web3 import Web3 +from tests.utils import run_test, load_contract + +contract_univ3_router = load_contract( + "e592427a0aece92de3edee1f18e0157c05861564", + "uniswap-v3" +) + +def test_ousd_univ3_swap_to_usdc(backend, firmware, navigator, test_name): + data = contract_univ3_router.encodeABI("exactInput", [ + [ + bytes.fromhex("2a8e1e676ec238d8a992307b495b45b3feaa5e860001f4dac17f958d2ee523a2206206994597c13d831ec7000064a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"), + bytes.fromhex("dead0000000dead000000dead00000000000dead"), + 0, + Web3.to_wei(10000, "ether"), + Web3.to_wei(9500, "mwei"), + ] + ]) + + run_test( + contract_univ3_router, + data, + backend, + firmware, + navigator, + test_name + ) + +def test_ousd_univ3_swap_from_usdc(backend, firmware, navigator, test_name): + data = contract_univ3_router.encodeABI("exactInput", [ + [ + bytes.fromhex("a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480001f46b175474e89094c44da98b954eedeac495271d0f0001f42a8e1e676ec238d8a992307b495b45b3feaa5e86"), + bytes.fromhex("dead0000000dead000000dead00000000000dead"), + 0, + Web3.to_wei(9500, "mwei"), + Web3.to_wei(10000, "ether"), + ] + ]) + + run_test( + contract_univ3_router, + data, + backend, + firmware, + navigator, + test_name + ) + +def test_ousd_univ3_swap_to_usdt(backend, firmware, navigator, test_name): + data = contract_univ3_router.encodeABI("exactInputSingle", [ + [ + bytes.fromhex("2a8e1e676ec238d8a992307b495b45b3feaa5e86"), + bytes.fromhex("dac17f958d2ee523a2206206994597c13d831ec7"), + 500, + bytes.fromhex("dead0000000dead000000dead00000000000dead"), + 0, + Web3.to_wei(10000, "ether"), + Web3.to_wei(9550, "mwei"), + 0 + ] + ]) + + run_test( + contract_univ3_router, + data, + backend, + firmware, + navigator, + test_name + ) + +def test_ousd_univ3_swap_from_usdt(backend, firmware, navigator, test_name): + data = contract_univ3_router.encodeABI("exactInputSingle", [ + [ + bytes.fromhex("dac17f958d2ee523a2206206994597c13d831ec7"), + bytes.fromhex("2a8e1e676ec238d8a992307b495b45b3feaa5e86"), + 500, + bytes.fromhex("dead0000000dead000000dead00000000000dead"), + 0, + Web3.to_wei(9550, "mwei"), + Web3.to_wei(10000, "ether"), + 0 + ] + ]) + + run_test( + contract_univ3_router, + data, + backend, + firmware, + navigator, + test_name + ) + +def test_ousd_univ3_swap_to_dai(backend, firmware, navigator, test_name): + data = contract_univ3_router.encodeABI("exactInput", [ + [ + bytes.fromhex("2a8e1e676ec238d8a992307b495b45b3feaa5e860001f4dac17f958d2ee523a2206206994597c13d831ec70000646b175474e89094c44da98b954eedeac495271d0f"), + bytes.fromhex("dead0000000dead000000dead00000000000dead"), + 0, + Web3.to_wei(10000, "ether"), + Web3.to_wei(9500, "ether"), + ] + ]) + + run_test( + contract_univ3_router, + data, + backend, + firmware, + navigator, + test_name + ) + +def test_ousd_univ3_swap_from_dai(backend, firmware, navigator, test_name): + data = contract_univ3_router.encodeABI("exactInput", [ + [ + bytes.fromhex("6b175474e89094c44da98b954eedeac495271d0f0001f46b175474e89094c44da98b954eedeac495271d0f0001f42a8e1e676ec238d8a992307b495b45b3feaa5e86"), + bytes.fromhex("dead0000000dead000000dead00000000000dead"), + 0, + Web3.to_wei(9600, "ether"), + Web3.to_wei(10000, "ether"), + ] + ]) + + run_test( + contract_univ3_router, + data, + backend, + firmware, + navigator, + test_name + ) \ No newline at end of file diff --git a/tests/ousd/test_ousd_vault.py b/tests/ousd/test_ousd_vault.py new file mode 100644 index 00000000..cabdd6ef --- /dev/null +++ b/tests/ousd/test_ousd_vault.py @@ -0,0 +1,42 @@ +from web3 import Web3 +from tests.utils import run_test, load_contract + +contract_ousd_vault = load_contract( + "E75D77B1865Ae93c7eaa3040B038D7aA7BC02F70", + "vault-core" +) + +def test_ousd_vault_mint_dai(backend, firmware, navigator, test_name): + data = contract_ousd_vault.encodeABI("mint", [ + bytes.fromhex("6b175474e89094c44da98b954eedeac495271d0f"), + Web3.to_wei(10000, "ether"), + Web3.to_wei(9500, "ether") + ]) + + run_test(contract_ousd_vault, data, backend, firmware, navigator, test_name) + +def test_ousd_vault_mint_usdc(backend, firmware, navigator, test_name): + data = contract_ousd_vault.encodeABI("mint", [ + bytes.fromhex("a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"), + Web3.to_wei(10000, "mwei"), + Web3.to_wei(9500, "ether") + ]) + + run_test(contract_ousd_vault, data, backend, firmware, navigator, test_name) + +def test_ousd_vault_mint_usdt(backend, firmware, navigator, test_name): + data = contract_ousd_vault.encodeABI("mint", [ + bytes.fromhex("dac17f958d2ee523a2206206994597c13d831ec7"), + Web3.to_wei(10000, "mwei"), + Web3.to_wei(9500, "ether") + ]) + + run_test(contract_ousd_vault, data, backend, firmware, navigator, test_name) + +def test_ousd_vault_redeem(backend, firmware, navigator, test_name): + data = contract_ousd_vault.encodeABI("redeem", [ + Web3.to_wei(10000, "ether"), + Web3.to_wei(9088, "ether") + ]) + + run_test(contract_ousd_vault, data, backend, firmware, navigator, test_name) diff --git a/tests/ousd/test_ousd_wrap.py b/tests/ousd/test_ousd_wrap.py new file mode 100644 index 00000000..a6dec836 --- /dev/null +++ b/tests/ousd/test_ousd_wrap.py @@ -0,0 +1,56 @@ +from web3 import Web3 +from tests.utils import run_test, load_contract + +from ledger_app_clients.ethereum.client import EthAppClient +import ledger_app_clients.ethereum.response_parser as ResponseParser + +contract_wousd = load_contract( + "D2af830E8CBdFed6CC11Bab697bB25496ed6FA62", + "4626-vault" +) + +def test_ousd_wrap(backend, firmware, navigator, test_name): + client = EthAppClient(backend) + + with client.get_public_addr(display=False): + pass + _, addr, _ = ResponseParser.pk_addr(client.response().data) + + data = contract_wousd.encodeABI("deposit", [ + Web3.to_wei(1, "ether"), + addr + ]) + + run_test(contract_wousd, data, backend, firmware, navigator, test_name) + +def test_ousd_wrap_different_beneficiary(backend, firmware, navigator, test_name): + data = contract_wousd.encodeABI("deposit", [ + Web3.to_wei(1, "ether"), + bytes.fromhex("000000000000000000000000000000000000dEaD") + ]) + + run_test(contract_wousd, data, backend, firmware, navigator, test_name) + +def test_ousd_unwrap(backend, firmware, navigator, test_name): + client = EthAppClient(backend) + + with client.get_public_addr(display=False): + pass + _, addr, _ = ResponseParser.pk_addr(client.response().data) + + data = contract_wousd.encodeABI("redeem", [ + Web3.to_wei(1, "ether"), + addr, + addr + ]) + + run_test(contract_wousd, data, backend, firmware, navigator, test_name) + +def test_ousd_unwrap_different_beneficiary(backend, firmware, navigator, test_name): + data = contract_wousd.encodeABI("redeem", [ + Web3.to_wei(1, "ether"), + bytes.fromhex("000000000000000000000000000000000000dEaD"), + bytes.fromhex("000000000000000000000000000000000002dEaD") + ]) + + run_test(contract_wousd, data, backend, firmware, navigator, test_name) diff --git a/tests/plugin_binaries/nanos/bin/app.apdu b/tests/plugin_binaries/nanos/bin/app.apdu new file mode 100644 index 00000000..fc00df12 --- /dev/null +++ b/tests/plugin_binaries/nanos/bin/app.apdu @@ -0,0 +1,34 @@ +e0000000130c11506c7567696e426f696c6572706c617465 +e0000000150b0000164000000000000000510000080000000001 +e0000000050500000000 +e0000000d30600008cb0044662b600f083fc6d46284601f045f9a88585b2002d0ed1684600f0bcfe0a90002c1cd020680e49884202d0616800f016fc00f08efe6c460020a0850a9800f0aafe08487844294600f097fc00f097fea042eed10a9800f09efe00f07afe00f042fcff0100004b15000003b401480be000003200000003b4014805e000004400000003b40248ffe70249084700007100000001001200f0b593b003920491054601231898014699431e224a4019990a430027002a3a4619d1059306aa3324234600f06ff800285fd006ae30462146 +e0000000d30600d001f07ef93318221a30497944184601f0f7f83046214601f073f90246059b06a8059280182a4e7e44e95d0f240a092140715c4170b15c0170801c7f1c142ff3d11902039f3846fff7afff002100283ad12020019006a802900090059b2833012238460f4605921146029afff797ff3946002828d10020049f059b05e0715c059b3954401c28281ad002461a404308e95c002a03d021400929f0d902e009090929ecd906affb5c920004275740fb401a07715c00d52039049fe1e7002103e02820002139541946084613b0f0bd16130000 +e0000000d30601a0fd120000f0b587b002930446002001920546c7b27b1c029883422bd2009306950a250026204605912a46334600f03afe049003912a46069d334600f053fe019a201a30210143d155681c0921091b3146059b9941049c0399dad3c0b216542806009b07d0d05d915dd15590557f1e761cbe42f7d30298834202d3002007b0f0bd012007b0f0bdf0b583b0029314460e460746012907d13878302804d1029802283dd200256fe0089bb34222d2b11c0025029801918142294645d80020f11a04d03a5c2254401c8142fad1002b024602d0 +e0000000d30602702e212154421cb042114632d2331a38181146067866545b1e401c491c002bf8d127e0d91c0025029801918142294622d8991b2e2060703020207000290dd0a01c3022009100f0cafe0098821c06e0002060703020207001252de00222002e114607d01146387860547f1c761e491c002ef8d1002060540298019b83421bd88a420ed2002303e0521c9142034609d0002b104600d01846a35c302bf4d00020f2e700200125002806d000212154401e225c2e2a00d12154284603b0f0bdf0b58bb014460a46202901d900263ae01d460146 +e0000000d306034000260a96099608960796069605960496039603afb81a203000f070fe2021384600f056f8002809d0022d22d32749794420462a4600f0d6ff01261ae0002003a90a5a52ba0a52801c2028f8d103a8202100f03ef84742474100280dd02e46a119ad1b20462a4600f04dfe0020605501267e4030460bb0f0bd0095002df7d0009e019402960024204603ad295b000446180a273046394600f0edfc28534743f01ba41c202cf0d130210843029e761e019ca05503a8202100f00bf847424741002802d1002eddd1d2e7009dc8e79c100000 +e0000000d3060410b0b54b1e0a469a4100290ed00378002b0bd101231c468c421a4600d30022a14203d0055d641c002df5d001205040b0bdf0b59db0039302920d46074604ac64262046314600f0ecfd3846294622463346fff764ff00282cd0239c229d04a8642100f0aeff01900b21039800f0a9ff0746c6b2a642224600d832462846039900f0d5fd002e02d02020a8557f1c02980090f8b22a18c04303190198c1b204a8fff7bafe002803d06119491e00220a701db0f0bd00201db0f0bd80b5142a00d31422891a203100f0b6fd80bd80b5202a00d3 +e0000000d30604e0202200f0affd80bdb0b504460a48a083a069a56829462031142200f0affd0421a1773435e560002802d003206077b0bd02206077b0bdc04602020000b0b582b004460078062827d12069592805d81948784400f023fa00201fe0e5685a21284600f076fd606900f02ff813497944022201ab00f0d7fb00280ad0553501982871010a0dd1c1b202290dd22870042004e00a48784400f002fa0120607002b0b0bd07487844d5e70748784400f0f7f90020f3e7c046dc0e0000e0100000d30e0000df0e0000060f00000178090642781204 +e0000000d30605b05118827812028918c078081870470000b0b504468568c36801690c487844202200f0d4f9042020755920295c01290cd0002904d12046294600f00cf8b0bd0448784400f0c3f900202075b0bddd0e0000ea0e000070b504465820085c0e465636002806d020693288121d904244d10020b0700d4655352a78012a0cdd022a18d0032a22d0042a30d10120b0702870208a3c30308070bd002a1ed0012a25d1e3683431142208461946fff736ff0520287070bde3682031142208461946fff72cff0120b0700420287070bde06800f018f8 +e0000000d306068030800220287070bde368202208461946fff723ff0320287070bd04487844114600f06cf90020207570bdc046600e0000c17f807f0002401880b27047b0b504468068e16805465335002909d0c97f2970e168483014310b2200f024fe012000e00020042161756870b0bd0000b0b504468568c06822690c49794400f013fe5920295c002906d00a48784400f037f900202077b0bd6069a2690449794400f002fe04202077b0bdc0461d0e00000d0e0000240e000070b50446c569406aa16a00f077fce06a216b00f073fc2020205c2646 +e0000000d30607502036022807d001280ad000280dd1204600f018f80ee02046294600f059f809e02046294600f02cf804e00548784400f0fdf80020411e88418000307570bdc046d20d000010b582b00446406aa26a0a49794400f0bffd606800686221415ce26a236b0092019342301222044b7b44fff73ffe02b010bdc046cf0d0000b80d0000b0b582b00d460446406aa26a0f49794400f0a0fd5320285c294653314978e26a236b00920193002904d02c464834002903d003e01034002900d11220c2b2202128462346fff714fe02b0b0bd9a0d0000 +e0000000d3060820b0b582b00c460546406aaa6a0b49794400f078fde86a30210170e86a7821417028680268e86a0021009101912034811c2046fff721fc02b0b0bdc046570d000080b5002912d00246ff20034604339a4211dc023082421dd08120400082421dd09a4227d10846fff72ffe80bd1548784400f074f880bd41239b009a4212d00630824213d083204000824213d10846fff741ff80bd0846fff731fe80bd0846fff77ffe80bd0846fff7f9fe80bd0846fff70dff80bd02487844114600f04ff880bde50c0000430d000080b586b000200590 +e0000000d30608f00490064878440190012003900002029001a800f019fa06b080bdc046be0c000080b5002000f040fa80bd00000446704600f00ef8024605487844214600f026f800f026fa214600f0bdfcc046c30c000003497944401a0149401870470000dec0bbf6ffffb0b582b00c46054601a881705f210170210a4170032100f0fdf9a1b2284600f0f9f902b0b0bd000083b0f0b58cb011ac0ec4002800d1a7e1074611a806903878002800d1a0e10120019004e0bf193878002800d198e10026b85d002803d0252801d0761cf8e738463146fff7 +e0000000d30609c0c9ffb85d2528ebd1b819471c002320240593184601e0104619d139787f1c00222d29f8dd472937dc0a46303a0a2a1cd2039430221d460b4653402c462b4300d0039a0a2363435b18303b1446e5e725295ad02a2900d0f0e03878732800d0ece00699081d0690022013e02e2900d0e4e038782a2800d0e0e07878482804d0732802d0682800d0d8e07f1c0699081d0690012009680591c0e767290adda24d7d44722910dd732931d0752933d0782910d0c3e0622916dc482900d1a7e0582900d0bbe0012006e0682900d1a4e0702900d0 +e0000000d3060a90b3e0002004900698011d069100680b9010251fe0632900d1abe0642900d0a4e00698011d069100680b900a25002800d5f7e0002004900de0781ea0e01c460297002183e00698011d069100680b90002004900a250198064602970b9905918d42039402d90746024616e05a1e0b980590284607461446002128463a460b4600f0b9f94a1e9141059a904202d8621e0029efd02346019a039c30465040191a002e02d0002614460be0e2b20026302a344606d107aa1c462d23137023460126019c8a1e0d2a0fd8491e0dd04042009007a8 +e0000000d3060b608019039ad2b2039300f070fa0398301800994018461e002c03d107a82d218155761c002f1cd05d487844039012e0039c0598394600f00ef9294600f047f9605c07a988553846294600f004f9761cbd42074605d804980028e9d1514c7c44e7e707a83146fff7c6fe029feae61c460297474d7d4401e01c4602970199069a131d0693c0b21768002815d001281ad0022838d138780028029f61d03c487844052106e00698011d069100680b900ba80121fff7a0fec5e600203a5c401c002afbd1401e0590002920d0059c002c2ad00021 +e0000000d3060c300e4607e007a81146fff78cfe0021761cb4421dd0b85d0209aa5c07ab5a545a180f230340e85c50708a1cc81c1028e9d21146ece705960029ded13846059d2946fff770fe22462c46029fa24210d890e6224601e0002211460029029f05d007a81446fff75ffe2246059ca24200d880e6a41a154878440121fff754fe641cf8d377e640420b9000260496019814e725460598441c0b4878440121fff743fe641ef8d134462a46a242e2d862e60cb0f0bc01bc03b00047c046ad0b000008080000490a00004309000065090000930a0000 +e0000000d3060d004f0a0000b0b5002a07d000240d68854205d0091d641ca242f8d10020b0bd0120002bfbd01c60b0bd01df002900d170470846fff7f3fd000080b584b0002102910190034801a9fff7efff04b080bdc0460d67006082b00020019002486946fff7e3ffffde8d68006080b584b00191009002486946fff7d8ff04b080bd8183006080b582b00020019002486946fff7ccff02b080bdb187006080b584b0002102910190034801a9fff7bfff04b080bdc046060b0160002934d00123002210b488422cd301242407a14204d2814202d20901 +e0000000d3060dd01b01f8e7e400a14204d2814202d249005b00f8e7884201d3401a1a434c08a04202d3001b5c0822438c08a04202d3001b9c082243cc08a04202d3001bdc082243002803d01b0901d00909e3e7100010bc704701b5002000f00bf802bd0029f8d003b5fff7c1ff0ebc4243891a1847c0467047c046002b11d1002a0fd1002900d1002802d00021c943080007b4024802a14018029003bdc046d9ffffff03b4684601b5029800f02af8019b9e4602b00cbc7047c046f7b5019383b29c460600030c60460d00614697b27843140c5f436343 +e0000000d3060ea04c43010c8c46e4196444a74202d9802149025b1801996a437143270cfb182404c91880b22018891803b0f0bdf0b506000f0015001c0085b08b4263d801d1824260d82100280000f079f839000090300000f074f8009b21001b1a1a002800039300f060f800900191b94245d801d1b04242d8009b019c01200021039af61aa74100f050f804000d00039b002b2bd0019b009adb0750081843019b5908039b9c46b9422cd801d1b04229d832003b00121a8b41012692185b410027b6185f4101235b429c446346002bead130003900039a +e0000000d3060f7000f01cf8039aa4197d4106000f0000f021f8241a8d410a9b002b01d01e605f602000290005b0f0bd00240025c4e7b6197f41dce700240025ede70000d0400b00d1409c46203ad3401843524263469340184370479140030090409c46203a9340194352426346d3401943704710b5002903d100f007f8203002e0080000f002f810bdc0461c2101231b04984201d3000c10391b0a984201d3000a08391b09984201d30009043902a2105c40187047c0460403020201010101000000000000000010b5002200f00af810bdc04610b500f0 +e0000000d306104031f810bd10b500f07ff810bd0b0010b511001a0000f0cef810bdc04630b5032a0cd903000b439b0719d103680c68a34215d1043a04300431032af6d8551e002a0bd0002303e05a1c9d4206d01300c25ccc5ca242f7d0101b00e0002030bd551eefe7c046f0b5c64600b50f2a41d903270d003e0005430c0003002e402f423dd11500103d2d09a8462d01ac46844427681d001f6067685f60a7689f60e7681034df6010336545f2d145460f230c2401352d01491913404519144222d08c59ac5104369c1b032cf9d8043b9b0801339b00 +e0000000d3061110ed18c91803231a40561e002a06d00023cc5c1a00ec5401339642f9d180bcb846f0bd0500561e002af1d1f7e70500561eede71a00f6e7c046f0b588420ad98b18984207d2531e002a03d0ca5cc254013bfbd2f0bd0f2a0bd80500561e002af8d00023cc5c1a00ec5401339642f9d1f0e703270d003e0005430c0003002e402f422bd11500103d2d09ac462f013f1825681d6065685d60a5689d60e5681034dd601d001033bd42f2d165460f230c2401352d01491913404519144211d08c59ac5104369c1b032cf9d8043b9b0801339b00 +e0000000d30611e0ed18c91803231a40bfe70500561ebfe71a00bae7f0b50500830749d0541e002a45d003000326cab202e00135013c3ed301332a703342f8d1032c30d9ff220a40150215432a0415430f2c34d92700103f3f093e01b4461e001a0010366644156055609560d5601032b242f8d101373f01db190f270c22274022403c00002a0ed03e1fb608b400a4461a001c1d644420c2a242fcd103240136b6009b193c40002c05d0c9b21c19197001339c42fbd1f0bd03001400c0e72700e2e7c046f0c041464a4653465c466d4676467ec02838f0c8 +e0000000d30612b00020704710307cc890469946a246ab46b54608c82838f0c8080000d10120184770b5002a1fd00300851802e00133ab4202d01c78002cf9d11e1a951bb24213d00c780a00002c0ad0012d02d01c70013d013354780132002cf6d1521ab61800221a70300070bd0026080000f02bf83618f7e7c046f0b50500002a13d0501e012a19d000234f1c6e1c02e00133984216d0f418a446cc5cfa18ec54002cf5d1501a0138f0bd0a00130001335c1e24781a00002cf9d1f3e70a0000232b70f3e76546fae7c04610b583070ad00300032102e0 +e0000000d306138001330b4205d01a78002af9d1181a10bd030019680c4a0d4c8a188a4322420fd15968094a04338a188a43224208d15968054a04338a188a432242f1d000e001331a78002afbd1e1e7fffefefe8080808010b503004418002903d109e001339c4204d01a78002af9d1181a10bd201afce70020fae730780030313233343536373839616263646566004552524f52003000506c7567696e20706172616d65746572732073747275637475726520697320626967676572207468616e20616c6c6f7765642073697a650a004572726f723a20 +e0000000d306145073656c6563746f72206e6f7420666f756e64210a004572726f723a206f766572666c6f77206465746563746564206f6e2073656c6563746f7220696e646578210a004d697373696e672073656c6563746f72496e6465783a2025640a00706c7567696e2070726f7669646520706172616d657465723a206f66667365742025640a42797465733a20252e2a480a0053656c6563746f7220496e646578206e6f7420737570706f727465643a2025640a00506172616d206e6f7420737570706f727465643a2025640a00506c7567696e42 +e0000000d30615206f696c6572706c61746500537761700053656c6563746f7220696e6465783a202564206e6f7420737570706f727465640a00526563656976656420616e20696e76616c69642073637265656e496e6465780a0053656e64004554480052656365697665204d696e2e0042656e65666963696172790045786974696e6720666f6c6c6f77696e6720657863657074696f6e3a2025640a00457468657265756d00556e68616e646c6564206d6573736167652025640a005265636569766564206e756c6c20706172616d65746572730a0065 +e0000000a40615f07863657074696f6e5b3078253034585d3a204c523d3078253038580a002000303132333435363738396162636465663031323334353637383941424344454600b56af37f4242371300000000000000000111506c7567696e426f696c6572706c6174650205312e302e3003290100000000ffffff00ffffffffffff3fff3fff07f807f807f81fe01fe007f8c7f8c7f8ffffffffffff040a01028000002c8000003c +e00000000107 +e00000000908000000001691d417 +e00000000109 diff --git a/tests/plugin_binaries/nanos/bin/app.elf b/tests/plugin_binaries/nanos/bin/app.elf new file mode 100644 index 00000000..0811270a Binary files /dev/null and b/tests/plugin_binaries/nanos/bin/app.elf differ diff --git a/tests/plugin_binaries/nanos/bin/app.hex b/tests/plugin_binaries/nanos/bin/app.hex new file mode 100644 index 00000000..96a97d56 --- /dev/null +++ b/tests/plugin_binaries/nanos/bin/app.hex @@ -0,0 +1,365 @@ +:02000004C0D06A +:100000008CB0044662B600F083FC6D46284601F0D1 +:1000100045F9A88585B2002D0ED1684600F0BCFEDA +:100020000A90002C1CD020680E49884202D06168DA +:1000300000F016FC00F08EFE6C460020A0850A98A9 +:1000400000F0AAFE08487844294600F097FC00F02A +:1000500097FEA042EED10A9800F09EFE00F07AFED4 +:1000600000F042FCFF0100004B15000003B4014802 +:100070000BE000003200000003B4014805E000007E +:100080004400000003B40248FFE7024908470000AB +:100090007100000001001200F0B593B003920491CA +:1000A000054601231898014699431E224A40199992 +:1000B0000A430027002A3A4619D1059306AA332499 +:1000C000234600F06FF800285FD006AE3046214688 +:1000D00001F07EF93318221A30497944184601F0AC +:1000E000F7F83046214601F073F90246059B06A851 +:1000F000059280182A4E7E44E95D0F240A092140AA +:10010000715C4170B15C0170801C7F1C142FF3D1B5 +:100110001902039F3846FFF7AFFF002100283AD1AC +:100120002020019006A802900090059B2833012210 +:1001300038460F4605921146029AFFF797FF394657 +:10014000002828D10020049F059B05E0715C059BD9 +:100150003954401C28281AD002461A404308E95C4A +:10016000002A03D021400929F0D902E00909092910 +:10017000ECD906AFFB5C920004275740FB401A07FE +:10018000715C00D52039049FE1E7002103E02820BD +:10019000002139541946084613B0F0BD161300006B +:1001A000FD120000F0B587B00293044600200192D2 +:1001B0000546C7B27B1C029883422BD2009306955A +:1001C0000A250026204605912A46334600F03AFECD +:1001D000049003912A46069D334600F053FE019A8F +:1001E000201A30210143D155681C0921091B3146D1 +:1001F000059B9941049C0399DAD3C0B21654280692 +:10020000009B07D0D05D915DD15590557F1E761C27 +:10021000BE42F7D30298834202D3002007B0F0BD5C +:10022000012007B0F0BDF0B583B0029314460E462E +:100230000746012907D13878302804D102980228CE +:100240003DD200256FE0089BB34222D2B11C0025AD +:10025000029801918142294645D80020F11A04D024 +:100260003A5C2254401C8142FAD1002B024602D053 +:100270002E212154421CB042114632D2331A381872 +:100280001146067866545B1E401C491C002BF8D1B1 +:1002900027E0D91C0025029801918142294622D8E5 +:1002A000991B2E2060703020207000290DD0A01CDA +:1002B0003022009100F0CAFE0098821C06E0002067 +:1002C00060703020207001252DE00222002E1146A2 +:1002D00007D01146387860547F1C761E491C002ECA +:1002E000F8D1002060540298019B83421BD88A42B7 +:1002F0000ED2002303E0521C9142034609D0002B8A +:10030000104600D01846A35C302BF4D00020F2E752 +:1003100000200125002806D000212154401E225C27 +:100320002E2A00D12154284603B0F0BDF0B58BB081 +:1003300014460A46202901D900263AE01D46014606 +:1003400000260A960996089607960696059604963C +:10035000039603AFB81A203000F070FE2021384613 +:1003600000F056F8002809D0022D22D327497944FD +:1003700020462A4600F0D6FF01261AE0002003A9F5 +:100380000A5A52BA0A52801C2028F8D103A8202108 +:1003900000F03EF84742474100280DD02E46A119F3 +:1003A000AD1B20462A4600F04DFE00206055012678 +:1003B0007E4030460BB0F0BD0095002DF7D0009E7A +:1003C000019402960024204603AD295B00044618E0 +:1003D0000A273046394600F0EDFC28534743F01B0E +:1003E000A41C202CF0D130210843029E761E019CD3 +:1003F000A05503A8202100F00BF8474247410028F0 +:1004000002D1002EDDD1D2E7009DC8E79C1000008C +:10041000B0B54B1E0A469A4100290ED00378002B36 +:100420000BD101231C468C421A4600D30022A14264 +:1004300003D0055D641C002DF5D001205040B0BDF7 +:10044000F0B59DB0039302920D46074604AC6426B6 +:100450002046314600F0ECFD384629462246334618 +:10046000FFF764FF00282CD0239C229D04A8642160 +:1004700000F0AEFF01900B21039800F0A9FF0746A2 +:10048000C6B2A642224600D832462846039900F05A +:10049000D5FD002E02D02020A8557F1C0298009088 +:1004A000F8B22A18C04303190198C1B204A8FFF793 +:1004B000BAFE002803D06119491E00220A701DB03F +:1004C000F0BD00201DB0F0BD80B5142A00D3142269 +:1004D000891A203100F0B6FD80BD80B5202A00D3F6 +:1004E000202200F0AFFD80BDB0B504460A48A083CD +:1004F000A069A56829462031142200F0AFFD04212F +:10050000A1773435E560002802D003206077B0BDC4 +:1005100002206077B0BDC04602020000B0B582B0D4 +:1005200004460078062827D12069592805D819489B +:10053000784400F023FA00201FE0E5685A2128469D +:1005400000F076FD606900F02FF81349794402222B +:1005500001AB00F0D7FB00280AD05535019828716F +:10056000010A0DD1C1B202290DD22870042004E085 +:100570000A48784400F002FA0120607002B0B0BD71 +:1005800007487844D5E70748784400F0F7F9002099 +:10059000F3E7C046DC0E0000E0100000D30E0000C0 +:1005A000DF0E0000060F00000178090642781204F1 +:1005B0005118827812028918C07808187047000014 +:1005C000B0B504468568C36801690C4878442022A8 +:1005D00000F0D4F9042020755920295C01290CD0A1 +:1005E000002904D12046294600F00CF8B0BD04488B +:1005F000784400F0C3F900202075B0BDDD0E000086 +:10060000EA0E000070B504465820085C0E465636C7 +:10061000002806D020693288121D904244D1002063 +:10062000B0700D4655352A78012A0CDD022A18D003 +:10063000032A22D0042A30D10120B0702870208AE9 +:100640003C30308070BD002A1ED0012A25D1E368DD +:100650003431142208461946FFF736FF052028706A +:1006600070BDE3682031142208461946FFF72CFFBD +:100670000120B0700420287070BDE06800F018F808 +:1006800030800220287070BDE36820220846194699 +:10069000FFF723FF0320287070BD044878441146FB +:1006A00000F06CF90020207570BDC046600E00009F +:1006B000C17F807F0002401880B27047B0B5044609 +:1006C0008068E16805465335002909D0C97F297043 +:1006D000E168483014310B2200F024FE012000E0D4 +:1006E0000020042161756870B0BD0000B0B50446FB +:1006F0008568C06822690C49794400F013FE5920CE +:10070000295C002906D00A48784400F037F9002017 +:100710002077B0BD6069A2690449794400F002FE07 +:1007200004202077B0BDC0461D0E00000D0E000055 +:10073000240E000070B50446C569406AA16A00F045 +:1007400077FCE06A216B00F073FC2020205C2646D9 +:100750002036022807D001280AD000280DD12046D3 +:1007600000F018F80EE02046294600F059F809E09C +:100770002046294600F02CF804E00548784400F0B3 +:10078000FDF80020411E88418000307570BDC046D4 +:10079000D20D000010B582B00446406AA26A0A4930 +:1007A000794400F0BFFD606800686221415CE26A44 +:1007B000236B0092019342301222044B7B44FFF7DB +:1007C0003FFE02B010BDC046CF0D0000B80D0000C6 +:1007D000B0B582B00D460446406AA26A0F4979441A +:1007E00000F0A0FD5320285C294653314978E26A85 +:1007F000236B00920193002904D02C464834002931 +:1008000003D003E01034002900D11220C2B220210D +:1008100028462346FFF714FE02B0B0BD9A0D000033 +:10082000B0B582B00C460546406AAA6A0B497944C5 +:1008300000F078FDE86A30210170E86A78214170A3 +:1008400028680268E86A0021009101912034811C27 +:100850002046FFF721FC02B0B0BDC046570D000096 +:1008600080B5002912D00246FF20034604339A4285 +:1008700011DC023082421DD08120400082421DD016 +:100880009A4227D10846FFF72FFE80BD15487844CD +:1008900000F074F880BD41239B009A4212D00630CC +:1008A000824213D083204000824213D10846FFF7D2 +:1008B00041FF80BD0846FFF731FE80BD0846FFF7C7 +:1008C0007FFE80BD0846FFF7F9FE80BD0846FFF7B2 +:1008D0000DFF80BD02487844114600F04FF880BDFE +:1008E000E50C0000430D000080B586B000200590A7 +:1008F0000490064878440190012003900002029081 +:1009000001A800F019FA06B080BDC046BE0C000078 +:1009100080B5002000F040FA80BD0000044670461B +:1009200000F00EF8024605487844214600F026F80B +:1009300000F026FA214600F0BDFCC046C30C0000C2 +:1009400003497944401A0149401870470000DEC04D +:10095000BBF6FFFFB0B582B00C46054601A881701A +:100960005F210170210A4170032100F0FDF9A1B25D +:10097000284600F0F9F902B0B0BD000083B0F0B530 +:100980008CB011AC0EC4002800D1A7E1074611A815 +:1009900006903878002800D1A0E10120019004E001 +:1009A000BF193878002800D198E10026B85D0028EA +:1009B00003D0252801D0761CF8E738463146FFF7EA +:1009C000C9FFB85D2528EBD1B819471C00232024A6 +:1009D0000593184601E0104619D139787F1C002292 +:1009E0002D29F8DD472937DC0A46303A0A2A1CD27D +:1009F000039430221D460B4653402C462B4300D017 +:100A0000039A0A2363435B18303B1446E5E7252924 +:100A10005AD02A2900D0F0E03878732800D0ECE0D2 +:100A20000699081D0690022013E02E2900D0E4E06C +:100A300038782A2800D0E0E07878482804D0732855 +:100A400002D0682800D0D8E07F1C0699081D0690C7 +:100A5000012009680591C0E767290ADDA24D7D44A0 +:100A6000722910DD732931D0752933D0782910D03F +:100A7000C3E0622916DC482900D1A7E0582900D03C +:100A8000BBE0012006E0682900D1A4E0702900D075 +:100A9000B3E0002004900698011D069100680B90B9 +:100AA00010251FE0632900D1ABE0642900D0A4E049 +:100AB0000698011D069100680B900A25002800D5B4 +:100AC000F7E0002004900DE0781EA0E01C4602979D +:100AD000002183E00698011D069100680B9000201C +:100AE00004900A250198064602970B9905918D42BC +:100AF000039402D90746024616E05A1E0B98059049 +:100B0000284607461446002128463A460B4600F080 +:100B1000B9F94A1E9141059A904202D8621E0029F5 +:100B2000EFD02346019A039C30465040191A002EFC +:100B300002D0002614460BE0E2B20026302A3446EA +:100B400006D107AA1C462D23137023460126019CBB +:100B50008A1E0D2A0FD8491E0DD04042009007A8CA +:100B60008019039AD2B2039300F070FA03983018F8 +:100B700000994018461E002C03D107A82D2181554D +:100B8000761C002F1CD05D487844039012E0039C33 +:100B90000598394600F00EF9294600F047F9605CE7 +:100BA00007A988553846294600F004F9761CBD424D +:100BB000074605D804980028E9D1514C7C44E7E762 +:100BC00007A83146FFF7C6FE029FEAE61C460297D9 +:100BD000474D7D4401E01C4602970199069A131D7A +:100BE0000693C0B21768002815D001281AD0022831 +:100BF00038D138780028029F61D03C4878440521DC +:100C000006E00698011D069100680B900BA80121D3 +:100C1000FFF7A0FEC5E600203A5C401C002AFBD18D +:100C2000401E0590002920D0059C002C2AD00021D0 +:100C30000E4607E007A81146FFF78CFE0021761C40 +:100C4000B4421DD0B85D0209AA5C07AB5A545A18C9 +:100C50000F230340E85C50708A1CC81C1028E9D29E +:100C60001146ECE705960029DED13846059D294658 +:100C7000FFF770FE22462C46029FA24210D890E653 +:100C8000224601E0002211460029029F05D007A854 +:100C90001446FFF75FFE2246059CA24200D880E67C +:100CA000A41A154878440121FFF754FE641CF8D3B8 +:100CB00077E640420B9000260496019814E72546FB +:100CC0000598441C0B4878440121FFF743FE641E3D +:100CD000F8D134462A46A242E2D862E60CB0F0BC13 +:100CE00001BC03B00047C046AD0B0000080800007F +:100CF000490A00004309000065090000930A00004A +:100D00004F0A0000B0B5002A07D000240D688542C4 +:100D100005D0091D641CA242F8D10020B0BD0120FD +:100D2000002BFBD01C60B0BD01DF002900D1704753 +:100D30000846FFF7F3FD000080B584B00021029162 +:100D40000190034801A9FFF7EFFF04B080BDC04642 +:100D50000D67006082B00020019002486946FFF7ED +:100D6000E3FFFFDE8D68006080B584B001910090E4 +:100D700002486946FFF7D8FF04B080BD8183006058 +:100D800080B582B00020019002486946FFF7CCFF91 +:100D900002B080BDB187006080B584B000210291AF +:100DA0000190034801A9FFF7BFFF04B080BDC04612 +:100DB000060B0160002934D00123002210B48842C0 +:100DC0002CD301242407A14204D2814202D209017A +:100DD0001B01F8E7E400A14204D2814202D249009B +:100DE0005B00F8E7884201D3401A1A434C08A0423E +:100DF00002D3001B5C0822438C08A04202D3001BD4 +:100E00009C082243CC08A04202D3001BDC082243EA +:100E1000002803D01B0901D00909E3E7100010BC2A +:100E2000704701B5002000F00BF802BD0029F8D092 +:100E300003B5FFF7C1FF0EBC4243891A1847C046ED +:100E40007047C046002B11D1002A0FD1002900D1D4 +:100E5000002802D00021C943080007B4024802A1BB +:100E60004018029003BDC046D9FFFFFF03B4684697 +:100E700001B5029800F02AF8019B9E4602B00CBC16 +:100E80007047C046F7B5019383B29C460600030C39 +:100E900060460D00614697B27843140C5F4363438C +:100EA0004C43010C8C46E4196444A74202D98021CA +:100EB00049025B1801996A437143270CFB1824040B +:100EC000C91880B22018891803B0F0BDF0B506002B +:100ED0000F0015001C0085B08B4263D801D18242FF +:100EE00060D82100280000F079F839000090300027 +:100EF00000F074F8009B21001B1A1A0028000393CD +:100F000000F060F800900191B94245D801D1B0429B +:100F100042D8009B019C01200021039AF61AA741A8 +:100F200000F050F804000D00039B002B2BD0019B18 +:100F3000009ADB0750081843019B5908039B9C4605 +:100F4000B9422CD801D1B04229D832003B00121A44 +:100F50008B41012692185B410027B6185F4101239F +:100F60005B429C446346002BEAD130003900039A6F +:100F700000F01CF8039AA4197D4106000F0000F050 +:100F800021F8241A8D410A9B002B01D01E605F605E +:100F90002000290005B0F0BD00240025C4E7B619E3 +:100FA0007F41DCE700240025EDE70000D0400B0086 +:100FB000D1409C46203AD340184352426346934066 +:100FC000184370479140030090409C46203A93405C +:100FD000194352426346D3401943704710B5002964 +:100FE00003D100F007F8203002E0080000F002F81A +:100FF00010BDC0461C2101231B04984201D3000CE4 +:1010000010391B0A984201D3000A08391B0998427B +:1010100001D30009043902A2105C40187047C04691 +:1010200004030202010101010000000000000000B1 +:1010300010B5002200F00AF810BDC04610B500F04F +:1010400031F810BD10B500F07FF810BD0B0010B5E1 +:1010500011001A0000F0CEF810BDC04630B5032ACA +:101060000CD903000B439B0719D103680C68A342FA +:1010700015D1043A04300431032AF6D8551E002A4B +:101080000BD0002303E05A1C9D4206D01300C25C23 +:10109000CC5CA242F7D0101B00E0002030BD551EF2 +:1010A000EFE7C046F0B5C64600B50F2A41D9032781 +:1010B0000D003E0005430C0003002E402F423DD1A1 +:1010C0001500103D2D09A8462D01AC468444276823 +:1010D0001D001F6067685F60A7689F60E768103445 +:1010E000DF6010336545F2D145460F230C240135EE +:1010F0002D01491913404519144222D08C59AC5185 +:1011000004369C1B032CF9D8043B9B0801339B003D +:10111000ED18C91803231A40561E002A06D00023D2 +:10112000CC5C1A00EC5401339642F9D180BCB8462D +:10113000F0BD0500561E002AF1D1F7E70500561E46 +:10114000EDE71A00F6E7C046F0B588420AD98B18D9 +:10115000984207D2531E002A03D0CA5CC254013BF6 +:10116000FBD2F0BD0F2A0BD80500561E002AF8D07E +:101170000023CC5C1A00EC5401339642F9D1F0E71D +:1011800003270D003E0005430C0003002E402F42B4 +:101190002BD11500103D2D09AC462F013F182568B5 +:1011A0001D6065685D60A5689D60E5681034DD6060 +:1011B0001D001033BD42F2D165460F230C240135CA +:1011C0002D01491913404519144211D08C59AC51C5 +:1011D00004369C1B032CF9D8043B9B0801339B006D +:1011E000ED18C91803231A40BFE70500561EBFE7D4 +:1011F0001A00BAE7F0B50500830749D0541E002A4B +:1012000045D003000326CAB202E00135013C3ED3BB +:1012100001332A703342F8D1032C30D9FF220A401F +:10122000150215432A0415430F2C34D92700103F0B +:101230003F093E01B4461E001A0010366644156090 +:1012400055609560D5601032B242F8D101373F0148 +:10125000DB190F270C22274022403C00002A0ED029 +:101260003E1FB608B400A4461A001C1D644420C2E8 +:10127000A242FCD103240136B6009B193C40002C4D +:1012800005D0C9B21C19197001339C42FBD1F0BDC5 +:1012900003001400C0E72700E2E7C046F0C0414663 +:1012A0004A4653465C466D4676467EC02838F0C8AE +:1012B0000020704710307CC890469946A246AB4645 +:1012C000B54608C82838F0C8080000D101201847E2 +:1012D00070B5002A1FD00300851802E00133AB422D +:1012E00002D01C78002CF9D11E1A951BB24213D0E3 +:1012F0000C780A00002C0AD0012D02D01C70013D90 +:10130000013354780132002CF6D1521AB61800225B +:101310001A70300070BD0026080000F02BF8361857 +:10132000F7E7C046F0B50500002A13D0501E012A89 +:1013300019D000234F1C6E1C02E00133984216D0D6 +:10134000F418A446CC5CFA18EC54002CF5D1501AD1 +:101350000138F0BD0A00130001335C1E24781A0026 +:10136000002CF9D1F3E70A0000232B70F3E7654660 +:10137000FAE7C04610B583070AD00300032102E054 +:1013800001330B4205D01A78002AF9D1181A10BD82 +:10139000030019680C4A0D4C8A188A4322420FD167 +:1013A0005968094A04338A188A43224208D1596885 +:1013B000054A04338A188A432242F1D000E00133FF +:1013C0001A78002AFBD1E1E7FFFEFEFE80808080D4 +:1013D00010B503004418002903D109E001339C42F1 +:1013E00004D01A78002AF9D1181A10BD201AFCE787 +:1013F0000020FAE730780030313233343536373870 +:1014000039616263646566004552524F5200300094 +:10141000506C7567696E20706172616D657465727C +:1014200073207374727563747572652069732062BA +:101430006967676572207468616E20616C6C6F7794 +:1014400065642073697A650A004572726F723A208A +:1014500073656C6563746F72206E6F7420666F7550 +:101460006E64210A004572726F723A206F7665725F +:10147000666C6F77206465746563746564206F6E55 +:101480002073656C6563746F7220696E6465782182 +:101490000A004D697373696E672073656C656374C8 +:1014A0006F72496E6465783A2025640A00706C7525 +:1014B00067696E2070726F76696465207061726111 +:1014C0006D657465723A206F666673657420256475 +:1014D0000A42797465733A20252E2A480A0053651A +:1014E0006C6563746F7220496E646578206E6F74EA +:1014F00020737570706F727465643A2025640A00F9 +:10150000506172616D206E6F7420737570706F72B0 +:101510007465643A2025640A00506C7567696E42F0 +:101520006F696C6572706C617465005377617000EF +:1015300053656C6563746F7220696E6465783A20D8 +:101540002564206E6F7420737570706F727465649B +:101550000A00526563656976656420616E20696E74 +:1015600076616C69642073637265656E496E64654B +:10157000780A0053656E64004554480052656365FF +:10158000697665204D696E2E0042656E65666963F9 +:10159000696172790045786974696E6720666F6C5D +:1015A0006C6F77696E6720657863657074696F6EBC +:1015B0003A2025640A00457468657265756D0055AA +:1015C0006E68616E646C6564206D657373616765D8 +:1015D0002025640A005265636569766564206E752E +:1015E0006C6C20706172616D65746572730A006560 +:1015F0007863657074696F6E5B3078253034585D40 +:101600003A204C523D3078253038580A00200030BE +:101610003132333435363738396162636465663068 +:101620003132333435363738394142434445460048 +:10163000B56AF37F4242371300000000000000004B +:101640000111506C7567696E426F696C6572706CE0 +:101650006174650205312E302E300329010000002F +:1016600000FFFFFF00FFFFFFFFFFFF3FFF3FFF0700 +:10167000F807F807F81FE01FE007F8C7F8C7F8FFFA +:10168000FFFFFFFFFF040A01028000002C80000022 +:011690003C1D +:04000005C0D0000166 +:00000001FF diff --git a/tests/plugin_binaries/nanos/bin/app.sha256 b/tests/plugin_binaries/nanos/bin/app.sha256 new file mode 100644 index 00000000..8973aef9 --- /dev/null +++ b/tests/plugin_binaries/nanos/bin/app.sha256 @@ -0,0 +1 @@ +f638b583ee25e4877175c655bbacdbad2b3228dfb58b5b9bebedca6bc55b1d63 diff --git a/tests/plugin_binaries/nanos2/bin/app.apdu b/tests/plugin_binaries/nanos2/bin/app.apdu new file mode 100644 index 00000000..3f301518 --- /dev/null +++ b/tests/plugin_binaries/nanos2/bin/app.apdu @@ -0,0 +1,34 @@ +e0000000130c11506c7567696e426f696c6572706c617465 +e0000000160b0100001600000000000000004a0000080000000001 +e0000000050500000000 +e0000000d30600008cb0044662b600f09ffc6d46284601f0b7f881b2adf82c0071b9684600f0c8fe0a90f4b1206840f2ff11884202d0616800f036fc00f09efe0a980c460021adf82c1000f0b5fe08482146784400f0b4fc00f0a4fea842edd10a9800f0a9fe00f089fe00f05dfc00bfc513000003b44ff0470007e003b44ff0590003e003b44ff08600ffe700490847018080002de9f0458fb092460c46dde91621054622f0010383f01e030b4318d102af10463a46332300f06af8d8b33846332101f0aff830493b18c0f133027944184601f067f83846 +e0000000d30600d0332101f0a3f8074600e000270df10808284e07eb080002387e444ff0ff3100bf6a18527801311309f35c02f00f02b25c00f8023f13294270f2d150464ff48071fff7b0ff58b9202007f128030190504601214246cdf80080fff7a0ff18b100200fb0bde8f08500204ff0040c0de000bf18f803108cea8703d940b25c090748bf203a2254013028280bd04308e95c10f0010701f00f0208bf0a09092ae8d8b25cefe7002084f8280001200fb0bde8f08539120000001200002de9f04d984692460f460646002200bfd5b26c1c44452fd2 +e0000000d30601a09346304639460a22002300f00ffed6f109024ff00002ba4100eb8002a6eb420242f030020af805200bf1010206460f46e2d3d0b200215fea0b620af800100fd04ff0ff300aeb00014a781af805300af805204b70811c013da94200f10100f1d30020444538bf0120bde8f08d2de9f04d9b4614460e46012907460fd1387830280cd1bbf1020f4ff0000038bfbde8f08d3021217060700120bde8f08dddf820c0b44505d206f1020ede4507d9002040e00cf1030ada4513d9002072e0b6eb0c021ed0aceb06034ff0ff3200bfb918a518 +e0000000d306027001324978981801306970f7d1531c10e03020bceb060820704ff02e00607048d0a01c4146302200f02eff08f1020c42e00023bcf1000f9c461ebf03f1010c2e20e054b34260460ad2d819471ef31a624617f8011f501ca154013b0246f8d100212154de4584bf0020bde8f08d002384454ff0000111d24242acf10100002100bf27187f780130002908bf0146302f02eb000718bf19460137f2d1002993d0481e235c00222e2b625408bf22540120bde8f08d4ff0020c60464eb1791e634600bf11f8012f581ce254013e0346f8d10021 +e0000000d30603402154da4584bf0020bde8f08dc6e700002de9f04589b092460a460146202a4ff000003cd801aecde90700cde90500cde90300cde90100b01a2030984600f0b7fe3046202100f066f830b1b8f1020f29d2002009b0bde8f085002000bf36f8101009ba090c26f8101001301028f6d101ae3046202100f04ef8b0fa80f14fea5114d0b14746a8eb07050aeb070150462a4600f08ffe00200af8050084f0010009b0bde8f0851a4950467944424600f0f9fe012009b0bde8f085b8f1000fedd0134d474600bf0020002136f8102042ea0141 +e0000000d3060410a1fb0523da0802eb820326f8102001301028a1eb4301efd1013f41f030000af807003046202100f00df8b0fa80f100284fea5114bed1002fdcd1c6e7cdcccccce10e000000298c4618bf4ff0010c0fd003786bb9012300bf8b424ff0000c38bf4ff0010c994203d0c25c0133002af3d08cf0010070472de9f04d9ab001ac0d460746204664211e46924600f025fe3846294622466423fff753ff80b3dde9228b01a8642100f0b2fe074630460b2100f0adfec4b205462246404631465c4588bf5a4600f00cfe002c1ebf0135202008f8 +e0000000d30604e00400e8b208eb0002c043f9b200eb0b0301a8cdf800a0fff789fe00281ebf0beb0801002201f8012c1ab0bde8f08d00201ab0bde8f08d80b5142a28bf1422891a203100f0e6fd80bd80b5202a28bf202200f0dffd80bdb0b5044640f20220a568a083a06905f12001142200f0d9fd0321002805f1340008bf0221e06004206177a077b0bdb0b582b004460078062828d12069592805d81948784400f01dfa002020e0e5685a21284600f0aefd606900f02ff8134901ab7944022200f0c1fb60b10198b0f5807f85f859000ed2c1b20229 +e0000000d30605b00ed285f85500042004e00a48784400f0fbf90120607002b0b0bd07487844d4e70648784400f0f0f90020f3e7b80c0000d60e0000e80c0000980d00005e0e00004278017883781204c07842ea016141ea0321084470470000b0b50446d0e9025301690c482022784400f0cef995f8591004200129207508bfb0bd21b92046294600f00cf8b0bd0448784400f0bdf900202075b0bdb60d0000ca0c0000b0b50c4691f85810054649b1b4f8560029690430814218bfb0bd002084f8580094f8551001290fdd02291ad0032925d0042935d1 +e0000000d3060680288a3c30a4f85600012084f8580084f85500b0bd09b3012928d1e96804f134001422fff738ff052084f85500b0bde96804f120001422fff72eff042084f85500012084f85800b0bde86800f019f8a4f85600022084f85500b0bde96820462022fff722ff032084f85500b0bd0348784400f062f900202875b0bd00bfdd0b0000817fc07f40ea012080b27047b0b50446c068a56858b1c07fe16885f8530005f1480014310b2200f05cfd012000e0002085f8540004206075b0bd0000b0b50446d0e9025022690b49794400f04afd95f8 +e0000000d3060750591031b10948784400f02ef900202077b0bdd4e905020449794400f03afd04202077b0bdb50c0000370b0000130b0000b0b50446c569406aa16a00f0adfcd4e90b0100f0a9fc94f82000022806d0012809d068b9204600f019f80ee02046294600f056f809e02046294600f02df804e00548784400f0f8f80020002818bf042084f83400b0bd00bfcf0b000010b582b00446406aa26a0a49794400f0fafc6068e26a0068246b90f862100092054b42307b4412220194fff73efe02b010bd00bfa30a0000e40a0000b0b582b00446406a +e0000000d3060820a26a0d460d49794400f0dbfc95f8540005f1480395f85310002808bf04f11003d4e90b0408bf12210090cab2284620210194fff718fe02b0b0bd00bf6a0a0000b0b582b00446406aa26a0d460b49794400f0b7fce06a30210170e06a782141702168e36a0a6805f12000991c0023cde90033fff7fbfb02b0b0bd00bfcc0a000080b591b10246b0f5827f13da40f2011082421bd0b2f5817f1cd040f20310824224d10846fff737fe80bd1448784400f073f880bd12d040f20510824212d0b2f5837f13d10846fff74bff80bd0846fff7 +e0000000d30608f039fe80bd0846fff787fe80bd0846fff705ff80bd0846fff719ff80bd02481146784400f051f880bd140a0000e60a000080b586b00748784401904ff480700290012003900020cde9040001a800f00cfa06b080bd9a09000080b5002000f030fa80bd00000446704600f00ef8024605482146784400f028f800f018fa214600f00dfc00bfe40900000349024a7944401a104470470000dec081f6ffffb0b582b005465f208df80400080a0c468df805008df8061001a8032100f0ecf9a1b2284600f0e8f902b0b0bd83b02de9f04d89b0 +e0000000d30609c0cde91112139320b10446007811a9039158b909b0bde8f04d03b0704741466c1efff7d4ff20780028f3d00026a05d18b1252801d00136f9e720463146a519fff7c5ffa05d2c462528ecd1691c00274ff0200c4ff0000800204d1c15f8011c01352d2915dc4ff00000f7d0252974d02a2940f00281294611f8010d732840f0fc800398021d0392d0f800800220e4e700bf472929dca1f130020a2a0dd281f030023a4307eb870201eb420108bf4ff0300ca1f13007691ecfe72e2940f0dd8015f8010c2a2840f0d8802878482804d07328 +e0000000d3060a9002d0682840f0d0800399081d0390d1f8008001202946b7e7672908dd722910dd732933d0752936d0782910d0bce0622916dc482900f0a280582940f0b580012406e0682900f09d80702940f0ad80002403981026011d039100680890012022e0632900f0a580642940f09e800398011d03910068b0f1ff3f089011dc4042089000200a2600240ee0a81e97e07a4979448a46002179e00398011d039100680890002401200a26ddf820a0564502d94ff0010b10e0ddf820a07b1e31468b46a6fb0112002a18bf012251451f4603d8002a +e0000000d3060b60a7f10103f2d018b14ff0000801230de05ffa8cf1302906d12d2101234ff001088df8101002e000234ff0000880f00100391a8a1e0d2a11d801390fd04042019004a840445ffa8cf2029300f0a4fa019908eb0700029b0844a0f10108002b04a802bf2d2100f8081008f10108bbf1000f3ff404af5049a8f101077944bafbfbf2002cb2fbf6f303fb16224c4b7b4408bf0b469a5c5e45bbfbf6fb00eb070307f101075a70ead907f10108e7e63f49794401e03c4979448a460121039ac0b2131d0393d2f800b0b0b101281cd002283dd1 +e0000000d3060c309bf80000002857d031480521784406e00398011d03910068089008a80121fff79dfe6c1ec6e600201bf800200130002afad1a0f1010821b3b8f1000f27d00021002604af03e000bf0136b0451cd01bf806007b18020900f00f001af800001af802205870c81c7a54102801f102015446ead33846fff772fe0021e5e7b0460029dad15846414606e0474619b905e00027002111b104a8fff761fe4745a5f101047ff688aea8eb07050e4801217844fff755fe0135f8d37de608f10104084801217844fff74bfe013cf8d1b046e5e700bf +e0000000d3060d00bd060000370800002d0900004d080000ad050000c1050000710800006f08000080b54ab14ff0000c51f82ce0864505d00cf1010c6245f7d1002080bd1bb10120c3f800c080bd012080bd01df002900d170470846fff7fefd80b582b000900020019003486946fff7f0ff02b080bd00bf6700000182b00020019069466820fff7e4ffffde80b582b0cde9000102486946fff7dbff02b080bd8300000280b582b00020019069468720fff7cfff02b080bd80b582b000900020019003486946fff7c4ff02b080bd00bf0b01000153b94ab9 +e0000000d3060dd0002908bf00281cbf4ff0ff314ff0ff3000f00cb8adf1080c6de904ce00f008f8ddf804e0dde9022304b07047704700bf2de9f04f099e0d4604460f46002b47d18a4294465fd9b2fa82f343b1c3f120019f4002fa03fc9c4020fa01f10f434fea1c451ffa8cfe220cb7fbf5f105fb117701fb0ef042ea0742904208d91ceb020201f1ff3702d2904200f234813946121aa4b2b2fbf5f005fb102200fb0efe44ea0244a64508d91ceb040400f1ff3202d2a64500f21981104640ea0140a4eb0e0400211eb1dc400023c6e90043bde8f08f +e0000000d3060ea08b4208d9002e00f0fb800021c6e900050846bde8f08fb3fa83f100294bd1ab42c0f0f180824240f2ee800846002ee5d0c6e90047e2e702b9ffdeb2fa82f3002b40f09d808d1a4fea124e97b20121b5fbfef20efb1250250c45ea004507fb02f0a8420fd91ceb050502f1ff382cbf4ff001094ff00009a84203d9b9f1000f00f0ce8042462d1aa4b2b5fbfef00efb105500fb07f744ea0544a74208d91ceb040400f1ff3502d2a74200f2b3802846e41b40ea02409de7c1f120078b4005fa01f422fa07fcfd408a404cea030c20fa07f3 +e0000000d3060f704fea1c491c431ffa8cfe00fa01f3200cb5fbf9f809fb185540ea054508fb0ef0a8420fd91ceb050508f1ff3a2cbf4ff0010b4ff0000ba84203d9bbf1000f00f08c80d0462d1aa4b2b5fbf9f009fb105500fb0efe44ea0545ae4507d91ceb050500f1ff3401d2ae457ed8204640ea0840a5eb0e05a0fb029845454c46c64602d306d14b4504d20138b9eb020468eb0c0e002e6fd01a1b65eb0e0522fa01f305fa07f7cd4000211f43c6e900753ee702fa03fcc3f1200001fa03f24fea1c4ec14024fa00f51ffa8cf79c401543b1fbfef0 +e0000000d30610402a0c0efb101142ea014200fb07f191420ed91ceb020200f1ff382cbf4ff001094ff00009914202d9b9f1000f31d04046521aadb2b2fbfef10efb112245ea024501fb07f2aa4207d91ceb050501f1ff3801d2aa4223d84146ad1a41ea004126e731463046fae6841a65eb030301201f460ce7644402384ae764440238e4e6023a65442fe702396244c9e6a8f10208654470e702386244cbe7023865447ee702396544d9e73146d9e6002200f004b800f017b800f022b813460a46194600f037b80139024410b5904201d1002005e00378 +e0000000d306111011f8014fa34201d0181b10bd0130f2e70a44431e914200d1704710b511f8014b914203f8014ff9d110bd884210b501eb020402d98442234607d8431ea14208d011f8012b03f8012ff8e7024401468a4200d110bd13f8014d02f8014df7e702440346934200d1704703f8011bf9e70000ec46a0e8f05f4ff000007047b0e8f05fe546080008bf0120704700bf70b50446084616192146b1420b4606d11c1b121b08d100f02bf8204470bd1d780131002df1d1f3e70646314616f8015b15b9081a1d70f0e7012a1cbf02f1ff3203f8015b +e0000000d30611e0f1e70b4610b562b1013a08d013f8014b00f8014b002cf7d1581a013810bd0022027013f8012b002afbd1f5e7034613f8012b002afbd1181a013870470246014410b58a42134603d01c780132002cf8d1181a10bd506c7567696e20706172616d65746572732073747275637475726520697320626967676572207468616e20616c6c6f7765642073697a650a0053656c6563746f7220696e6465783a202564206e6f7420737570706f727465640a0053656e640052656365697665204d696e2e00200053776170004572726f723a2073 +e0000000d30612b0656c6563746f72206e6f7420666f756e64210a00457468657265756d003000506172616d206e6f7420737570706f727465643a2025640a004554480030313233343536373839616263646566004552524f520030780053656c6563746f7220496e646578206e6f7420737570706f727465643a2025640a00556e68616e646c6564206d6573736167652025640a0042656e656669636961727900657863657074696f6e5b3078253034585d3a204c523d3078253038580a004572726f723a206f766572666c6f77206465746563746564 +e0000000d3061380206f6e2073656c6563746f7220696e646578210a00526563656976656420616e20696e76616c69642073637265656e496e6465780a005265636569766564206e756c6c20706172616d65746572730a00706c7567696e2070726f7669646520706172616d657465723a206f66667365742025640a42797465733a20252e2a480a00506c7567696e426f696c6572706c6174650045786974696e6720666f6c6c6f77696e6720657863657074696f6e3a2025640a004d697373696e672073656c6563746f72496e6465783a2025640a0030 +e0000000d30614503132333435363738396162636465663031323334353637383941424344454600b56af37f42423713000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +e0000000d306152000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +e00000005d0615f0000000000000000000000000000000000111506c7567696e426f696c6572706c6174650205312e302e3003220100000000ffffff0000000000068001fc03ffc03fc03ff00fffc039700e00000000040a01028000002c8000003c +e00000000107 +e0000000090800000000164a9517 +e00000000109 diff --git a/tests/plugin_binaries/nanos2/bin/app.elf b/tests/plugin_binaries/nanos2/bin/app.elf new file mode 100644 index 00000000..1ee4bc02 Binary files /dev/null and b/tests/plugin_binaries/nanos2/bin/app.elf differ diff --git a/tests/plugin_binaries/nanos2/bin/app.hex b/tests/plugin_binaries/nanos2/bin/app.hex new file mode 100644 index 00000000..68e8b8ce --- /dev/null +++ b/tests/plugin_binaries/nanos2/bin/app.hex @@ -0,0 +1,360 @@ +:02000004C0DE5C +:100000008CB0044662B600F09FFC6D46284601F0B5 +:10001000B7F881B2ADF82C0071B9684600F0C8FE9F +:100020000A90F4B1206840F2FF11884202D0616862 +:1000300000F036FC00F09EFE0A980C460021ADF858 +:100040002C1000F0B5FE08482146784400F0B4FCBE +:1000500000F0A4FEA842EDD10A9800F0A9FE00F03D +:1000600089FE00F05DFC00BFC513000003B44FF033 +:10007000470007E003B44FF0590003E003B44FF02A +:100080008600FFE700490847018080002DE9F04520 +:100090008FB092460C46DDE91621054622F0010399 +:1000A00083F01E030B4318D102AF10463A463323A8 +:1000B00000F06AF8D8B33846332101F0AFF8304980 +:1000C0003B18C0F133027944184601F067F838460E +:1000D000332101F0A3F8074600E000270DF10808DE +:1000E000284E07EB080002387E444FF0FF3100BF76 +:1000F0006A18527801311309F35C02F00F02B25C06 +:1001000000F8023F13294270F2D150464FF480713B +:10011000FFF7B0FF58B9202007F12803019050469F +:1001200001214246CDF80080FFF7A0FF18B1002062 +:100130000FB0BDE8F08500204FF0040C0DE000BFCB +:1001400018F803108CEA8703D940B25C090748BF4E +:10015000203A2254013028280BD04308E95C10F0E3 +:10016000010701F00F0208BF0A09092AE8D8B25CAA +:10017000EFE7002084F8280001200FB0BDE8F085EB +:1001800039120000001200002DE9F04D9846924609 +:100190000F460646002200BFD5B26C1C44452FD244 +:1001A0009346304639460A22002300F00FFED6F16E +:1001B00009024FF00002BA4100EB8002A6EB4202B6 +:1001C00042F030020AF805200BF1010206460F4604 +:1001D000E2D3D0B200215FEA0B620AF800100FD020 +:1001E0004FF0FF300AEB00014A781AF805300AF8A0 +:1001F00005204B70811C013DA94200F10100F1D3A3 +:100200000020444538BF0120BDE8F08D2DE9F04DB8 +:100210009B4614460E46012907460FD138783028F0 +:100220000CD1BBF1020F4FF0000038BFBDE8F08DDC +:100230003021217060700120BDE8F08DDDF820C014 +:10024000B44505D206F1020EDE4507D9002040E094 +:100250000CF1030ADA4513D9002072E0B6EB0C0268 +:100260001ED0ACEB06034FF0FF3200BFB918A51843 +:1002700001324978981801306970F7D1531C10E0A9 +:100280003020BCEB060820704FF02E00607048D084 +:10029000A01C4146302200F02EFF08F1020C42E083 +:1002A0000023BCF1000F9C461EBF03F1010C2E2061 +:1002B000E054B34260460AD2D819471EF31A624688 +:1002C00017F8011F501CA154013B0246F8D1002130 +:1002D0002154DE4584BF0020BDE8F08D0023844515 +:1002E0004FF0000111D24242ACF10100002100BFE9 +:1002F00027187F780130002908BF0146302F02EB14 +:10030000000718BF19460137F2D1002993D0481EC3 +:10031000235C00222E2B625408BF22540120BDE82A +:10032000F08D4FF0020C60464EB1791E634600BF5F +:1003300011F8012F581CE254013E0346F8D1002168 +:100340002154DA4584BF0020BDE8F08DC6E70000E7 +:100350002DE9F04589B092460A460146202A4FF021 +:1003600000003CD801AECDE90700CDE90500CDE99C +:100370000300CDE90100B01A2030984600F0B7FE26 +:100380003046202100F066F830B1B8F1020F29D2D2 +:10039000002009B0BDE8F085002000BF36F810103D +:1003A00009BA090C26F8101001301028F6D101AE58 +:1003B0003046202100F04EF8B0FA80F14FEA511497 +:1003C000D0B14746A8EB07050AEB070150462A467D +:1003D00000F08FFE00200AF8050084F0010009B04B +:1003E000BDE8F0851A4950467944424600F0F9FECE +:1003F000012009B0BDE8F085B8F1000FEDD0134D34 +:10040000474600BF0020002136F8102042EA014193 +:10041000A1FB0523DA0802EB820326F81020013045 +:100420001028A1EB4301EFD1013F41F030000AF861 +:1004300007003046202100F00DF8B0FA80F10028C6 +:100440004FEA5114BED1002FDCD1C6E7CDCCCCCCC5 +:10045000E10E000000298C4618BF4FF0010C0FD0B0 +:1004600003786BB9012300BF8B424FF0000C38BFFB +:100470004FF0010C994203D0C25C0133002AF3D043 +:100480008CF0010070472DE9F04D9AB001AC0D469B +:100490000746204664211E46924600F025FE384657 +:1004A000294622466423FFF753FF80B3DDE9228B00 +:1004B00001A8642100F0B2FE074630460B2100F08F +:1004C000ADFEC4B205462246404631465C4588BF73 +:1004D0005A4600F00CFE002C1EBF0135202008F803 +:1004E0000400E8B208EB0002C043F9B200EB0B03D2 +:1004F00001A8CDF800A0FFF789FE00281EBF0BEB76 +:100500000801002201F8012C1AB0BDE8F08D00208E +:100510001AB0BDE8F08D80B5142A28BF1422891ABC +:10052000203100F0E6FD80BD80B5202A28BF2022C2 +:1005300000F0DFFD80BDB0B5044640F20220A568A2 +:10054000A083A06905F12001142200F0D9FD032148 +:10055000002805F1340008BF0221E0600420617723 +:10056000A077B0BDB0B582B004460078062828D187 +:100570002069592805D81948784400F01DFA002050 +:1005800020E0E5685A21284600F0AEFD606900F0E1 +:100590002FF8134901AB7944022200F0C1FB60B18E +:1005A0000198B0F5807F85F859000ED2C1B20229BA +:1005B0000ED285F85500042004E00A48784400F083 +:1005C000FBF90120607002B0B0BD07487844D4E761 +:1005D0000648784400F0F0F90020F3E7B80C00007A +:1005E000D60E0000E80C0000980D00005E0E000022 +:1005F0004278017883781204C07842EA016141EAC6 +:100600000321084470470000B0B50446D0E9025306 +:1006100001690C482022784400F0CEF995F8591071 +:1006200004200129207508BFB0BD21B92046294604 +:1006300000F00CF8B0BD0448784400F0BDF900208B +:100640002075B0BDB60D0000CA0C0000B0B50C4658 +:1006500091F85810054649B1B4F85600296904309C +:10066000814218BFB0BD002084F8580094F855109E +:1006700001290FDD02291AD0032925D0042935D1FB +:10068000288A3C30A4F85600012084F8580084F8E9 +:100690005500B0BD09B3012928D1E96804F134003F +:1006A0001422FFF738FF052084F85500B0BDE96833 +:1006B00004F120001422FFF72EFF042084F85500D7 +:1006C000012084F85800B0BDE86800F019F8A4F8DB +:1006D0005600022084F85500B0BDE968204620226B +:1006E000FFF722FF032084F85500B0BD034878448B +:1006F00000F062F900202875B0BD00BFDD0B0000DE +:10070000817FC07F40EA012080B27047B0B50446C7 +:10071000C068A56858B1C07FE16885F8530005F14D +:10072000480014310B2200F05CFD012000E00020A5 +:1007300085F8540004206075B0BD0000B0B50446D3 +:10074000D0E9025022690B49794400F04AFD95F83E +:10075000591031B10948784400F02EF90020207773 +:10076000B0BDD4E905020449794400F03AFD042003 +:100770002077B0BDB50C0000370B0000130B000054 +:10078000B0B50446C569406AA16A00F0ADFCD4E981 +:100790000B0100F0A9FC94F82000022806D00128E3 +:1007A00009D068B9204600F019F80EE02046294625 +:1007B00000F056F809E02046294600F02DF804E044 +:1007C0000548784400F0F8F80020002818BF0420FD +:1007D00084F83400B0BD00BFCF0B000010B582B06C +:1007E0000446406AA26A0A49794400F0FAFC60684B +:1007F000E26A0068246B90F862100092054B423068 +:100800007B4412220194FFF73EFE02B010BD00BFF0 +:10081000A30A0000E40A0000B0B582B00446406AB2 +:10082000A26A0D460D49794400F0DBFC95F85400AE +:1008300005F1480395F85310002808BF04F1100390 +:10084000D4E90B0408BF12210090CAB22846202127 +:100850000194FFF718FE02B0B0BD00BF6A0A0000A5 +:10086000B0B582B00446406AA26A0D460B4979448D +:1008700000F0B7FCE06A30210170E06A7821417035 +:100880002168E36A0A6805F12000991C0023CDE97C +:100890000033FFF7FBFB02B0B0BD00BFCC0A000085 +:1008A00080B591B10246B0F5827F13DA40F20110B3 +:1008B00082421BD0B2F5817F1CD040F203108242ED +:1008C00024D10846FFF737FE80BD1448784400F075 +:1008D00073F880BD12D040F20510824212D0B2F5FA +:1008E000837F13D10846FFF74BFF80BD0846FFF713 +:1008F00039FE80BD0846FFF787FE80BD0846FFF73A +:1009000005FF80BD0846FFF719FF80BD024811466C +:10091000784400F051F880BD140A0000E60A000097 +:1009200080B586B00748784401904FF480700290FB +:10093000012003900020CDE9040001A800F00CFA8A +:1009400006B080BD9A09000080B5002000F030FAA2 +:1009500080BD00000446704600F00EF802460548CF +:100960002146784400F028F800F018FA214600F0FB +:100970000DFC00BFE40900000349024A7944401A13 +:10098000104470470000DEC081F6FFFFB0B582B0B2 +:1009900005465F208DF80400080A0C468DF8050016 +:1009A0008DF8061001A8032100F0ECF9A1B2284649 +:1009B00000F0E8F902B0B0BD83B02DE9F04D89B088 +:1009C000CDE91112139320B10446007811A90391C7 +:1009D00058B909B0BDE8F04D03B0704741466C1EF0 +:1009E000FFF7D4FF20780028F3D00026A05D18B1CF +:1009F000252801D00136F9E720463146A519FFF731 +:100A0000C5FFA05D2C462528ECD1691C00274FF0BE +:100A1000200C4FF0000800204D1C15F8011C01357A +:100A20002D2915DC4FF00000F7D0252974D02A2994 +:100A300040F00281294611F8010D732840F0FC8036 +:100A40000398021D0392D0F800800220E4E700BF63 +:100A5000472929DCA1F130020A2A0DD281F03002A7 +:100A60003A4307EB870201EB420108BF4FF0300C1D +:100A7000A1F13007691ECFE72E2940F0DD8015F87F +:100A8000010C2A2840F0D8802878482804D0732800 +:100A900002D0682840F0D0800399081D0390D1F857 +:100AA000008001202946B7E7672908DD722910DD9B +:100AB000732933D0752936D0782910D0BCE062294B +:100AC00016DC482900F0A280582940F0B5800124A6 +:100AD00006E0682900F09D80702940F0AD80002478 +:100AE00003981026011D039100680890012022E060 +:100AF000632900F0A580642940F09E800398011DC1 +:100B000003910068B0F1FF3F089011DC404208906B +:100B100000200A2600240EE0A81E97E07A497944B6 +:100B20008A46002179E00398011D0391006808902E +:100B3000002401200A26DDF820A0564502D94FF0F6 +:100B4000010B10E0DDF820A07B1E31468B46A6FB92 +:100B50000112002A18BF012251451F4603D8002A5E +:100B6000A7F10103F2D018B14FF0000801230DE006 +:100B70005FFA8CF1302906D12D2101234FF00108B5 +:100B80008DF8101002E000234FF0000880F0010003 +:100B9000391A8A1E0D2A11D801390FD0404201900E +:100BA00004A840445FFA8CF2029300F0A4FA019981 +:100BB00008EB0700029B0844A0F10108002B04A8E1 +:100BC00002BF2D2100F8081008F10108BBF1000F49 +:100BD0003FF404AF5049A8F101077944BAFBFBF296 +:100BE000002CB2FBF6F303FB16224C4B7B4408BFF0 +:100BF0000B469A5C5E45BBFBF6FB00EB070307F177 +:100C000001075A70EAD907F10108E7E63F4979443C +:100C100001E03C4979448A460121039AC0B2131D80 +:100C20000393D2F800B0B0B101281CD002283DD106 +:100C30009BF80000002857D031480521784406E091 +:100C40000398011D03910068089008A80121FFF78F +:100C50009DFE6C1EC6E600201BF800200130002A15 +:100C6000FAD1A0F1010821B3B8F1000F27D000217B +:100C7000002604AF03E000BF0136B0451CD01BF8CE +:100C800006007B18020900F00F001AF800001AF89D +:100C900002205870C81C7A54102801F102015446F1 +:100CA000EAD33846FFF772FE0021E5E7B046002997 +:100CB000DAD15846414606E0474619B905E0002713 +:100CC000002111B104A8FFF761FE4745A5F1010419 +:100CD0007FF688AEA8EB07050E4801217844FFF7A0 +:100CE00055FE0135F8D37DE608F1010408480121DD +:100CF0007844FFF74BFE013CF8D1B046E5E700BF72 +:100D0000BD060000370800002D0900004D08000056 +:100D1000AD050000C1050000710800006F0800006B +:100D200080B54AB14FF0000C51F82CE0864505D053 +:100D30000CF1010C6245F7D1002080BD1BB10120F0 +:100D4000C3F800C080BD012080BD01DF002900D1B3 +:100D500070470846FFF7FEFD80B582B00090002086 +:100D6000019003486946FFF7F0FF02B080BD00BF65 +:100D70006700000182B00020019069466820FFF7FB +:100D8000E4FFFFDE80B582B0CDE90001024869468C +:100D9000FFF7DBFF02B080BD8300000280B582B0A8 +:100DA0000020019069468720FFF7CFFF02B080BD89 +:100DB00080B582B000900020019003486946FFF79B +:100DC000C4FF02B080BD00BF0B01000153B94AB996 +:100DD000002908BF00281CBF4FF0FF314FF0FF3043 +:100DE00000F00CB8ADF1080C6DE904CE00F008F885 +:100DF000DDF804E0DDE9022304B07047704700BF6E +:100E00002DE9F04F099E0D4604460F46002B47D1B1 +:100E10008A4294465FD9B2FA82F343B1C3F120010A +:100E20009F4002FA03FC9C4020FA01F10F434FEA75 +:100E30001C451FFA8CFE220CB7FBF5F105FB117760 +:100E400001FB0EF042EA0742904208D91CEB020275 +:100E500001F1FF3702D2904200F234813946121A72 +:100E6000A4B2B2FBF5F005FB102200FB0EFE44EA33 +:100E70000244A64508D91CEB040400F1FF3202D25B +:100E8000A64500F21981104640EA0140A4EB0E0489 +:100E900000211EB1DC400023C6E90043BDE8F08F0D +:100EA0008B4208D9002E00F0FB800021C6E9000526 +:100EB0000846BDE8F08FB3FA83F100294BD1AB426D +:100EC000C0F0F180824240F2EE800846002EE5D06C +:100ED000C6E90047E2E702B9FFDEB2FA82F3002B6F +:100EE00040F09D808D1A4FEA124E97B20121B5FB5A +:100EF000FEF20EFB1250250C45EA004507FB02F0FE +:100F0000A8420FD91CEB050502F1FF382CBF4FF0AA +:100F100001094FF00009A84203D9B9F1000F00F010 +:100F2000CE8042462D1AA4B2B5FBFEF00EFB105542 +:100F300000FB07F744EA0544A74208D91CEB040468 +:100F400000F1FF3502D2A74200F2B3802846E41B2D +:100F500040EA02409DE7C1F120078B4005FA01F409 +:100F600022FA07FCFD408A404CEA030C20FA07F302 +:100F70004FEA1C491C431FFA8CFE00FA01F3200CB7 +:100F8000B5FBF9F809FB185540EA054508FB0EF0DA +:100F9000A8420FD91CEB050508F1FF3A2CBF4FF012 +:100FA000010B4FF0000BA84203D9BBF1000F00F07A +:100FB0008C80D0462D1AA4B2B5FBF9F009FB105570 +:100FC00000FB0EFE44EA0545AE4507D91CEB0505BE +:100FD00000F1FF3401D2AE457ED8204640EA0840F9 +:100FE000A5EB0E05A0FB029845454C46C64602D32C +:100FF00006D14B4504D20138B9EB020468EB0C0E64 +:10100000002E6FD01A1B65EB0E0522FA01F305FACC +:1010100007F7CD4000211F43C6E900753EE702FAFD +:1010200003FCC3F1200001FA03F24FEA1C4EC14059 +:1010300024FA00F51FFA8CF79C401543B1FBFEF033 +:101040002A0C0EFB101142EA014200FB07F191420B +:101050000ED91CEB020200F1FF382CBF4FF0010942 +:101060004FF00009914202D9B9F1000F31D040464A +:10107000521AADB2B2FBFEF10EFB112245EA024557 +:1010800001FB07F2AA4207D91CEB050501F1FF3865 +:1010900001D2AA4223D84146AD1A41EA004126E7CF +:1010A00031463046FAE6841A65EB030301201F46F9 +:1010B0000CE7644402384AE764440238E4E6023A42 +:1010C00065442FE702396244C9E6A8F10208654485 +:1010D00070E702386244CBE7023865447EE70239A4 +:1010E0006544D9E73146D9E6002200F004B800F0A3 +:1010F00017B800F022B813460A46194600F037B870 +:101100000139024410B5904201D1002005E0037876 +:1011100011F8014FA34201D0181B10BD0130F2E7B6 +:101120000A44431E914200D1704710B511F8014B9B +:10113000914203F8014FF9D110BD884210B501EB7F +:10114000020402D98442234607D8431EA14208D094 +:1011500011F8012B03F8012FF8E7024401468A42F7 +:1011600000D110BD13F8014D02F8014DF7E702441C +:101170000346934200D1704703F8011BF9E70000D2 +:10118000EC46A0E8F05F4FF000007047B0E8F05F79 +:10119000E546080008BF0120704700BF70B504464F +:1011A000084616192146B1420B4606D11C1B121BDC +:1011B00008D100F02BF8204470BD1D780131002DBE +:1011C000F1D1F3E70646314616F8015B15B9081A66 +:1011D0001D70F0E7012A1CBF02F1FF3203F8015B2A +:1011E000F1E70B4610B562B1013A08D013F8014B94 +:1011F00000F8014B002CF7D1581A013810BD00221D +:10120000027013F8012B002AFBD1F5E7034613F80F +:10121000012B002AFBD1181A0138704702460144FD +:1012200010B58A42134603D01C780132002CF8D145 +:10123000181A10BD506C7567696E20706172616D0F +:10124000657465727320737472756374757265204A +:10125000697320626967676572207468616E2061D6 +:101260006C6C6F7765642073697A650A0053656CEE +:101270006563746F7220696E6465783A2025642016 +:101280006E6F7420737570706F727465640A0053AA +:10129000656E640052656365697665204D696E2EE2 +:1012A00000200053776170004572726F723A2073AC +:1012B000656C6563746F72206E6F7420666F756EF7 +:1012C00064210A00457468657265756D00300050D0 +:1012D0006172616D206E6F7420737570706F7274BF +:1012E00065643A2025640A004554480030313233A1 +:1012F0003435363738396162636465660045525269 +:101300004F520030780053656C6563746F722049EA +:101310006E646578206E6F7420737570706F727470 +:1013200065643A2025640A00556E68616E646C65D8 +:1013300064206D6573736167652025640A004265EA +:101340006E6566696369617279006578636570745A +:10135000696F6E5B3078253034585D3A204C523DD1 +:101360003078253038580A004572726F723A206F13 +:10137000766572666C6F7720646574656374656406 +:10138000206F6E2073656C6563746F7220696E6484 +:101390006578210A00526563656976656420616E2F +:1013A00020696E76616C69642073637265656E494D +:1013B0006E6465780A005265636569766564206EBF +:1013C000756C6C20706172616D65746572730A0072 +:1013D000706C7567696E2070726F766964652070D5 +:1013E0006172616D657465723A206F6666736574CB +:1013F0002025640A42797465733A20252E2A480A0A +:1014000000506C7567696E426F696C6572706C61D3 +:1014100074650045786974696E6720666F6C6C6FDF +:1014200077696E6720657863657074696F6E3A20BE +:1014300025640A004D697373696E672073656C6576 +:1014400063746F72496E6465783A2025640A0030CF +:10145000313233343536373839616263646566302A +:10146000313233343536373839414243444546000A +:10147000B56AF37F4242371300000000000000000D +:10148000000000000000000000000000000000005C +:10149000000000000000000000000000000000004C +:1014A000000000000000000000000000000000003C +:1014B000000000000000000000000000000000002C +:1014C000000000000000000000000000000000001C +:1014D000000000000000000000000000000000000C +:1014E00000000000000000000000000000000000FC +:1014F00000000000000000000000000000000000EC +:1015000000000000000000000000000000000000DB +:1015100000000000000000000000000000000000CB +:1015200000000000000000000000000000000000BB +:1015300000000000000000000000000000000000AB +:10154000000000000000000000000000000000009B +:10155000000000000000000000000000000000008B +:10156000000000000000000000000000000000007B +:10157000000000000000000000000000000000006B +:10158000000000000000000000000000000000005B +:10159000000000000000000000000000000000004B +:1015A000000000000000000000000000000000003B +:1015B000000000000000000000000000000000002B +:1015C000000000000000000000000000000000001B +:1015D000000000000000000000000000000000000B +:1015E00000000000000000000000000000000000FB +:1015F00000000000000000000000000000000000EB +:101600000111506C7567696E426F696C6572706C20 +:101610006174650205312E302E3003220100000076 +:1016200000FFFFFF0000000000068001FC03FFC078 +:101630003FC03FF00FFFC039700E00000000040AE9 +:0A16400001028000002C8000003C35 +:04000005C0DE000158 +:00000001FF diff --git a/tests/plugin_binaries/nanos2/bin/app.sha256 b/tests/plugin_binaries/nanos2/bin/app.sha256 new file mode 100644 index 00000000..ad8402a5 --- /dev/null +++ b/tests/plugin_binaries/nanos2/bin/app.sha256 @@ -0,0 +1 @@ +7361f2dcc7e90c4adbd624a81eb4fcf89a03765528da52173f95feb9c512117b diff --git a/tests/plugin_binaries/nanox/bin/app.apdu b/tests/plugin_binaries/nanox/bin/app.apdu new file mode 100644 index 00000000..f64f1ae7 --- /dev/null +++ b/tests/plugin_binaries/nanox/bin/app.apdu @@ -0,0 +1,36 @@ +e0000000130c11506c7567696e426f696c6572706c617465 +e0000000160b0500001800000000000000004a0000080000000001 +e0000000050500000000 +e0000000d30600008cb0044662b600f083fc6d46284601f0e3f9a88585b2002d0ed1684600f0b8fe0a90002c1cd020680e49884202d0616800f016fc00f08efe6c460020a0850a9800f0a6fe08487844294600f097fc00f095fea042eed10a9800f09afe00f07afe00f042fcff010000e916000003b401480be000004800000003b4014805e000005a00000003b40248ffe70249084700008700000001002100f0b593b003920491054601231898014699431e224a4019990a430027002a3a4619d1059306aa3324234600f06ff800285fd006ae30462146 +e0000000d30600d001f02afa3318221a30497944184601f095f93046214601f01ffa0246059b06a8059280182a4e7e44e95d0f240a092140715c4170b15c0170801c7f1c142ff3d11902039f3846fff7afff002100283ad12020019006a802900090059b2833012238460f4605921146029afff797ff3946002828d10020049f059b05e0715c059b3954401c28281ad002461a404308e95c002a03d021400929f0d902e009090929ecd906affb5c920004275740fb401a07715c00d52039049fe1e7002103e02820002139541946084613b0f0bd45150000 +e0000000d30601a012150000f0b587b002930446002001920546c7b27b1c029883422bd2009306950a250026204605912a46334600f07afe049003912a46069d334600f093fe019a201a30210143d155681c0921091b3146059b9941049c0399dad3c0b216542806009b07d0d05d915dd15590557f1e761cbe42f7d30298834202d3002007b0f0bd012007b0f0bdf0b583b0029314460e460746012907d13878302804d1029802283dd200256fe0089bb34222d2b11c0025029801918142294645d80020f11a04d03a5c2254401c8142fad1002b024602d0 +e0000000d30602702e212154421cb042114632d2331a38181146067866545b1e401c491c002bf8d127e0d91c0025029801918142294622d8991b2e2060703020207000290dd0a01c3022009100f05aff0098821c06e0002060703020207001252de00222002e114607d01146387860547f1c761e491c002ef8d1002060540298019b83421bd88a420ed2002303e0521c9142034609d0002b104600d01846a35c302bf4d00020f2e700200125002806d000212154401e225c2e2a00d12154284603b0f0bdf0b58bb014460a46202901d900263ae01d460146 +e0000000d306034000260a96099608960796069605960496039603afb81a203000f000ff2021384600f056f8002809d0022d22d32749794420462a4601f07ef801261ae0002003a90a5a52ba0a52801c2028f8d103a8202100f03ef84742474100280dd02e46a119ad1b20462a4600f0ddfe0020605501267e4030460bb0f0bd0095002df7d0009e019402960024204603ad295b000446180a273046394600f0e9fc28534743f01ba41c202cf0d130210843029e761e019ca05503a8202100f00bf847424741002802d1002eddd1d2e7009dc8e77b120000 +e0000000d3060410b0b54b1e0a469a4100290ed00378002b0bd101231c468c421a4600d30022a14203d0055d641c002df5d001205040b0bdf0b59db0039302920d46074604ac64262046314600f07cfe3846294622463346fff764ff00282cd0239c229d04a8642101f05af801900b21039801f055f80746c6b2a642224600d832462846039900f065fe002e02d02020a8557f1c02980090f8b22a18c04303190198c1b204a8fff7bafe002803d06119491e00220a701db0f0bd00201db0f0bd80b5142a00d31422891a203100f046fe80bd80b5202a00d3 +e0000000d30604e0202200f03ffe80bdb0b504460a48a083a069a56829462031142200f03ffe0421a1773435e560002802d003206077b0bd02206077b0bdc04602020000b0b582b004460078062827d12069592805d81948784400f023fa00201fe0e5685a21284600f006fe606900f02ff813497944022201ab00f0d7fb00280ad0553501982871010a0dd1c1b202290dd22870042004e00a48784400f002fa0120607002b0b0bd07487844d5e70748784400f0f7f90020f3e7c04620100000401200005210000002110000c81100000178090642781204 +e0000000d30605b05118827812028918c07808187047d4d4b0b504468568c36801690c487844202200f0d4f9042020755920295c01290cd0002904d12046294600f00cf8b0bd0448784400f0c3f900202075b0bd201100003210000070b504465820085c0e465636002806d020693288121d904244d10020b0700d4655352a78012a0cdd022a18d0032a22d0042a30d10120b0702870208a3c30308070bd002a1ed0012a25d1e3683431142208461946fff736ff0520287070bde3682031142208461946fff72cff0120b0700420287070bde06800f018f8 +e0000000d306068030800220287070bde368202208461946fff723ff0320287070bd04487844114600f06cf90020207570bdc0464f0f0000c17f807f0002401880b27047b0b504468068e16805465335002909d0c97f2970e168483014310b2200f0ccfe012000e00020042161756870b0bdd4d4b0b504468568c06822690c49794400f0bbfe5920295c002906d00a48784400f037f900202077b0bd6069a2690449794400f0aafe04202077b0bdc04625100000a50e0000810e000070b50446c569406aa16a00f007fde06a216b00f003fd2020205c2646 +e0000000d30607502036022807d001280ad000280dd1204600f018f80ee02046294600f059f809e02046294600f02cf804e00548784400f0fdf80020411e88418000307570bdc046350f000010b582b00446406aa26a0a49794400f067fe606800686221415ce26a236b0092019342301222044b7b44fff73ffe02b010bdc0460b0e0000480e0000b0b582b00d460446406aa26a0f49794400f048fe5320285c294653314978e26a236b00920193002904d02c464834002903d003e01034002900d11220c2b2202128462346fff714fe02b0b0bdd20d0000 +e0000000d3060820b0b582b00c460546406aaa6a0b49794400f020fee86a30210170e86a7821417028680268e86a0021009101912034811c2046fff721fc02b0b0bdc0462c0e000080b5002912d00246ff20034604339a4211dc023082421dd08120400082421dd09a4227d10846fff72ffe80bd1548784400f074f880bd41239b009a4212d00630824213d083204000824213d10846fff741ff80bd0846fff731fe80bd0846fff77ffe80bd0846fff7f9fe80bd0846fff70dff80bd02487844114600f04ff880bd6e0d0000440e000080b586b000200590 +e0000000d30608f00490064878440190012003900002029001a800f019fa06b080bdc046ec0c000080b5002000f03cfa80bdd4d40446704600f00ef8024605487844214600f026f800f024fa214600f05bfdc0463e0d000003497944401a0149401870470000dec0bbf6ffffb0b582b00c46054601a881705f210170210a4170032100f0fbf9a1b2284600f0f7f902b0b0bdd4d483b0f0b58cb011ac0ec4002800d1a7e1074611a806903878002800d1a0e10120019004e0bf193878002800d198e10026b85d002803d0252801d0761cf8e738463146fff7 +e0000000d30609c0c9ffb85d2528ebd1b819471c002320240593184601e0104619d139787f1c00222d29f8dd472937dc0a46303a0a2a1cd2039430221d460b4653402c462b4300d0039a0a2363435b18303b1446e5e725295ad02a2900d0f0e03878732800d0ece00699081d0690022013e02e2900d0e4e038782a2800d0e0e07878482804d0732802d0682800d0d8e07f1c0699081d0690012009680591c0e767290adda24d7d44722910dd732931d0752933d0782910d0c3e0622916dc482900d1a7e0582900d0bbe0012006e0682900d1a4e0702900d0 +e0000000d3060a90b3e0002004900698011d069100680b9010251fe0632900d1abe0642900d0a4e00698011d069100680b900a25002800d5f7e0002004900de0781ea0e01c460297002183e00698011d069100680b90002004900a250198064602970b9905918d42039402d90746024616e05a1e0b980590284607461446002128463a460b4600f0f9f94a1e9141059a904202d8621e0029efd02346019a039c30465040191a002e02d0002614460be0e2b20026302a344606d107aa1c462d23137023460126019c8a1e0d2a0fd8491e0dd04042009007a8 +e0000000d3060b608019039ad2b2039300f000fb0398301800994018461e002c03d107a82d218155761c002f1cd05d487844039012e0039c0598394600f00af9294600f08df9605c07a988553846294600f000f9761cbd42074605d804980028e9d1514c7c44e7e707a83146fff7c6fe029feae61c460297474d7d4401e01c4602970199069a131d0693c0b21768002815d001281ad0022838d138780028029f61d03c487844052106e00698011d069100680b900ba80121fff7a0fec5e600203a5c401c002afbd1401e0590002920d0059c002c2ad00021 +e0000000d3060c300e4607e007a81146fff78cfe0021761cb4421dd0b85d0209aa5c07ab5a545a180f230340e85c50708a1cc81c1028e9d21146ece705960029ded13846059d2946fff770fe22462c46029fa24210d890e6224601e0002211460029029f05d007a81446fff75ffe2246059ca24200d880e6a41a154878440121fff754fe641cf8d377e640420b9000260496019814e725460598441c0b4878440121fff743fe641ef8d134462a46a242e2d862e60cb0f0bc01bc03b00047c0460d0d00001d0a0000a90b0000f708000019090000f30b0000 +e0000000d3060d00af0b0000b0b5002a07d000240d68854205d0091d641ca242f8d10020b0bd0120002bfbd01c60b0bd01df002900d170470846fff7f3fdd4d480b582b000210191009003486946fff7efff02b080bdc0466700000182b00020019068206946fff7e3ffffde80b582b00191009002486946fff7daff02b080bd8300000280b582b00020019087206946fff7ceff02b080bd80b582b000210191009003486946fff7c3ff02b080bdc0460b010001002243088b4274d303098b425fd3030a8b4244d3030b8b4228d3030c8b420dd3ff220902 +e0000000d3060dd012ba030c8b4202d31212090265d0030b8b4219d300e0090ac30b8b4201d3cb03c01a5241830b8b4201d38b03c01a5241430b8b4201d34b03c01a5241030b8b4201d30b03c01a5241c30a8b4201d3cb02c01a5241830a8b4201d38b02c01a5241430a8b4201d34b02c01a5241030a8b4201d30b02c01a5241cdd2c3098b4201d3cb01c01a524183098b4201d38b01c01a524143098b4201d34b01c01a524103098b4201d30b01c01a5241c3088b4201d3cb00c01a524183088b4201d38b00c01a524143088b4201d34b00c01a5241411a +e0000000d3060ea000d20146524110467047ffe701b5002000f006f802bdc0460029f7d076e770477047c046002b11d1002a0fd1002900d1002802d00021c943081c07b4024802a14018029003bdc046d9ffffff03b4684601b5029800f030f8019b9e4602b00cbc7047c046f0b5ce46474615042d0c2e0080b50704140c3f0c9946030c7e435d43674363437f19340ce4199c46a54203d980235b029846c4444b4643435143250c36046544360c2404a4195b19591820000cbc90469946f0bdf0b557464e464546de46e0b5040083b00d00924699468b42 +e0000000d3060f7030d82dd04946504600f0c0f829000600200000f0bbf8331a9846203b9b4633d45a465346934042461f00534693401e00af423ad8af4200d17be05b46a41bbd41002b00da78e0002200230092019301235a4693400193012342469340009328e08242cfd900220023009201930c9b002b01d01c605d600098019903b03cbc90469946a246ab46f0bd424620239b1a5246da40414613004a468a40170042461f43534693401e00af42c4d900220023009201934346002bd9d0fb079c46614672080a437b0846460ee0ab4201d1a2420cd8 +e0000000d3061040a41a9d41012024196d410021013e24184d41002e06d0ab42eed9013e24196d41002ef8d1009801995b4600196941002b25db2b005a464446d3402a00e2401c005b461500002b2bdb26005f46be40330026004746be403200801a9941009001919ce7a342b9d880e74246202300219b1a0022009101920122da40019283e7424620239b1a2a0046469a402300f340444613432a00e2401c005b461500002bd3da2023424626009b1ade402f00b4464646b74066463b003343cae7c04610b5002903d100f007f8203002e0081c00f002f8 +e0000000d306111010bdc0461c2101231b04984201d3000c10391b0a984201d3000a08391b09984201d30009043902a2105c40187047c0460403020201010101000000000000000010b5002200f00af810bdc04610b500f035f810bd10b500f085f810bd130010b50a00190000f0dcf810bdc04630b5032a0cd903000b439b071cd103680c68a34218d1043a04300431032af6d8551e002a0ed002780c7894420ed101350123013904e0c25c0133cc5ca24205d1ab42f8d1002030bd551eece7101bfae7f0b5c64600b50f2a43d90b00032603431e400c00 +e0000000d30611e00300002e40d11500103d2d09ac462d01a846804400e03b00676825685f60e7681d60df601f00a56810379d6010344345f1d165460f230c2401352d01491913404519144223d08c59ac5104369c1b032cf9d80324043b9b0801339b002240ed18c918561e002a07d0002300e02300ca5c5c1cea549e42f9d104bc9046f0bd0500561e002af0d1f7e7561e0500ece71a00f6e7c046f0b5c64600b588420cd98b18984209d2531e002a03d0ca5cc254013bfbd204bc9046f0bd0f2a0cd80500561e002af6d0002300e02300ca5c5c1cea54 +e0000000d30612b09e42f9d1ede70b00032603431e400c000300002e2ed11500103d2d09ac462d01a846804400e02b001d00276810351f6067685f60a7689f60e7681034df604345f1d165460f230c2401352d01491913404519144211d08c59ac5104369c1b032cf9d80324043b9b0801339b00ed18c9182240bce7561e0500bce71a00b7e7c046f0b5050083074ad0541e002a44d0ceb20300032202e00135013c3dd301332e701342f8d1032c2fd9ff220a40150215432a0415430f2c35d92700103f3f093e01b4461e001a0010366644156055609560 +e0000000d3061380d5601032b242f8d10f260c2201373f012640db193700224217d03e1fb608b400a4461a001c1d644420c2a242fcd103240136b6009b193c40002c05d0c9b21c19197001339c42fbd1f0bd3400f4e714000300bfe72700e0e7f0c041464a4653465c466d4676467ec02838f0c80020704710307cc890469946a246ab46b54608c82838f0c8081c00d10120184770b5002a2ad00378002b29d08418030002e01d78002d18d00133a342f9d1261a921b16d00d780b00002d0ad0012a02d02570013a013401331d78002df6d15b1af6180023 +e0000000d30614502370300070bd1c00261a921be8d1080000f02ef83618f4e70026f8e704000026dee7c046f0b5002a13d0013a002a19d000234f1c461c02e001339a4216d0f518ac46cd5cfc18c554002df5d1601a0138f0bd0c00230001335a1e12781c00002af9d1f3e70c0000230370f3e76046fae710b5830727d00378002b26d00300032102e01a78002a1cd001330b42f9d119680f4a104c8a188a4322420fd1043319680b4a8a188a43224208d104331968084a8a188a432242f1d000e001331a78002afbd1181a10bd0300e1e70020fae7c046 +e0000000d3061520fffefefe8080808010b500290bd00378002b0cd04418030002e01a78002a04d00133a342f9d1080010bd191afbe70021f9e7c046506c7567696e20706172616d65746572732073747275637475726520697320626967676572207468616e20616c6c6f7765642073697a650a0053656c6563746f7220696e6465783a202564206e6f7420737570706f727465640a0053656e640052656365697665204d696e2e00200053776170004572726f723a2073656c6563746f72206e6f7420666f756e64210a00457468657265756d00300050 +e0000000d30615f06172616d206e6f7420737570706f727465643a2025640a004554480030313233343536373839616263646566004552524f520030780053656c6563746f7220496e646578206e6f7420737570706f727465643a2025640a00556e68616e646c6564206d6573736167652025640a0042656e656669636961727900657863657074696f6e5b3078253034585d3a204c523d3078253038580a004572726f723a206f766572666c6f77206465746563746564206f6e2073656c6563746f7220696e646578210a00526563656976656420616e +e0000000d30616c020696e76616c69642073637265656e496e6465780a005265636569766564206e756c6c20706172616d65746572730a00706c7567696e2070726f7669646520706172616d657465723a206f66667365742025640a42797465733a20252e2a480a00506c7567696e426f696c6572706c6174650045786974696e6720666f6c6c6f77696e6720657863657074696f6e3a2025640a004d697373696e672073656c6563746f72496e6465783a2025640a003031323334353637383961626364656630313233343536373839414243444546d4 +e0000000bd061790b56af37f42423713d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d4d40111506c7567696e426f696c6572706c6174650205312e302e3003220100000000ffffff0000000000068001fc03ffc03fc03ff00fffc039700e00000000040a01028000002c8000003c +e00000000107 +e0000000090800000000184a3952 +e00000000109 diff --git a/tests/plugin_binaries/nanox/bin/app.elf b/tests/plugin_binaries/nanox/bin/app.elf new file mode 100644 index 00000000..f62d65e9 Binary files /dev/null and b/tests/plugin_binaries/nanox/bin/app.elf differ diff --git a/tests/plugin_binaries/nanox/bin/app.hex b/tests/plugin_binaries/nanox/bin/app.hex new file mode 100644 index 00000000..45658e7e --- /dev/null +++ b/tests/plugin_binaries/nanox/bin/app.hex @@ -0,0 +1,392 @@ +:02000004C0DE5C +:100000008CB0044662B600F083FC6D46284601F0D1 +:10001000E3F9A88585B2002D0ED1684600F0B8FE40 +:100020000A90002C1CD020680E49884202D06168DA +:1000300000F016FC00F08EFE6C460020A0850A98A9 +:1000400000F0A6FE08487844294600F097FC00F02E +:1000500095FEA042EED10A9800F09AFE00F07AFEDA +:1000600000F042FCFF010000E916000003B4014863 +:100070000BE000004800000003B4014805E0000068 +:100080005A00000003B40248FFE702490847000095 +:100090008700000001002100F0B593B003920491A5 +:1000A000054601231898014699431E224A40199992 +:1000B0000A430027002A3A4619D1059306AA332499 +:1000C000234600F06FF800285FD006AE3046214688 +:1000D00001F02AFA3318221A30497944184601F0FF +:1000E00095F93046214601F01FFA0246059B06A805 +:1000F000059280182A4E7E44E95D0F240A092140AA +:10010000715C4170B15C0170801C7F1C142FF3D1B5 +:100110001902039F3846FFF7AFFF002100283AD1AC +:100120002020019006A802900090059B2833012210 +:1001300038460F4605921146029AFFF797FF394657 +:10014000002828D10020049F059B05E0715C059BD9 +:100150003954401C28281AD002461A404308E95C4A +:10016000002A03D021400929F0D902E00909092910 +:10017000ECD906AFFB5C920004275740FB401A07FE +:10018000715C00D52039049FE1E7002103E02820BD +:10019000002139541946084613B0F0BD451500003A +:1001A00012150000F0B587B00293044600200192BA +:1001B0000546C7B27B1C029883422BD2009306955A +:1001C0000A250026204605912A46334600F07AFE8D +:1001D000049003912A46069D334600F093FE019A4F +:1001E000201A30210143D155681C0921091B3146D1 +:1001F000059B9941049C0399DAD3C0B21654280692 +:10020000009B07D0D05D915DD15590557F1E761C27 +:10021000BE42F7D30298834202D3002007B0F0BD5C +:10022000012007B0F0BDF0B583B0029314460E462E +:100230000746012907D13878302804D102980228CE +:100240003DD200256FE0089BB34222D2B11C0025AD +:10025000029801918142294645D80020F11A04D024 +:100260003A5C2254401C8142FAD1002B024602D053 +:100270002E212154421CB042114632D2331A381872 +:100280001146067866545B1E401C491C002BF8D1B1 +:1002900027E0D91C0025029801918142294622D8E5 +:1002A000991B2E2060703020207000290DD0A01CDA +:1002B0003022009100F05AFF0098821C06E00020D6 +:1002C00060703020207001252DE00222002E1146A2 +:1002D00007D01146387860547F1C761E491C002ECA +:1002E000F8D1002060540298019B83421BD88A42B7 +:1002F0000ED2002303E0521C9142034609D0002B8A +:10030000104600D01846A35C302BF4D00020F2E752 +:1003100000200125002806D000212154401E225C27 +:100320002E2A00D12154284603B0F0BDF0B58BB081 +:1003300014460A46202901D900263AE01D46014606 +:1003400000260A960996089607960696059604963C +:10035000039603AFB81A203000F000FF2021384682 +:1003600000F056F8002809D0022D22D327497944FD +:1003700020462A4601F07EF801261AE0002003A953 +:100380000A5A52BA0A52801C2028F8D103A8202108 +:1003900000F03EF84742474100280DD02E46A119F3 +:1003A000AD1B20462A4600F0DDFE002060550126E8 +:1003B0007E4030460BB0F0BD0095002DF7D0009E7A +:1003C000019402960024204603AD295B00044618E0 +:1003D0000A273046394600F0E9FC28534743F01B12 +:1003E000A41C202CF0D130210843029E761E019CD3 +:1003F000A05503A8202100F00BF8474247410028F0 +:1004000002D1002EDDD1D2E7009DC8E77B120000AB +:10041000B0B54B1E0A469A4100290ED00378002B36 +:100420000BD101231C468C421A4600D30022A14264 +:1004300003D0055D641C002DF5D001205040B0BDF7 +:10044000F0B59DB0039302920D46074604AC6426B6 +:100450002046314600F07CFE384629462246334687 +:10046000FFF764FF00282CD0239C229D04A8642160 +:1004700001F05AF801900B21039801F055F8074656 +:10048000C6B2A642224600D832462846039900F05A +:1004900065FE002E02D02020A8557F1C02980090F7 +:1004A000F8B22A18C04303190198C1B204A8FFF793 +:1004B000BAFE002803D06119491E00220A701DB03F +:1004C000F0BD00201DB0F0BD80B5142A00D3142269 +:1004D000891A203100F046FE80BD80B5202A00D365 +:1004E000202200F03FFE80BDB0B504460A48A0833C +:1004F000A069A56829462031142200F03FFE04219E +:10050000A1773435E560002802D003206077B0BDC4 +:1005100002206077B0BDC04602020000B0B582B0D4 +:1005200004460078062827D12069592805D819489B +:10053000784400F023FA00201FE0E5685A2128469D +:1005400000F006FE606900F02FF81349794402229A +:1005500001AB00F0D7FB00280AD05535019828716F +:10056000010A0DD1C1B202290DD22870042004E085 +:100570000A48784400F002FA0120607002B0B0BD71 +:1005800007487844D5E70748784400F0F7F9002099 +:10059000F3E7C04620100000401200005210000097 +:1005A00002110000C8110000017809064278120407 +:1005B0005118827812028918C07808187047D4D46C +:1005C000B0B504468568C36801690C4878442022A8 +:1005D00000F0D4F9042020755920295C01290CD0A1 +:1005E000002904D12046294600F00CF8B0BD04488B +:1005F000784400F0C3F900202075B0BD2011000040 +:100600003210000070B504465820085C0E4656367D +:10061000002806D020693288121D904244D1002063 +:10062000B0700D4655352A78012A0CDD022A18D003 +:10063000032A22D0042A30D10120B0702870208AE9 +:100640003C30308070BD002A1ED0012A25D1E368DD +:100650003431142208461946FFF736FF052028706A +:1006600070BDE3682031142208461946FFF72CFFBD +:100670000120B0700420287070BDE06800F018F808 +:1006800030800220287070BDE36820220846194699 +:10069000FFF723FF0320287070BD044878441146FB +:1006A00000F06CF90020207570BDC0464F0F0000AF +:1006B000C17F807F0002401880B27047B0B5044609 +:1006C0008068E16805465335002909D0C97F297043 +:1006D000E168483014310B2200F0CCFE012000E02C +:1006E0000020042161756870B0BDD4D4B0B5044653 +:1006F0008568C06822690C49794400F0BBFE592026 +:10070000295C002906D00A48784400F037F9002017 +:100710002077B0BD6069A2690449794400F0AAFE5F +:1007200004202077B0BDC04625100000A50E0000B3 +:10073000810E000070B50446C569406AA16A00F0E8 +:1007400007FDE06A216B00F003FD2020205C2646B7 +:100750002036022807D001280AD000280DD12046D3 +:1007600000F018F80EE02046294600F059F809E09C +:100770002046294600F02CF804E00548784400F0B3 +:10078000FDF80020411E88418000307570BDC046D4 +:10079000350F000010B582B00446406AA26A0A49CB +:1007A000794400F067FE606800686221415CE26A9B +:1007B000236B0092019342301222044B7B44FFF7DB +:1007C0003FFE02B010BDC0460B0E0000480E0000F8 +:1007D000B0B582B00D460446406AA26A0F4979441A +:1007E00000F048FE5320285C294653314978E26ADC +:1007F000236B00920193002904D02C464834002931 +:1008000003D003E01034002900D11220C2B220210D +:1008100028462346FFF714FE02B0B0BDD20D0000FB +:10082000B0B582B00C460546406AAA6A0B497944C5 +:1008300000F020FEE86A30210170E86A78214170FA +:1008400028680268E86A0021009101912034811C27 +:100850002046FFF721FC02B0B0BDC0462C0E0000C0 +:1008600080B5002912D00246FF20034604339A4285 +:1008700011DC023082421DD08120400082421DD016 +:100880009A4227D10846FFF72FFE80BD15487844CD +:1008900000F074F880BD41239B009A4212D00630CC +:1008A000824213D083204000824213D10846FFF7D2 +:1008B00041FF80BD0846FFF731FE80BD0846FFF7C7 +:1008C0007FFE80BD0846FFF7F9FE80BD0846FFF7B2 +:1008D0000DFF80BD02487844114600F04FF880BDFE +:1008E0006E0D0000440E000080B586B0002005901B +:1008F0000490064878440190012003900002029081 +:1009000001A800F019FA06B080BDC046EC0C00004A +:1009100080B5002000F03CFA80BDD4D40446704677 +:1009200000F00EF8024605487844214600F026F80B +:1009300000F024FA214600F05BFDC0463E0D0000A9 +:1009400003497944401A0149401870470000DEC04D +:10095000BBF6FFFFB0B582B00C46054601A881701A +:100960005F210170210A4170032100F0FBF9A1B25F +:10097000284600F0F7F902B0B0BDD4D483B0F0B58A +:100980008CB011AC0EC4002800D1A7E1074611A815 +:1009900006903878002800D1A0E10120019004E001 +:1009A000BF193878002800D198E10026B85D0028EA +:1009B00003D0252801D0761CF8E738463146FFF7EA +:1009C000C9FFB85D2528EBD1B819471C00232024A6 +:1009D0000593184601E0104619D139787F1C002292 +:1009E0002D29F8DD472937DC0A46303A0A2A1CD27D +:1009F000039430221D460B4653402C462B4300D017 +:100A0000039A0A2363435B18303B1446E5E7252924 +:100A10005AD02A2900D0F0E03878732800D0ECE0D2 +:100A20000699081D0690022013E02E2900D0E4E06C +:100A300038782A2800D0E0E07878482804D0732855 +:100A400002D0682800D0D8E07F1C0699081D0690C7 +:100A5000012009680591C0E767290ADDA24D7D44A0 +:100A6000722910DD732931D0752933D0782910D03F +:100A7000C3E0622916DC482900D1A7E0582900D03C +:100A8000BBE0012006E0682900D1A4E0702900D075 +:100A9000B3E0002004900698011D069100680B90B9 +:100AA00010251FE0632900D1ABE0642900D0A4E049 +:100AB0000698011D069100680B900A25002800D5B4 +:100AC000F7E0002004900DE0781EA0E01C4602979D +:100AD000002183E00698011D069100680B9000201C +:100AE00004900A250198064602970B9905918D42BC +:100AF000039402D90746024616E05A1E0B98059049 +:100B0000284607461446002128463A460B4600F080 +:100B1000F9F94A1E9141059A904202D8621E0029B5 +:100B2000EFD02346019A039C30465040191A002EFC +:100B300002D0002614460BE0E2B20026302A3446EA +:100B400006D107AA1C462D23137023460126019CBB +:100B50008A1E0D2A0FD8491E0DD04042009007A8CA +:100B60008019039AD2B2039300F000FB0398301867 +:100B700000994018461E002C03D107A82D2181554D +:100B8000761C002F1CD05D487844039012E0039C33 +:100B90000598394600F00AF9294600F08DF9605CA5 +:100BA00007A988553846294600F000F9761CBD4251 +:100BB000074605D804980028E9D1514C7C44E7E762 +:100BC00007A83146FFF7C6FE029FEAE61C460297D9 +:100BD000474D7D4401E01C4602970199069A131D7A +:100BE0000693C0B21768002815D001281AD0022831 +:100BF00038D138780028029F61D03C4878440521DC +:100C000006E00698011D069100680B900BA80121D3 +:100C1000FFF7A0FEC5E600203A5C401C002AFBD18D +:100C2000401E0590002920D0059C002C2AD00021D0 +:100C30000E4607E007A81146FFF78CFE0021761C40 +:100C4000B4421DD0B85D0209AA5C07AB5A545A18C9 +:100C50000F230340E85C50708A1CC81C1028E9D29E +:100C60001146ECE705960029DED13846059D294658 +:100C7000FFF770FE22462C46029FA24210D890E653 +:100C8000224601E0002211460029029F05D007A854 +:100C90001446FFF75FFE2246059CA24200D880E67C +:100CA000A41A154878440121FFF754FE641CF8D3B8 +:100CB00077E640420B9000260496019814E72546FB +:100CC0000598441C0B4878440121FFF743FE641E3D +:100CD000F8D134462A46A242E2D862E60CB0F0BC13 +:100CE00001BC03B00047C0460D0D00001D0A000006 +:100CF000A90B0000F708000019090000F30B000021 +:100D0000AF0B0000B0B5002A07D000240D68854263 +:100D100005D0091D641CA242F8D10020B0BD0120FD +:100D2000002BFBD01C60B0BD01DF002900D1704753 +:100D30000846FFF7F3FDD4D480B582B000210191BD +:100D4000009003486946FFF7EFFF02B080BDC04640 +:100D50006700000182B00020019068206946FFF71B +:100D6000E3FFFFDE80B582B0019100900248694642 +:100D7000FFF7DAFF02B080BD8300000280B582B0C9 +:100D80000020019087206946FFF7CEFF02B080BDAA +:100D900080B582B000210191009003486946FFF7B9 +:100DA000C3FF02B080BDC0460B0100010022430812 +:100DB0008B4274D303098B425FD3030A8B4244D323 +:100DC000030B8B4228D3030C8B420DD3FF22090265 +:100DD00012BA030C8B4202D31212090265D0030B24 +:100DE0008B4219D300E0090AC30B8B4201D3CB031A +:100DF000C01A5241830B8B4201D38B03C01A52415C +:100E0000430B8B4201D34B03C01A5241030B8B425D +:100E100001D30B03C01A5241C30A8B4201D3CB0248 +:100E2000C01A5241830A8B4201D38B02C01A52412D +:100E3000430A8B4201D34B02C01A5241030A8B4230 +:100E400001D30B02C01A5241CDD2C3098B4201D348 +:100E5000CB01C01A524183098B4201D38B01C01AC6 +:100E6000524143098B4201D34B01C01A524103093D +:100E70008B4201D30B01C01A5241C3088B4201D3EC +:100E8000CB00C01A524183088B4201D38B00C01A99 +:100E9000524143088B4201D34B00C01A5241411AC0 +:100EA00000D20146524110467047FFE701B50020CD +:100EB00000F006F802BDC0460029F7D076E770477B +:100EC0007047C046002B11D1002A0FD1002900D154 +:100ED000002802D00021C943081C07B4024802A11F +:100EE0004018029003BDC046D9FFFFFF03B4684617 +:100EF00001B5029800F030F8019B9E4602B00CBC90 +:100F00007047C046F0B5CE46474615042D0C2E005E +:100F100080B50704140C3F0C9946030C7E435D43D7 +:100F2000674363437F19340CE4199C46A54203D9F7 +:100F300080235B029846C4444B4643435143250CEF +:100F400036046544360C2404A4195B195918200092 +:100F50000CBC90469946F0BDF0B557464E46454606 +:100F6000DE46E0B5040083B00D00924699468B4200 +:100F700030D82DD04946504600F0C0F82900060070 +:100F8000200000F0BBF8331A9846203B9B4633D430 +:100F90005A465346934042461F00534693401E0014 +:100FA000AF423AD8AF4200D17BE05B46A41BBD41C3 +:100FB000002B00DA78E00022002300920193012345 +:100FC0005A4693400193012342469340009328E000 +:100FD0008242CFD900220023009201930C9B002B68 +:100FE00001D01C605D600098019903B03CBC904644 +:100FF0009946A246AB46F0BD424620239B1A524674 +:10100000DA40414613004A468A40170042461F43D1 +:10101000534693401E00AF42C4D9002200230092E1 +:1010200001934346002BD9D0FB079C4661467208CA +:101030000A437B0846460EE0AB4201D1A2420CD8DF +:10104000A41A9D41012024196D410021013E24185C +:101050004D41002E06D0AB42EED9013E24196D4120 +:10106000002EF8D1009801995B4600196941002BC8 +:1010700025DB2B005A464446D3402A00E2401C00A0 +:101080005B461500002B2BDB26005F46BE4033007D +:1010900026004746BE403200801A994100900191D7 +:1010A0009CE7A342B9D880E74246202300219B1A3F +:1010B0000022009101920122DA40019283E7424628 +:1010C00020239B1A2A0046469A402300F3404446B8 +:1010D00013432A00E2401C005B461500002BD3DAC4 +:1010E0002023424626009B1ADE402F00B446464687 +:1010F000B74066463B003343CAE7C04610B50029F7 +:1011000003D100F007F8203002E0081C00F002F8DC +:1011100010BDC0461C2101231B04984201D3000CC2 +:1011200010391B0A984201D3000A08391B0998425A +:1011300001D30009043902A2105C40187047C04670 +:101140000403020201010101000000000000000090 +:1011500010B5002200F00AF810BDC04610B500F02E +:1011600035F810BD10B500F085F810BD130010B5AE +:101170000A00190000F0DCF810BDC04630B5032AA3 +:101180000CD903000B439B071CD103680C68A342D6 +:1011900018D1043A04300431032AF6D8551E002A27 +:1011A0000ED002780C7894420ED10135012301391A +:1011B00004E0C25C0133CC5CA24205D1AB42F8D161 +:1011C000002030BD551EECE7101BFAE7F0B5C6460F +:1011D00000B50F2A43D90B00032603431E400C0021 +:1011E0000300002E40D11500103D2D09AC462D0105 +:1011F000A846804400E03B00676825685F60E768B8 +:101200001D60DF601F00A56810379D6010344345E6 +:10121000F1D165460F230C2401352D0149191340E6 +:101220004519144223D08C59AC5104369C1B032C15 +:10123000F9D80324043B9B0801339B002240ED189E +:10124000C918561E002A07D0002300E02300CA5CFC +:101250005C1CEA549E42F9D104BC9046F0BD0500E6 +:10126000561E002AF0D1F7E7561E0500ECE71A00DB +:10127000F6E7C046F0B5C64600B588420CD98B18D3 +:10128000984209D2531E002A03D0CA5CC254013BC3 +:10129000FBD204BC9046F0BD0F2A0CD80500561EA8 +:1012A000002AF6D0002300E02300CA5C5C1CEA544C +:1012B0009E42F9D1EDE70B00032603431E400C00CC +:1012C0000300002E2ED11500103D2D09AC462D0136 +:1012D000A846804400E02B001D00276810351F60E1 +:1012E00067685F60A7689F60E7681034DF60434508 +:1012F000F1D165460F230C2401352D014919134006 +:101300004519144211D08C59AC5104369C1B032C46 +:10131000F9D80324043B9B0801339B00ED18C9183E +:101320002240BCE7561E0500BCE71A00B7E7C046DE +:10133000F0B5050083074AD0541E002A44D0CEB22F +:101340000300032202E00135013C3DD301332E703E +:101350001342F8D1032C2FD9FF220A40150215435E +:101360002A0415430F2C35D92700103F3F093E01B1 +:10137000B4461E001A00103666441560556095602C +:10138000D5601032B242F8D10F260C2201373F014E +:101390002640DB193700224217D03E1FB608B400A2 +:1013A000A4461A001C1D644420C2A242FCD103249E +:1013B0000136B6009B193C40002C05D0C9B21C195F +:1013C000197001339C42FBD1F0BD3400F4E71400E6 +:1013D0000300BFE72700E0E7F0C041464A46534616 +:1013E0005C466D4676467EC02838F0C800207047BF +:1013F00010307CC890469946A246AB46B54608C810 +:101400002838F0C8081C00D10120184770B5002A00 +:101410002AD00378002B29D08418030002E01D781D +:10142000002D18D00133A342F9D1261A921B16D0F1 +:101430000D780B00002D0AD0012A02D02570013A48 +:10144000013401331D78002DF6D15B1AF618002304 +:101450002370300070BD1C00261A921BE8D10800D2 +:1014600000F02EF83618F4E70026F8E7040000260E +:10147000DEE7C046F0B5002A13D0013A002A19D0A1 +:1014800000234F1C461C02E001339A4216D0F51887 +:10149000AC46CD5CFC18C554002DF5D1601A01385E +:1014A000F0BD0C00230001335A1E12781C00002AE4 +:1014B000F9D1F3E70C0000230370F3E76046FAE785 +:1014C00010B5830727D00378002B26D00300032113 +:1014D00002E01A78002A1CD001330B42F9D11968B6 +:1014E0000F4A104C8A188A4322420FD104331968DC +:1014F0000B4A8A188A43224208D104331968084AE1 +:101500008A188A432242F1D000E001331A78002A77 +:10151000FBD1181A10BD0300E1E70020FAE7C0462E +:10152000FFFEFEFE8080808010B500290BD003787E +:10153000002B0CD04418030002E01A78002A04D0D3 +:101540000133A342F9D1080010BD191AFBE70021AD +:10155000F9E7C046506C7567696E20706172616D05 +:101560006574657273207374727563747572652027 +:10157000697320626967676572207468616E2061B3 +:101580006C6C6F7765642073697A650A0053656CCB +:101590006563746F7220696E6465783A20256420F3 +:1015A0006E6F7420737570706F727465640A005387 +:1015B000656E640052656365697665204D696E2EBF +:1015C00000200053776170004572726F723A207389 +:1015D000656C6563746F72206E6F7420666F756ED4 +:1015E00064210A00457468657265756D00300050AD +:1015F0006172616D206E6F7420737570706F72749C +:1016000065643A2025640A0045544800303132337D +:101610003435363738396162636465660045525245 +:101620004F520030780053656C6563746F722049C7 +:101630006E646578206E6F7420737570706F72744D +:1016400065643A2025640A00556E68616E646C65B5 +:1016500064206D6573736167652025640A004265C7 +:101660006E65666963696172790065786365707437 +:10167000696F6E5B3078253034585D3A204C523DAE +:101680003078253038580A004572726F723A206FF0 +:10169000766572666C6F77206465746563746564E3 +:1016A000206F6E2073656C6563746F7220696E6461 +:1016B0006578210A00526563656976656420616E0C +:1016C00020696E76616C69642073637265656E492A +:1016D0006E6465780A005265636569766564206E9C +:1016E000756C6C20706172616D65746572730A004F +:1016F000706C7567696E2070726F766964652070B2 +:101700006172616D657465723A206F6666736574A7 +:101710002025640A42797465733A20252E2A480AE6 +:1017200000506C7567696E426F696C6572706C61B0 +:1017300074650045786974696E6720666F6C6C6FBC +:1017400077696E6720657863657074696F6E3A209B +:1017500025640A004D697373696E672073656C6553 +:1017600063746F72496E6465783A2025640A0030AC +:101770003132333435363738396162636465663007 +:10178000313233343536373839414243444546D413 +:10179000B56AF37F42423713D4D4D4D4D4D4D4D44A +:1017A000D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4F9 +:1017B000D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4E9 +:1017C000D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D9 +:1017D000D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4C9 +:1017E000D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4B9 +:1017F000D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4A9 +:101800000111506C7567696E426F696C6572706C1E +:101810006174650205312E302E3003220100000074 +:1018200000FFFFFF0000000000068001FC03FFC076 +:101830003FC03FF00FFFC039700E00000000040AE7 +:0A18400001028000002C8000003C33 +:04000005C0DE000158 +:00000001FF diff --git a/tests/plugin_binaries/nanox/bin/app.sha256 b/tests/plugin_binaries/nanox/bin/app.sha256 new file mode 100644 index 00000000..ce6772dc --- /dev/null +++ b/tests/plugin_binaries/nanox/bin/app.sha256 @@ -0,0 +1 @@ +809d67f9b0669f5eb7b5fdc383f736be59aab1ba4e4815a3713e74e4597bb345 diff --git a/tests/plugin_binaries/stax/bin/app.apdu b/tests/plugin_binaries/stax/bin/app.apdu new file mode 100644 index 00000000..6304e7ee --- /dev/null +++ b/tests/plugin_binaries/stax/bin/app.apdu @@ -0,0 +1,37 @@ +e0000000130c11506c7567696e426f696c6572706c617465 +e0000000160b0e0000180000000000000000ea0000080000000001 +e0000000050500000000 +e0000000d30600008cb0044662b600f0ddfc6d46284601f0f5f881b2adf82c0071b9684600f006ff0a90f4b1206840f2ff11884202d0616800f036fc00f0dcfe0a980c460021adf82c1000f0f3fe08482146784400f0f2fc00f0e2fea842edd10a9800f0e7fe00f0c7fe00f05dfc00bf4114000003b44ff0480007e003b44ff05a0003e003b44ff08700ffe700490847018081002de9f0458fb092460c46dde91621054622f0010383f01e030b4318d102af10463a46332300f06af8d8b33846332101f0edf830493b18c0f133027944184601f0a5f83846 +e0000000d30600d0332101f0e1f8074600e000270df10808284e07eb080002387e444ff0ff3100bf6a18527801311309f35c02f00f02b25c00f8023f13294270f2d150464ff48071fff7b0ff58b9202007f128030190504601214246cdf80080fff7a0ff18b100200fb0bde8f08500204ff0040c0de000bf18f803108cea8703d940b25c090748bf203a2254013028280bd04308e95c10f0010701f00f0208bf0a09092ae8d8b25cefe7002084f8280001200fb0bde8f085b51200007c1200002de9f04d984692460f460646002200bfd5b26c1c44452fd2 +e0000000d30601a09346304639460a22002300f04dfed6f109024ff00002ba4100eb8002a6eb420242f030020af805200bf1010206460f46e2d3d0b200215fea0b620af800100fd04ff0ff300aeb00014a781af805300af805204b70811c013da94200f10100f1d30020444538bf0120bde8f08d2de9f04d9b4614460e46012907460fd1387830280cd1bbf1020f4ff0000038bfbde8f08d3021217060700120bde8f08dddf820c0b44505d206f1020ede4507d9002040e00cf1030ada4513d9002072e0b6eb0c021ed0aceb06034ff0ff3200bfb918a518 +e0000000d306027001324978981801306970f7d1531c10e03020bceb060820704ff02e00607048d0a01c4146302200f06cff08f1020c42e00023bcf1000f9c461ebf03f1010c2e20e054b34260460ad2d819471ef31a624617f8011f501ca154013b0246f8d100212154de4584bf0020bde8f08d002384454ff0000111d24242acf10100002100bf27187f780130002908bf0146302f02eb000718bf19460137f2d1002993d0481e235c00222e2b625408bf22540120bde8f08d4ff0020c60464eb1791e634600bf11f8012f581ce254013e0346f8d10021 +e0000000d30603402154da4584bf0020bde8f08dc6e700002de9f04589b092460a460146202a4ff000003cd801aecde90700cde90500cde90300cde90100b01a2030984600f0f5fe3046202100f066f830b1b8f1020f29d2002009b0bde8f085002000bf36f8101009ba090c26f8101001301028f6d101ae3046202100f04ef8b0fa80f14fea5114d0b14746a8eb07050aeb070150462a4600f0cdfe00200af8050084f0010009b0bde8f0851a4950467944424600f037ff012009b0bde8f085b8f1000fedd0134d474600bf0020002136f8102042ea0141 +e0000000d3060410a1fb0523da0802eb820326f8102001301028a1eb4301efd1013f41f030000af807003046202100f00df8b0fa80f100284fea5114bed1002fdcd1c6e7cdcccccc5d0f000000298c4618bf4ff0010c0fd003786bb9012300bf8b424ff0000c38bf4ff0010c994203d0c25c0133002af3d08cf0010070472de9f04d9ab001ac0d460746204664211e46924600f063fe3846294622466423fff753ff80b3dde9228b01a8642100f0f0fe074630460b2100f0ebfec4b205462246404631465c4588bf5a4600f04afe002c1ebf0135202008f8 +e0000000d30604e00400e8b208eb0002c043f9b200eb0b0301a8cdf800a0fff789fe00281ebf0beb0801002201f8012c1ab0bde8f08d00201ab0bde8f08d80b5142a28bf1422891a203100f024fe80bd80b5202a28bf202200f01dfe80bdb0b5044640f20220a568a083a06905f12001142200f017fe0321002805f1340008bf0221e06004206177a077b0bdb0b582b004460078062828d12069592805d81948784400f05bfa002020e0e5685a21284600f0ecfd606900f02ff8134901ab7944022200f0fffb60b10198b0f5807f85f859000ed2c1b20229 +e0000000d30605b00ed285f85500042004e00a48784400f039fa0120607002b0b0bd07487844d4e70648784400f02efa0020f3e7340d0000c6100000640d0000140e0000da0e00004278017883781204c07842ea016141ea0321084470470000b0b50446d0e9025301690c482022784400f00cfa95f8591004200129207508bfb0bd21b92046294600f00cf8b0bd0448784400f0fbf900202075b0bd320e0000460d0000b0b50c4691f85810054649b1b4f8560029690430814218bfb0bd002084f8580094f8551001290fdd02291ad0032925d0042935d1 +e0000000d3060680288a3c30a4f85600012084f8580084f85500b0bd09b3012928d1e96804f134001422fff738ff052084f85500b0bde96804f120001422fff72eff042084f85500012084f85800b0bde86800f019f8a4f85600022084f85500b0bde96820462022fff722ff032084f85500b0bd0348784400f0a0f900202875b0bd00bf590c0000817fc07f40ea012080b27047b0b50446c068a56858b1c07fe16885f8530005f1480014310b2200f09afd012000e0002085f8540004206075b0bd0000b0b50446d0e9025022690b49794400f088fd95f8 +e0000000d3060750591031b10948784400f06cf900202077b0bdd4e905020449794400f078fd04202077b0bd310d0000b30b00008f0b0000b0b50446c569406aa16a00f0ebfcd4e90b0100f0e7fc94f82000022806d0012809d068b9204600f019f80ee02046294600f056f809e02046294600f02df804e00548784400f036f90020002818bf042084f83400b0bd00bf4b0c000010b582b00446406aa26a0a49794400f038fd6068e26a0068246b90f862100092054b42307b4412220194fff73efe02b010bd00bf1f0b0000600b0000b0b582b00446406a +e0000000d3060820a26a0d460d49794400f019fd95f8540005f1480395f85310002808bf04f11003d4e90b0408bf12210090cab2284620210194fff718fe02b0b0bd00bfe60a0000b0b582b00446406aa26a0d460b49794400f0f5fce06a30210170e06a782141702168e36a0a6805f12000991c0023cde90033fff7fbfb02b0b0bd00bf480b000080b591b10246b0f5827f13da40f2011082421bd0b2f5817f1cd040f20310824224d10846fff737fe80bd1448784400f0b1f880bd12d040f20510824212d0b2f5837f13d10846fff74bff80bd0846fff7 +e0000000d30608f039fe80bd0846fff787fe80bd0846fff705ff80bd0846fff719ff80bd02481146784400f08ff880bd900a0000620b000070b5e6b0234859ae784461904ff48070629001206390002064901f48314678443cc83cc102881d480a80784401788278c378457842ea032241ea052141ea0241427a037a569143ea0221427910f8043fadf860118178c07843ea022241ea002042ea004057900e496c46794420464ff4ab7200f0eafb200cadf8600156a85f905ea8659061a8adf85e415e9600f012fa66b070bd140a0000ea0c0000d30c0000 +e0000000d30609c03d0b000080b5002000f030fa80bd00000446704600f00ef8024605482146784400f028f800f018fa214600f00dfc00bfe40900000349024a7944401a104470470000dec005f6ffffb0b582b005465f208df80400080a0c468df805008df8061001a8032100f0ecf9a1b2284600f0e8f902b0b0bd83b02de9f04d89b0cde91112139320b10446007811a9039158b909b0bde8f04d03b0704741466c1efff7d4ff20780028f3d00026a05d18b1252801d00136f9e720463146a519fff7c5ffa05d2c462528ecd1691c00274ff0200c4ff0 +e0000000d3060a90000800204d1c15f8011c01352d2915dc4ff00000f7d0252974d02a2940f00281294611f8010d732840f0fc800398021d0392d0f800800220e4e700bf472929dca1f130020a2a0dd281f030023a4307eb870201eb420108bf4ff0300ca1f13007691ecfe72e2940f0dd8015f8010c2a2840f0d8802878482804d0732802d0682840f0d0800399081d0390d1f8008001202946b7e7672908dd722910dd732933d0752936d0782910d0bce0622916dc482900f0a280582940f0b580012406e0682900f09d80702940f0ad80002403981026 +e0000000d3060b60011d039100680890012022e0632900f0a580642940f09e800398011d03910068b0f1ff3f089011dc4042089000200a2600240ee0a81e97e07a4979448a46002179e00398011d039100680890002401200a26ddf820a0564502d94ff0010b10e0ddf820a07b1e31468b46a6fb0112002a18bf012251451f4603d8002aa7f10103f2d018b14ff0000801230de05ffa8cf1302906d12d2101234ff001088df8101002e000234ff0000880f00100391a8a1e0d2a11d801390fd04042019004a840445ffa8cf2029300f0a4fa019908eb0700 +e0000000d3060c30029b0844a0f10108002b04a802bf2d2100f8081008f10108bbf1000f3ff404af5049a8f101077944bafbfbf2002cb2fbf6f303fb16224c4b7b4408bf0b469a5c5e45bbfbf6fb00eb070307f101075a70ead907f10108e7e63f49794401e03c4979448a460121039ac0b2131d0393d2f800b0b0b101281cd002283dd19bf80000002857d031480521784406e00398011d03910068089008a80121fff79dfe6c1ec6e600201bf800200130002afad1a0f1010821b3b8f1000f27d00021002604af03e000bf0136b0451cd01bf806007b18 +e0000000d3060d00020900f00f001af800001af802205870c81c7a54102801f102015446ead33846fff772fe0021e5e7b0460029dad15846414606e0474619b905e00027002111b104a8fff761fe4745a5f101047ff688aea8eb07050e4801217844fff755fe0135f8d37de608f10104084801217844fff74bfe013cf8d1b046e5e700bfbd060000aa090000a00a0000c0090000ad050000c1050000e4090000e209000080b54ab14ff0000c51f82ce0864505d00cf1010c6245f7d1002080bd1bb10120c3f800c080bd012080bd01df002900d170470846 +e0000000d3060dd0fff7fefd80b582b000900020019003486946fff7f0ff02b080bd00bf6700000182b00020019069466820fff7e4ffffde80b582b0cde9000102486946fff7dbff02b080bd8300000280b582b00020019069468720fff7cfff02b080bd80b582b000900020019003486946fff7c4ff02b080bd00bf0b01000153b94ab9002908bf00281cbf4ff0ff314ff0ff3000f00cb8adf1080c6de904ce00f008f8ddf804e0dde9022304b07047704700bf2de9f04f099e0d4604460f46002b47d18a4294465fd9b2fa82f343b1c3f120019f4002fa +e0000000d3060ea003fc9c4020fa01f10f434fea1c451ffa8cfe220cb7fbf5f105fb117701fb0ef042ea0742904208d91ceb020201f1ff3702d2904200f234813946121aa4b2b2fbf5f005fb102200fb0efe44ea0244a64508d91ceb040400f1ff3202d2a64500f21981104640ea0140a4eb0e0400211eb1dc400023c6e90043bde8f08f8b4208d9002e00f0fb800021c6e900050846bde8f08fb3fa83f100294bd1ab42c0f0f180824240f2ee800846002ee5d0c6e90047e2e702b9ffdeb2fa82f3002b40f09d808d1a4fea124e97b20121b5fbfef20efb +e0000000d3060f701250250c45ea004507fb02f0a8420fd91ceb050502f1ff382cbf4ff001094ff00009a84203d9b9f1000f00f0ce8042462d1aa4b2b5fbfef00efb105500fb07f744ea0544a74208d91ceb040400f1ff3502d2a74200f2b3802846e41b40ea02409de7c1f120078b4005fa01f422fa07fcfd408a404cea030c20fa07f34fea1c491c431ffa8cfe00fa01f3200cb5fbf9f809fb185540ea054508fb0ef0a8420fd91ceb050508f1ff3a2cbf4ff0010b4ff0000ba84203d9bbf1000f00f08c80d0462d1aa4b2b5fbf9f009fb105500fb0efe +e0000000d306104044ea0545ae4507d91ceb050500f1ff3401d2ae457ed8204640ea0840a5eb0e05a0fb029845454c46c64602d306d14b4504d20138b9eb020468eb0c0e002e6fd01a1b65eb0e0522fa01f305fa07f7cd4000211f43c6e900753ee702fa03fcc3f1200001fa03f24fea1c4ec14024fa00f51ffa8cf79c401543b1fbfef02a0c0efb101142ea014200fb07f191420ed91ceb020200f1ff382cbf4ff001094ff00009914202d9b9f1000f31d04046521aadb2b2fbfef10efb112245ea024501fb07f2aa4207d91ceb050501f1ff3801d2aa42 +e0000000d306111023d84146ad1a41ea004126e731463046fae6841a65eb030301201f460ce7644402384ae764440238e4e6023a65442fe702396244c9e6a8f10208654470e702386244cbe7023865447ee702396544d9e73146d9e6002200f004b800f017b800f022b813460a46194600f037b80139024410b5904201d1002005e0037811f8014fa34201d0181b10bd0130f2e70a44431e914200d1704710b511f8014b914203f8014ff9d110bd884210b501eb020402d98442234607d8431ea14208d011f8012b03f8012ff8e7024401468a4200d110bd +e0000000d30611e013f8014d02f8014df7e702440346934200d1704703f8011bf9e70000ec46a0e8f05f4ff000007047b0e8f05fe546080008bf0120704700bf70b50446084616192146b1420b4606d11c1b121b08d100f02bf8204470bd1d780131002df1d1f3e70646314616f8015b15b9081a1d70f0e7012a1cbf02f1ff3203f8015bf1e70b4610b562b1013a08d013f8014b00f8014b002cf7d1581a013810bd0022027013f8012b002afbd1f5e7034613f8012b002afbd1181a013870470246014410b58a42134603d01c780132002cf8d1181a10bd +e0000000d30612b0506c7567696e20706172616d65746572732073747275637475726520697320626967676572207468616e20616c6c6f7765642073697a650a0053656c6563746f7220696e6465783a202564206e6f7420737570706f727465640a0053656e640052656365697665204d696e2e00200053776170004572726f723a2073656c6563746f72206e6f7420666f756e64210a00457468657265756d003000506172616d206e6f7420737570706f727465643a2025640a004554480030313233343536373839616263646566004552524f520030 +e0000000d3061380780053656c6563746f7220496e646578206e6f7420737570706f727465643a2025640a00556e68616e646c6564206d6573736167652025640a0042656e656669636961727900657863657074696f6e5b3078253034585d3a204c523d3078253038580a004572726f723a206f766572666c6f77206465746563746564206f6e2073656c6563746f7220696e646578210a00526563656976656420616e20696e76616c69642073637265656e496e6465780a005265636569766564206e756c6c20706172616d65746572730a00706c7567 +e0000000d3061450696e2070726f7669646520706172616d657465723a206f66667365742025640a42797465733a20252e2a480a00506c7567696e426f696c6572706c6174650045786974696e6720666f6c6c6f77696e6720657863657074696f6e3a2025640a004d697373696e672073656c6563746f72496e6465783a2025640a0040004000214e01004c011f8b08000000000002fffbff9fce60b1a0f27a3cd2d7041818c4eee394fe9bc00004f938e57f81a419d870ca3f06cb33e3b46011589e01a70b170c98fcbf772000955ffbeeeddb77ef50c2 +e0000000d30615202dd9d8c8d8d85800222f6c0c0266086ffe3560c004025670f9cb0cd800229c12b0ca23220287bc3eccf106d8e5f9a925af4063f307a3fb199584c0e1fbefd6aa550258226fedddbba0f8fbbb18abd18ceb602907bbd5524446fd2fecd24cb0a4f35900ab3c3c8b7ec4ae9f0b26ff8180fc2702f29f19f0dbff4b00bffb71f89f311f7fd64184dfff64a06a2c16c0f3f8bf55ab9629608fbff7f8e35f995af9eb2ff1fad5b29619e2910795ddd704709b0ff6f5429cfab950d31486bc1d846f804b7e3d4a318a290f8dd58b68f2300319 +e0000000d30615f0a1f297a0f2f268890026ff08bdfc7b8c9a6a2ea1979f7f1550e4a1caad50eb3d74fd6af7695f1d0300c214e80400080000400040000201cb14dec000506c7567696e426f696c6572706c6174650030313233343536373839616263646566303132333435363738394142434445460000b56af37f4242371300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +e0000000d30616c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +e0000000d3061790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111506c7567696e426f696c6572706c6174650205312e302e300381c12000200021b90000b7001f8b08000000000002fffbff1f3bd82c988bccfd6bc0c086ccff26c0c0b01f99cfc0c0301f17fff6eedd9b81fcecddbbf781b83f1518a08051 +e00000008d0618601864c6250604b007f23720f1f9a9cb57d2ff7f2dcd00cecdbefbfeb781009ccb0c54fc1949333790ff0189af0be47f44e37f43e27382022a11c16706f9eef7cc04b880daeefdb8dcc7a884c267b4be3b19990f74da6f05243ec8690950fe46a8533640f98f813ed283f2f3412e3080cbb3dd478f670060df5da900020000040a01028000002c8000003c +e00000000107 +e000000009080000000018ea120a +e00000000109 diff --git a/tests/plugin_binaries/stax/bin/app.elf b/tests/plugin_binaries/stax/bin/app.elf new file mode 100644 index 00000000..d84128d6 Binary files /dev/null and b/tests/plugin_binaries/stax/bin/app.elf differ diff --git a/tests/plugin_binaries/stax/bin/app.hex b/tests/plugin_binaries/stax/bin/app.hex new file mode 100644 index 00000000..c7c98170 --- /dev/null +++ b/tests/plugin_binaries/stax/bin/app.hex @@ -0,0 +1,402 @@ +:02000004C0DE5C +:100000008CB0044662B600F0DDFC6D46284601F077 +:10001000F5F881B2ADF82C0071B9684600F006FF22 +:100020000A90F4B1206840F2FF11884202D0616862 +:1000300000F036FC00F0DCFE0A980C460021ADF81A +:100040002C1000F0F3FE08482146784400F0F2FC42 +:1000500000F0E2FEA842EDD10A9800F0E7FE00F0C1 +:10006000C7FE00F05DFC00BF4114000003B44FF078 +:10007000480007E003B44FF05A0003E003B44FF028 +:100080008700FFE700490847018081002DE9F0451E +:100090008FB092460C46DDE91621054622F0010399 +:1000A00083F01E030B4318D102AF10463A463323A8 +:1000B00000F06AF8D8B33846332101F0EDF8304942 +:1000C0003B18C0F133027944184601F0A5F83846D0 +:1000D000332101F0E1F8074600E000270DF10808A0 +:1000E000284E07EB080002387E444FF0FF3100BF76 +:1000F0006A18527801311309F35C02F00F02B25C06 +:1001000000F8023F13294270F2D150464FF480713B +:10011000FFF7B0FF58B9202007F12803019050469F +:1001200001214246CDF80080FFF7A0FF18B1002062 +:100130000FB0BDE8F08500204FF0040C0DE000BFCB +:1001400018F803108CEA8703D940B25C090748BF4E +:10015000203A2254013028280BD04308E95C10F0E3 +:10016000010701F00F0208BF0A09092AE8D8B25CAA +:10017000EFE7002084F8280001200FB0BDE8F085EB +:10018000B51200007C1200002DE9F04D9846924611 +:100190000F460646002200BFD5B26C1C44452FD244 +:1001A0009346304639460A22002300F04DFED6F130 +:1001B00009024FF00002BA4100EB8002A6EB4202B6 +:1001C00042F030020AF805200BF1010206460F4604 +:1001D000E2D3D0B200215FEA0B620AF800100FD020 +:1001E0004FF0FF300AEB00014A781AF805300AF8A0 +:1001F00005204B70811C013DA94200F10100F1D3A3 +:100200000020444538BF0120BDE8F08D2DE9F04DB8 +:100210009B4614460E46012907460FD138783028F0 +:100220000CD1BBF1020F4FF0000038BFBDE8F08DDC +:100230003021217060700120BDE8F08DDDF820C014 +:10024000B44505D206F1020EDE4507D9002040E094 +:100250000CF1030ADA4513D9002072E0B6EB0C0268 +:100260001ED0ACEB06034FF0FF3200BFB918A51843 +:1002700001324978981801306970F7D1531C10E0A9 +:100280003020BCEB060820704FF02E00607048D084 +:10029000A01C4146302200F06CFF08F1020C42E045 +:1002A0000023BCF1000F9C461EBF03F1010C2E2061 +:1002B000E054B34260460AD2D819471EF31A624688 +:1002C00017F8011F501CA154013B0246F8D1002130 +:1002D0002154DE4584BF0020BDE8F08D0023844515 +:1002E0004FF0000111D24242ACF10100002100BFE9 +:1002F00027187F780130002908BF0146302F02EB14 +:10030000000718BF19460137F2D1002993D0481EC3 +:10031000235C00222E2B625408BF22540120BDE82A +:10032000F08D4FF0020C60464EB1791E634600BF5F +:1003300011F8012F581CE254013E0346F8D1002168 +:100340002154DA4584BF0020BDE8F08DC6E70000E7 +:100350002DE9F04589B092460A460146202A4FF021 +:1003600000003CD801AECDE90700CDE90500CDE99C +:100370000300CDE90100B01A2030984600F0F5FEE8 +:100380003046202100F066F830B1B8F1020F29D2D2 +:10039000002009B0BDE8F085002000BF36F810103D +:1003A00009BA090C26F8101001301028F6D101AE58 +:1003B0003046202100F04EF8B0FA80F14FEA511497 +:1003C000D0B14746A8EB07050AEB070150462A467D +:1003D00000F0CDFE00200AF8050084F0010009B00D +:1003E000BDE8F0851A4950467944424600F037FF8F +:1003F000012009B0BDE8F085B8F1000FEDD0134D34 +:10040000474600BF0020002136F8102042EA014193 +:10041000A1FB0523DA0802EB820326F81020013045 +:100420001028A1EB4301EFD1013F41F030000AF861 +:1004300007003046202100F00DF8B0FA80F10028C6 +:100440004FEA5114BED1002FDCD1C6E7CDCCCCCCC5 +:100450005D0F000000298C4618BF4FF0010C0FD033 +:1004600003786BB9012300BF8B424FF0000C38BFFB +:100470004FF0010C994203D0C25C0133002AF3D043 +:100480008CF0010070472DE9F04D9AB001AC0D469B +:100490000746204664211E46924600F063FE384619 +:1004A000294622466423FFF753FF80B3DDE9228B00 +:1004B00001A8642100F0F0FE074630460B2100F051 +:1004C000EBFEC4B205462246404631465C4588BF35 +:1004D0005A4600F04AFE002C1EBF0135202008F8C5 +:1004E0000400E8B208EB0002C043F9B200EB0B03D2 +:1004F00001A8CDF800A0FFF789FE00281EBF0BEB76 +:100500000801002201F8012C1AB0BDE8F08D00208E +:100510001AB0BDE8F08D80B5142A28BF1422891ABC +:10052000203100F024FE80BD80B5202A28BF202283 +:1005300000F01DFE80BDB0B5044640F20220A56863 +:10054000A083A06905F12001142200F017FE032109 +:10055000002805F1340008BF0221E0600420617723 +:10056000A077B0BDB0B582B004460078062828D187 +:100570002069592805D81948784400F05BFA002012 +:1005800020E0E5685A21284600F0ECFD606900F0A3 +:100590002FF8134901AB7944022200F0FFFB60B150 +:1005A0000198B0F5807F85F859000ED2C1B20229BA +:1005B0000ED285F85500042004E00A48784400F083 +:1005C00039FA0120607002B0B0BD07487844D4E722 +:1005D0000648784400F02EFA0020F3E7340D0000BE +:1005E000C6100000640D0000140E0000DA0E0000BA +:1005F0004278017883781204C07842EA016141EAC6 +:100600000321084470470000B0B50446D0E9025306 +:1006100001690C482022784400F00CFA95F8591032 +:1006200004200129207508BFB0BD21B92046294604 +:1006300000F00CF8B0BD0448784400F0FBF900204D +:100640002075B0BD320E0000460D0000B0B50C465E +:1006500091F85810054649B1B4F85600296904309C +:10066000814218BFB0BD002084F8580094F855109E +:1006700001290FDD02291AD0032925D0042935D1FB +:10068000288A3C30A4F85600012084F8580084F8E9 +:100690005500B0BD09B3012928D1E96804F134003F +:1006A0001422FFF738FF052084F85500B0BDE96833 +:1006B00004F120001422FFF72EFF042084F85500D7 +:1006C000012084F85800B0BDE86800F019F8A4F8DB +:1006D0005600022084F85500B0BDE968204620226B +:1006E000FFF722FF032084F85500B0BD034878448B +:1006F00000F0A0F900202875B0BD00BF590C000023 +:10070000817FC07F40EA012080B27047B0B50446C7 +:10071000C068A56858B1C07FE16885F8530005F14D +:10072000480014310B2200F09AFD012000E0002067 +:1007300085F8540004206075B0BD0000B0B50446D3 +:10074000D0E9025022690B49794400F088FD95F800 +:10075000591031B10948784400F06CF90020207735 +:10076000B0BDD4E905020449794400F078FD0420C5 +:100770002077B0BD310D0000B30B00008F0B0000DF +:10078000B0B50446C569406AA16A00F0EBFCD4E943 +:100790000B0100F0E7FC94F82000022806D00128A5 +:1007A00009D068B9204600F019F80EE02046294625 +:1007B00000F056F809E02046294600F02DF804E044 +:1007C0000548784400F036F90020002818BF0420BE +:1007D00084F83400B0BD00BF4B0C000010B582B0EF +:1007E0000446406AA26A0A49794400F038FD60680C +:1007F000E26A0068246B90F862100092054B423068 +:100800007B4412220194FFF73EFE02B010BD00BFF0 +:100810001F0B0000600B0000B0B582B00446406AB8 +:10082000A26A0D460D49794400F019FD95F854006F +:1008300005F1480395F85310002808BF04F1100390 +:10084000D4E90B0408BF12210090CAB22846202127 +:100850000194FFF718FE02B0B0BD00BFE60A000029 +:10086000B0B582B00446406AA26A0D460B4979448D +:1008700000F0F5FCE06A30210170E06A78214170F7 +:100880002168E36A0A6805F12000991C0023CDE97C +:100890000033FFF7FBFB02B0B0BD00BF480B000008 +:1008A00080B591B10246B0F5827F13DA40F20110B3 +:1008B00082421BD0B2F5817F1CD040F203108242ED +:1008C00024D10846FFF737FE80BD1448784400F075 +:1008D000B1F880BD12D040F20510824212D0B2F5BC +:1008E000837F13D10846FFF74BFF80BD0846FFF713 +:1008F00039FE80BD0846FFF787FE80BD0846FFF73A +:1009000005FF80BD0846FFF719FF80BD024811466C +:10091000784400F08FF880BD900A0000620B000060 +:1009200070B5E6B0234859AE784461904FF48070BA +:10093000629001206390002064901F483146784403 +:100940003CC83CC102881D480A80784401788278FE +:10095000C378457842EA032241EA052141EA02418F +:10096000427A037A569143EA0221427910F8043F11 +:10097000ADF860118178C07843EA022241EA002094 +:1009800042EA004057900E496C46794420464FF4A5 +:10099000AB7200F0EAFB200CADF8600156A85F9046 +:1009A0005EA8659061A8ADF85E415E9600F012FA0F +:1009B00066B070BD140A0000EA0C0000D30C000001 +:1009C0003D0B000080B5002000F030FA80BD000033 +:1009D0000446704600F00EF8024605482146784469 +:1009E00000F028F800F018FA214600F00DFC00BFD6 +:1009F000E40900000349024A7944401A1044704750 +:100A00000000DEC005F6FFFFB0B582B005465F20EE +:100A10008DF80400080A0C468DF805008DF80610C4 +:100A200001A8032100F0ECF9A1B2284600F0E8F992 +:100A300002B0B0BD83B02DE9F04D89B0CDE91112FF +:100A4000139320B10446007811A9039158B909B055 +:100A5000BDE8F04D03B0704741466C1EFFF7D4FF70 +:100A600020780028F3D00026A05D18B1252801D0F9 +:100A70000136F9E720463146A519FFF7C5FFA05D0D +:100A80002C462528ECD1691C00274FF0200C4FF094 +:100A9000000800204D1C15F8011C01352D2915DC1E +:100AA0004FF00000F7D0252974D02A2940F00281A8 +:100AB000294611F8010D732840F0FC800398021DAF +:100AC0000392D0F800800220E4E700BF472929DC28 +:100AD000A1F130020A2A0DD281F030023A4307EB2D +:100AE000870201EB420108BF4FF0300CA1F1300743 +:100AF000691ECFE72E2940F0DD8015F8010C2A2869 +:100B000040F0D8802878482804D0732802D068287C +:100B100040F0D0800399081D0390D1F80080012097 +:100B20002946B7E7672908DD722910DD732933D01C +:100B3000752936D0782910D0BCE0622916DC482906 +:100B400000F0A280582940F0B580012406E0682911 +:100B500000F09D80702940F0AD800024039810269D +:100B6000011D039100680890012022E0632900F034 +:100B7000A580642940F09E800398011D03910068C0 +:100B8000B0F1FF3F089011DC4042089000200A2697 +:100B900000240EE0A81E97E07A4979448A46002195 +:100BA00079E00398011D039100680890002401205A +:100BB0000A26DDF820A0564502D94FF0010B10E0BF +:100BC000DDF820A07B1E31468B46A6FB0112002AD1 +:100BD00018BF012251451F4603D8002AA7F101037F +:100BE000F2D018B14FF0000801230DE05FFA8CF14C +:100BF000302906D12D2101234FF001088DF8101066 +:100C000002E000234FF0000880F00100391A8A1E2C +:100C10000D2A11D801390FD04042019004A8404458 +:100C20005FFA8CF2029300F0A4FA019908EB070036 +:100C3000029B0844A0F10108002B04A802BF2D214B +:100C400000F8081008F10108BBF1000F3FF404AFF1 +:100C50005049A8F101077944BAFBFBF2002CB2FB22 +:100C6000F6F303FB16224C4B7B4408BF0B469A5C01 +:100C70005E45BBFBF6FB00EB070307F101075A706B +:100C8000EAD907F10108E7E63F49794401E03C4928 +:100C900079448A460121039AC0B2131D0393D2F806 +:100CA00000B0B0B101281CD002283DD19BF8000053 +:100CB000002857D031480521784406E00398011DEB +:100CC00003910068089008A80121FFF79DFE6C1EA3 +:100CD000C6E600201BF800200130002AFAD1A0F15E +:100CE000010821B3B8F1000F27D00021002604AF7E +:100CF00003E000BF0136B0451CD01BF806007B188E +:100D0000020900F00F001AF800001AF802205870CB +:100D1000C81C7A54102801F102015446EAD338461F +:100D2000FFF772FE0021E5E7B0460029DAD1584608 +:100D3000414606E0474619B905E00027002111B1F8 +:100D400004A8FFF761FE4745A5F101047FF688AED0 +:100D5000A8EB07050E4801217844FFF755FE013541 +:100D6000F8D37DE608F10104084801217844FFF733 +:100D70004BFE013CF8D1B046E5E700BFBD060000E0 +:100D8000AA090000A00A0000C0090000AD0500008B +:100D9000C1050000E4090000E209000080B54AB185 +:100DA0004FF0000C51F82CE0864505D00CF1010CF9 +:100DB0006245F7D1002080BD1BB10120C3F800C0FF +:100DC00080BD012080BD01DF002900D170470846A9 +:100DD000FFF7FEFD80B582B000900020019003482F +:100DE0006946FFF7F0FF02B080BD00BF6700000159 +:100DF00082B00020019069466820FFF7E4FFFFDE23 +:100E000080B582B0CDE9000102486946FFF7DBFFFB +:100E100002B080BD8300000280B582B00020019046 +:100E200069468720FFF7CFFF02B080BD80B582B052 +:100E300000900020019003486946FFF7C4FF02B00C +:100E400080BD00BF0B01000153B94AB9002908BF9A +:100E500000281CBF4FF0FF314FF0FF3000F00CB8FE +:100E6000ADF1080C6DE904CE00F008F8DDF804E0FF +:100E7000DDE9022304B07047704700BF2DE9F04F51 +:100E8000099E0D4604460F46002B47D18A429446E0 +:100E90005FD9B2FA82F343B1C3F120019F4002FA55 +:100EA00003FC9C4020FA01F10F434FEA1C451FFA56 +:100EB0008CFE220CB7FBF5F105FB117701FB0EF060 +:100EC00042EA0742904208D91CEB020201F1FF37C7 +:100ED00002D2904200F234813946121AA4B2B2FB17 +:100EE000F5F005FB102200FB0EFE44EA0244A64585 +:100EF00008D91CEB040400F1FF3202D2A64500F22F +:100F00001981104640EA0140A4EB0E0400211EB1F5 +:100F1000DC400023C6E90043BDE8F08F8B4208D9CE +:100F2000002E00F0FB800021C6E900050846BDE860 +:100F3000F08FB3FA83F100294BD1AB42C0F0F180BE +:100F4000824240F2EE800846002EE5D0C6E9004716 +:100F5000E2E702B9FFDEB2FA82F3002B40F09D8097 +:100F60008D1A4FEA124E97B20121B5FBFEF20EFB2D +:100F70001250250C45EA004507FB02F0A8420FD9A4 +:100F80001CEB050502F1FF382CBF4FF001094FF0B3 +:100F90000009A84203D9B9F1000F00F0CE80424603 +:100FA0002D1AA4B2B5FBFEF00EFB105500FB07F79F +:100FB00044EA0544A74208D91CEB040400F1FF35BC +:100FC00002D2A74200F2B3802846E41B40EA024066 +:100FD0009DE7C1F120078B4005FA01F422FA07FCD6 +:100FE000FD408A404CEA030C20FA07F34FEA1C4903 +:100FF0001C431FFA8CFE00FA01F3200CB5FBF9F834 +:1010000009FB185540EA054508FB0EF0A8420FD928 +:101010001CEB050508F1FF3A2CBF4FF0010B4FF018 +:10102000000BA84203D9BBF1000F00F08C80D04622 +:101030002D1AA4B2B5FBF9F009FB105500FB0EFE0A +:1010400044EA0545AE4507D91CEB050500F1FF3420 +:1010500001D2AE457ED8204640EA0840A5EB0E05F9 +:10106000A0FB029845454C46C64602D306D14B45E7 +:1010700004D20138B9EB020468EB0C0E002E6FD0DD +:101080001A1B65EB0E0522FA01F305FA07F7CD40AE +:1010900000211F43C6E900753EE702FA03FCC3F1D5 +:1010A000200001FA03F24FEA1C4EC14024FA00F579 +:1010B0001FFA8CF79C401543B1FBFEF02A0C0EFB87 +:1010C000101142EA014200FB07F191420ED91CEBDC +:1010D000020200F1FF382CBF4FF001094FF0000968 +:1010E000914202D9B9F1000F31D04046521AADB247 +:1010F000B2FBFEF10EFB112245EA024501FB07F2AD +:10110000AA4207D91CEB050501F1FF3801D2AA421A +:1011100023D84146AD1A41EA004126E73146304620 +:10112000FAE6841A65EB030301201F460CE76444CA +:1011300002384AE764440238E4E6023A65442FE79D +:1011400002396244C9E6A8F10208654470E7023832 +:101150006244CBE7023865447EE702396544D9E74B +:101160003146D9E6002200F004B800F017B800F0CC +:1011700022B813460A46194600F037B8013902442E +:1011800010B5904201D1002005E0037811F8014F1D +:10119000A34201D0181B10BD0130F2E70A44431EE0 +:1011A000914200D1704710B511F8014B914203F8FC +:1011B000014FF9D110BD884210B501EB020402D9EC +:1011C0008442234607D8431EA14208D011F8012BC0 +:1011D00003F8012FF8E7024401468A4200D110BD0E +:1011E00013F8014D02F8014DF7E70244034693421C +:1011F00000D1704703F8011BF9E70000EC46A0E8B6 +:10120000F05F4FF000007047B0E8F05FE54608007F +:1012100008BF0120704700BF70B504460846161984 +:101220002146B1420B4606D11C1B121B08D100F00F +:101230002BF8204470BD1D780131002DF1D1F3E76A +:101240000646314616F8015B15B9081A1D70F0E71D +:10125000012A1CBF02F1FF3203F8015BF1E70B46E4 +:1012600010B562B1013A08D013F8014B00F8014BF8 +:10127000002CF7D1581A013810BD0022027013F863 +:10128000012B002AFBD1F5E7034613F8012B002AB6 +:10129000FBD1181A013870470246014410B58A4242 +:1012A000134603D01C780132002CF8D1181A10BD57 +:1012B000506C7567696E20706172616D65746572DE +:1012C000732073747275637475726520697320621C +:1012D0006967676572207468616E20616C6C6F77F6 +:1012E00065642073697A650A0053656C6563746F81 +:1012F0007220696E6465783A202564206E6F7420D0 +:10130000737570706F727465640A0053656E640063 +:1013100052656365697665204D696E2E0020005325 +:10132000776170004572726F723A2073656C656305 +:10133000746F72206E6F7420666F756E64210A0080 +:10134000457468657265756D003000506172616D3D +:10135000206E6F7420737570706F727465643A20BC +:1013600025640A004554480030313233343536376D +:101370003839616263646566004552524F520030ED +:10138000780053656C6563746F7220496E6465788C +:10139000206E6F7420737570706F727465643A207C +:1013A00025640A00556E68616E646C6564206D6525 +:1013B00073736167652025640A0042656E6566691E +:1013C000636961727900657863657074696F6E5BDB +:1013D0003078253034585D3A204C523D30782530F5 +:1013E00038580A004572726F723A206F76657266DD +:1013F0006C6F77206465746563746564206F6E201C +:1014000073656C6563746F7220696E646578210A18 +:1014100000526563656976656420616E20696E7649 +:10142000616C69642073637265656E496E6465788A +:101430000A005265636569766564206E756C6C2080 +:10144000706172616D65746572730A00706C7567A6 +:10145000696E2070726F7669646520706172616D6B +:10146000657465723A206F66667365742025640A38 +:1014700042797465733A20252E2A480A00506C750B +:1014800067696E426F696C6572706C617465004566 +:10149000786974696E6720666F6C6C6F77696E67C8 +:1014A00020657863657074696F6E3A2025640A0060 +:1014B0004D697373696E672073656C6563746F72D1 +:1014C000496E6465783A2025640A00400040002196 +:1014D0004E01004C011F8B08000000000002FFFBC2 +:1014E000FF9FCE60B1A0F27A3CD2D7041818C4EEA8 +:1014F000E394FE9BC00004F938E57F81A419D870FD +:10150000CA3F06CB33E3B46011589E01A70B170CFA +:1015100098FCBF772000955FFBEEEDDB77EF50C2C4 +:101520002DD9D8C8D8D85800222F6C0C0266086F65 +:10153000FE3560C004025670F9CB0CD800229C1214 +:10154000B0CA23220287BC3ECCF106D8E5F9A92512 +:10155000AF4063F307A3FB199584C0E1FBEFD6AA64 +:10156000550258226FEDDDBBA0F8FBBB18ABD18C48 +:10157000EB602907BBD5524446FD2FECD24CB0A4FA +:10158000F35900AB3C3C8B7EC4AE9F0B26FF8180A1 +:10159000FC2702F29F19F0DBFF4B00BFFB71F89FA5 +:1015A000311F7FD64184DFFF64A06A2C16C0F3F898 +:1015B000BF55AB9629608FBFF7F8E35F995AF9EBF7 +:1015C0002FF1FAD5B29619E2910795DDD704709BF9 +:1015D0000FF6F5429CFAB950D31486BC1D846F8077 +:1015E0004B7E3D4A318A290F8DD58B68F230031925 +:1015F000A1F297A0F2F268890026FF08BDFC7B8C5F +:101600009A6A2EA1979F7F1550E4A1CAAD50EB3D79 +:1016100074FD6AF7695F1D0300C214E80400080046 +:1016200000400040000201CB14DEC000506C756722 +:10163000696E426F696C6572706C617465003031FF +:101640003233343536373839616263646566303138 +:101650003233343536373839414243444546000049 +:10166000B56AF37F4242371300000000000000001B +:10167000000000000000000000000000000000006A +:10168000000000000000000000000000000000005A +:10169000000000000000000000000000000000004A +:1016A000000000000000000000000000000000003A +:1016B000000000000000000000000000000000002A +:1016C000000000000000000000000000000000001A +:1016D000000000000000000000000000000000000A +:1016E00000000000000000000000000000000000FA +:1016F00000000000000000000000000000000000EA +:1017000000000000000000000000000000000000D9 +:1017100000000000000000000000000000000000C9 +:1017200000000000000000000000000000000000B9 +:1017300000000000000000000000000000000000A9 +:101740000000000000000000000000000000000099 +:101750000000000000000000000000000000000089 +:101760000000000000000000000000000000000079 +:101770000000000000000000000000000000000069 +:101780000000000000000000000000000000000059 +:101790000000000000000000000000000000000049 +:1017A0000000000000000000000000000000000039 +:1017B0000000000000000000000000000000000029 +:1017C0000000000000000000000000000000000019 +:1017D0000000000000000000000000000000000009 +:1017E00000000000000000000000000000000000F9 +:1017F00000000000000000000000000000000000E9 +:101800000111506C7567696E426F696C6572706C1E +:101810006174650205312E302E300381C120002015 +:101820000021B90000B7001F8B0800000000000273 +:10183000FFFBFF1F3BD82C988BCCFD6BC0C086CC28 +:10184000FF26C0C0B01F99CFC0C0301F17FFF6EEF3 +:10185000DD9B81FCECDDBBF781B83F1518A0805102 +:101860001864C6250604B007F23720F1F9A9CB5752 +:10187000D2FF7F2DCD00CECDBEFBFEB781009CCB2D +:101880000C54FC1949333790FF0189AF0BE47F44B6 +:10189000E37F43E27382022A11C16706F9EEF7CCB7 +:1018A00004B880DAEEFDB8DCC7A884C267B4BE3BDA +:1018B00019990F74DA6F05243EC8690950FE46A8CD +:1018C000533640F98F813ED283F2F3412E3080CBE4 +:1018D000B3DD478F670060DF5DA900020000040AE6 +:0A18E00001028000002C8000003C93 +:04000005C0DE000158 +:00000001FF diff --git a/tests/plugin_binaries/stax/bin/app.sha256 b/tests/plugin_binaries/stax/bin/app.sha256 new file mode 100644 index 00000000..8a705235 --- /dev/null +++ b/tests/plugin_binaries/stax/bin/app.sha256 @@ -0,0 +1 @@ +72e80774112a1cbdd180b23302579e3af1b5ea804c26cbe71ff95b7aa5822493 diff --git a/tests/snapshots/.DS_Store b/tests/snapshots/.DS_Store new file mode 100644 index 00000000..5008ddfc Binary files /dev/null and b/tests/snapshots/.DS_Store differ diff --git a/tests/snapshots/nanos/test_swap_exact_eth_for_token/00000.png b/tests/snapshots/nanos/test_oeth_curve_swap_from_oeth/00000.png similarity index 100% rename from tests/snapshots/nanos/test_swap_exact_eth_for_token/00000.png rename to tests/snapshots/nanos/test_oeth_curve_swap_from_oeth/00000.png diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_from_oeth/00001.png b/tests/snapshots/nanos/test_oeth_curve_swap_from_oeth/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_from_oeth/00001.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_from_oeth/00002.png b/tests/snapshots/nanos/test_oeth_curve_swap_from_oeth/00002.png new file mode 100644 index 00000000..8c346121 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_from_oeth/00002.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_from_oeth/00003.png b/tests/snapshots/nanos/test_oeth_curve_swap_from_oeth/00003.png new file mode 100644 index 00000000..32c76dfe Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_from_oeth/00003.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_from_oeth/00004.png b/tests/snapshots/nanos/test_oeth_curve_swap_from_oeth/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_from_oeth/00004.png differ diff --git a/tests/snapshots/nanos/test_swap_exact_eth_for_token/00008.png b/tests/snapshots/nanos/test_oeth_curve_swap_from_oeth/00005.png similarity index 100% rename from tests/snapshots/nanos/test_swap_exact_eth_for_token/00008.png rename to tests/snapshots/nanos/test_oeth_curve_swap_from_oeth/00005.png diff --git a/tests/snapshots/nanos/test_swap_exact_eth_for_token/00009.png b/tests/snapshots/nanos/test_oeth_curve_swap_from_oeth/00006.png similarity index 100% rename from tests/snapshots/nanos/test_swap_exact_eth_for_token/00009.png rename to tests/snapshots/nanos/test_oeth_curve_swap_from_oeth/00006.png diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_eth_to_oeth/00000.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_eth_to_oeth/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_eth_to_oeth/00000.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_eth_to_oeth/00001.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_eth_to_oeth/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_eth_to_oeth/00001.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_eth_to_oeth/00002.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_eth_to_oeth/00002.png new file mode 100644 index 00000000..096a2e4c Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_eth_to_oeth/00002.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_eth_to_oeth/00003.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_eth_to_oeth/00003.png new file mode 100644 index 00000000..0b9c638e Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_eth_to_oeth/00003.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_eth_to_oeth/00004.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_eth_to_oeth/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_eth_to_oeth/00004.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_eth_to_oeth/00005.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_eth_to_oeth/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_eth_to_oeth/00005.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_eth_to_oeth/00006.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_eth_to_oeth/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_eth_to_oeth/00006.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_eth/00000.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_eth/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_eth/00000.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_eth/00001.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_eth/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_eth/00001.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_eth/00002.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_eth/00002.png new file mode 100644 index 00000000..8c346121 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_eth/00002.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_eth/00003.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_eth/00003.png new file mode 100644 index 00000000..ab6f8f28 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_eth/00003.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_eth/00004.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_eth/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_eth/00004.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_eth/00005.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_eth/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_eth/00005.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_eth/00006.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_eth/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_eth/00006.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_reth/00000.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_reth/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_reth/00000.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_reth/00001.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_reth/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_reth/00001.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_reth/00002.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_reth/00002.png new file mode 100644 index 00000000..8c346121 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_reth/00002.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_reth/00003.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_reth/00003.png new file mode 100644 index 00000000..64bb86a6 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_reth/00003.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_reth/00004.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_reth/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_reth/00004.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_reth/00005.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_reth/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_reth/00005.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_reth/00006.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_reth/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_oeth_to_reth/00006.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_reth_to_oeth/00000.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_reth_to_oeth/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_reth_to_oeth/00000.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_reth_to_oeth/00001.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_reth_to_oeth/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_reth_to_oeth/00001.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_reth_to_oeth/00002.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_reth_to_oeth/00002.png new file mode 100644 index 00000000..f6894ea4 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_reth_to_oeth/00002.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_reth_to_oeth/00003.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_reth_to_oeth/00003.png new file mode 100644 index 00000000..0b9c638e Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_reth_to_oeth/00003.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_reth_to_oeth/00004.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_reth_to_oeth/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_reth_to_oeth/00004.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_reth_to_oeth/00005.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_reth_to_oeth/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_reth_to_oeth/00005.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_multiple_reth_to_oeth/00006.png b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_reth_to_oeth/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_multiple_reth_to_oeth/00006.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_to_oeth/00000.png b/tests/snapshots/nanos/test_oeth_curve_swap_to_oeth/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_to_oeth/00000.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_to_oeth/00001.png b/tests/snapshots/nanos/test_oeth_curve_swap_to_oeth/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_to_oeth/00001.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_to_oeth/00002.png b/tests/snapshots/nanos/test_oeth_curve_swap_to_oeth/00002.png new file mode 100644 index 00000000..096a2e4c Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_to_oeth/00002.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_to_oeth/00003.png b/tests/snapshots/nanos/test_oeth_curve_swap_to_oeth/00003.png new file mode 100644 index 00000000..40197e4f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_to_oeth/00003.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_to_oeth/00004.png b/tests/snapshots/nanos/test_oeth_curve_swap_to_oeth/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_to_oeth/00004.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_to_oeth/00005.png b/tests/snapshots/nanos/test_oeth_curve_swap_to_oeth/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_to_oeth/00005.png differ diff --git a/tests/snapshots/nanos/test_oeth_curve_swap_to_oeth/00006.png b/tests/snapshots/nanos/test_oeth_curve_swap_to_oeth/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_curve_swap_to_oeth/00006.png differ diff --git a/tests/snapshots/nanos/test_oeth_unwrap/00000.png b/tests/snapshots/nanos/test_oeth_unwrap/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_unwrap/00000.png differ diff --git a/tests/snapshots/nanos/test_oeth_unwrap/00001.png b/tests/snapshots/nanos/test_oeth_unwrap/00001.png new file mode 100644 index 00000000..5a47e686 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_unwrap/00001.png differ diff --git a/tests/snapshots/nanos/test_oeth_unwrap/00002.png b/tests/snapshots/nanos/test_oeth_unwrap/00002.png new file mode 100644 index 00000000..0ff80553 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_unwrap/00002.png differ diff --git a/tests/snapshots/nanos/test_oeth_unwrap/00003.png b/tests/snapshots/nanos/test_oeth_unwrap/00003.png new file mode 100644 index 00000000..387f76b3 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_unwrap/00003.png differ diff --git a/tests/snapshots/nanos/test_oeth_unwrap/00004.png b/tests/snapshots/nanos/test_oeth_unwrap/00004.png new file mode 100644 index 00000000..795c84c7 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_unwrap/00004.png differ diff --git a/tests/snapshots/nanos/test_oeth_unwrap/00005.png b/tests/snapshots/nanos/test_oeth_unwrap/00005.png new file mode 100644 index 00000000..33e72c6e Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_unwrap/00005.png differ diff --git a/tests/snapshots/nanos/test_oeth_unwrap/00006.png b/tests/snapshots/nanos/test_oeth_unwrap/00006.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_unwrap/00006.png differ diff --git a/tests/snapshots/nanos/test_oeth_unwrap/00007.png b/tests/snapshots/nanos/test_oeth_unwrap/00007.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_unwrap/00007.png differ diff --git a/tests/snapshots/nanos/test_oeth_unwrap/00008.png b/tests/snapshots/nanos/test_oeth_unwrap/00008.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_unwrap/00008.png differ diff --git a/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00000.png b/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00000.png differ diff --git a/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00001.png b/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00001.png new file mode 100644 index 00000000..5a47e686 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00001.png differ diff --git a/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00002.png b/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00002.png new file mode 100644 index 00000000..0ff80553 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00002.png differ diff --git a/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00003.png b/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00003.png new file mode 100644 index 00000000..f7f3a795 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00003.png differ diff --git a/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00004.png b/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00004.png new file mode 100644 index 00000000..52a88db0 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00004.png differ diff --git a/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00005.png b/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00005.png new file mode 100644 index 00000000..322e781c Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00005.png differ diff --git a/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00006.png b/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00006.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00006.png differ diff --git a/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00007.png b/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00007.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00007.png differ diff --git a/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00008.png b/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00008.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_unwrap_different_beneficiary/00008.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_frxeth/00000.png b/tests/snapshots/nanos/test_oeth_vault_mint_frxeth/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_frxeth/00000.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_frxeth/00001.png b/tests/snapshots/nanos/test_oeth_vault_mint_frxeth/00001.png new file mode 100644 index 00000000..c95cc427 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_frxeth/00001.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_frxeth/00002.png b/tests/snapshots/nanos/test_oeth_vault_mint_frxeth/00002.png new file mode 100644 index 00000000..477a7a0f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_frxeth/00002.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_frxeth/00003.png b/tests/snapshots/nanos/test_oeth_vault_mint_frxeth/00003.png new file mode 100644 index 00000000..419220c7 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_frxeth/00003.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_frxeth/00004.png b/tests/snapshots/nanos/test_oeth_vault_mint_frxeth/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_frxeth/00004.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_frxeth/00005.png b/tests/snapshots/nanos/test_oeth_vault_mint_frxeth/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_frxeth/00005.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_frxeth/00006.png b/tests/snapshots/nanos/test_oeth_vault_mint_frxeth/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_frxeth/00006.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_reth/00000.png b/tests/snapshots/nanos/test_oeth_vault_mint_reth/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_reth/00000.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_reth/00001.png b/tests/snapshots/nanos/test_oeth_vault_mint_reth/00001.png new file mode 100644 index 00000000..c95cc427 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_reth/00001.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_reth/00002.png b/tests/snapshots/nanos/test_oeth_vault_mint_reth/00002.png new file mode 100644 index 00000000..c90057b5 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_reth/00002.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_reth/00003.png b/tests/snapshots/nanos/test_oeth_vault_mint_reth/00003.png new file mode 100644 index 00000000..419220c7 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_reth/00003.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_reth/00004.png b/tests/snapshots/nanos/test_oeth_vault_mint_reth/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_reth/00004.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_reth/00005.png b/tests/snapshots/nanos/test_oeth_vault_mint_reth/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_reth/00005.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_reth/00006.png b/tests/snapshots/nanos/test_oeth_vault_mint_reth/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_reth/00006.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_steth/00000.png b/tests/snapshots/nanos/test_oeth_vault_mint_steth/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_steth/00000.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_steth/00001.png b/tests/snapshots/nanos/test_oeth_vault_mint_steth/00001.png new file mode 100644 index 00000000..c95cc427 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_steth/00001.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_steth/00002.png b/tests/snapshots/nanos/test_oeth_vault_mint_steth/00002.png new file mode 100644 index 00000000..25ca34d4 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_steth/00002.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_steth/00003.png b/tests/snapshots/nanos/test_oeth_vault_mint_steth/00003.png new file mode 100644 index 00000000..419220c7 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_steth/00003.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_steth/00004.png b/tests/snapshots/nanos/test_oeth_vault_mint_steth/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_steth/00004.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_steth/00005.png b/tests/snapshots/nanos/test_oeth_vault_mint_steth/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_steth/00005.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_steth/00006.png b/tests/snapshots/nanos/test_oeth_vault_mint_steth/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_steth/00006.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_weth/00000.png b/tests/snapshots/nanos/test_oeth_vault_mint_weth/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_weth/00000.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_weth/00001.png b/tests/snapshots/nanos/test_oeth_vault_mint_weth/00001.png new file mode 100644 index 00000000..c95cc427 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_weth/00001.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_weth/00002.png b/tests/snapshots/nanos/test_oeth_vault_mint_weth/00002.png new file mode 100644 index 00000000..ac8d450d Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_weth/00002.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_weth/00003.png b/tests/snapshots/nanos/test_oeth_vault_mint_weth/00003.png new file mode 100644 index 00000000..419220c7 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_weth/00003.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_weth/00004.png b/tests/snapshots/nanos/test_oeth_vault_mint_weth/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_weth/00004.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_weth/00005.png b/tests/snapshots/nanos/test_oeth_vault_mint_weth/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_weth/00005.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_mint_weth/00006.png b/tests/snapshots/nanos/test_oeth_vault_mint_weth/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_mint_weth/00006.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_redeem/00000.png b/tests/snapshots/nanos/test_oeth_vault_redeem/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_redeem/00000.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_redeem/00001.png b/tests/snapshots/nanos/test_oeth_vault_redeem/00001.png new file mode 100644 index 00000000..6f10884d Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_redeem/00001.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_redeem/00002.png b/tests/snapshots/nanos/test_oeth_vault_redeem/00002.png new file mode 100644 index 00000000..b0fccf0f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_redeem/00002.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_redeem/00003.png b/tests/snapshots/nanos/test_oeth_vault_redeem/00003.png new file mode 100644 index 00000000..d8441be5 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_redeem/00003.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_redeem/00004.png b/tests/snapshots/nanos/test_oeth_vault_redeem/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_redeem/00004.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_redeem/00005.png b/tests/snapshots/nanos/test_oeth_vault_redeem/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_redeem/00005.png differ diff --git a/tests/snapshots/nanos/test_oeth_vault_redeem/00006.png b/tests/snapshots/nanos/test_oeth_vault_redeem/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_vault_redeem/00006.png differ diff --git a/tests/snapshots/nanos/test_oeth_wrap/00000.png b/tests/snapshots/nanos/test_oeth_wrap/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_wrap/00000.png differ diff --git a/tests/snapshots/nanos/test_oeth_wrap/00001.png b/tests/snapshots/nanos/test_oeth_wrap/00001.png new file mode 100644 index 00000000..310a0870 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_wrap/00001.png differ diff --git a/tests/snapshots/nanos/test_oeth_wrap/00002.png b/tests/snapshots/nanos/test_oeth_wrap/00002.png new file mode 100644 index 00000000..b8f922c2 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_wrap/00002.png differ diff --git a/tests/snapshots/nanos/test_oeth_wrap/00003.png b/tests/snapshots/nanos/test_oeth_wrap/00003.png new file mode 100644 index 00000000..387f76b3 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_wrap/00003.png differ diff --git a/tests/snapshots/nanos/test_oeth_wrap/00004.png b/tests/snapshots/nanos/test_oeth_wrap/00004.png new file mode 100644 index 00000000..795c84c7 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_wrap/00004.png differ diff --git a/tests/snapshots/nanos/test_oeth_wrap/00005.png b/tests/snapshots/nanos/test_oeth_wrap/00005.png new file mode 100644 index 00000000..33e72c6e Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_wrap/00005.png differ diff --git a/tests/snapshots/nanos/test_oeth_wrap/00006.png b/tests/snapshots/nanos/test_oeth_wrap/00006.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_wrap/00006.png differ diff --git a/tests/snapshots/nanos/test_oeth_wrap/00007.png b/tests/snapshots/nanos/test_oeth_wrap/00007.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_wrap/00007.png differ diff --git a/tests/snapshots/nanos/test_oeth_wrap/00008.png b/tests/snapshots/nanos/test_oeth_wrap/00008.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_wrap/00008.png differ diff --git a/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00000.png b/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00000.png differ diff --git a/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00001.png b/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00001.png new file mode 100644 index 00000000..310a0870 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00001.png differ diff --git a/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00002.png b/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00002.png new file mode 100644 index 00000000..b8f922c2 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00002.png differ diff --git a/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00003.png b/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00003.png new file mode 100644 index 00000000..f7f3a795 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00003.png differ diff --git a/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00004.png b/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00004.png new file mode 100644 index 00000000..52a88db0 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00004.png differ diff --git a/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00005.png b/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00005.png new file mode 100644 index 00000000..322e781c Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00005.png differ diff --git a/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00006.png b/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00006.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00006.png differ diff --git a/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00007.png b/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00007.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00007.png differ diff --git a/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00008.png b/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00008.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_wrap_different_beneficiary/00008.png differ diff --git a/tests/snapshots/nanos/test_oeth_zapper_deposit_eth/00000.png b/tests/snapshots/nanos/test_oeth_zapper_deposit_eth/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_zapper_deposit_eth/00000.png differ diff --git a/tests/snapshots/nanos/test_oeth_zapper_deposit_eth/00001.png b/tests/snapshots/nanos/test_oeth_zapper_deposit_eth/00001.png new file mode 100644 index 00000000..c95cc427 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_zapper_deposit_eth/00001.png differ diff --git a/tests/snapshots/nanos/test_oeth_zapper_deposit_eth/00002.png b/tests/snapshots/nanos/test_oeth_zapper_deposit_eth/00002.png new file mode 100644 index 00000000..a04ea4d0 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_zapper_deposit_eth/00002.png differ diff --git a/tests/snapshots/nanos/test_oeth_zapper_deposit_eth/00003.png b/tests/snapshots/nanos/test_oeth_zapper_deposit_eth/00003.png new file mode 100644 index 00000000..419220c7 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_zapper_deposit_eth/00003.png differ diff --git a/tests/snapshots/nanos/test_oeth_zapper_deposit_eth/00004.png b/tests/snapshots/nanos/test_oeth_zapper_deposit_eth/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_zapper_deposit_eth/00004.png differ diff --git a/tests/snapshots/nanos/test_oeth_zapper_deposit_eth/00005.png b/tests/snapshots/nanos/test_oeth_zapper_deposit_eth/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_zapper_deposit_eth/00005.png differ diff --git a/tests/snapshots/nanos/test_oeth_zapper_deposit_eth/00006.png b/tests/snapshots/nanos/test_oeth_zapper_deposit_eth/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_zapper_deposit_eth/00006.png differ diff --git a/tests/snapshots/nanos/test_oeth_zapper_deposit_sfrxeth/00000.png b/tests/snapshots/nanos/test_oeth_zapper_deposit_sfrxeth/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_zapper_deposit_sfrxeth/00000.png differ diff --git a/tests/snapshots/nanos/test_oeth_zapper_deposit_sfrxeth/00001.png b/tests/snapshots/nanos/test_oeth_zapper_deposit_sfrxeth/00001.png new file mode 100644 index 00000000..c95cc427 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_zapper_deposit_sfrxeth/00001.png differ diff --git a/tests/snapshots/nanos/test_oeth_zapper_deposit_sfrxeth/00002.png b/tests/snapshots/nanos/test_oeth_zapper_deposit_sfrxeth/00002.png new file mode 100644 index 00000000..ab2b96ec Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_zapper_deposit_sfrxeth/00002.png differ diff --git a/tests/snapshots/nanos/test_oeth_zapper_deposit_sfrxeth/00003.png b/tests/snapshots/nanos/test_oeth_zapper_deposit_sfrxeth/00003.png new file mode 100644 index 00000000..51cf29a1 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_zapper_deposit_sfrxeth/00003.png differ diff --git a/tests/snapshots/nanos/test_oeth_zapper_deposit_sfrxeth/00004.png b/tests/snapshots/nanos/test_oeth_zapper_deposit_sfrxeth/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_zapper_deposit_sfrxeth/00004.png differ diff --git a/tests/snapshots/nanos/test_oeth_zapper_deposit_sfrxeth/00005.png b/tests/snapshots/nanos/test_oeth_zapper_deposit_sfrxeth/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_zapper_deposit_sfrxeth/00005.png differ diff --git a/tests/snapshots/nanos/test_oeth_zapper_deposit_sfrxeth/00006.png b/tests/snapshots/nanos/test_oeth_zapper_deposit_sfrxeth/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_oeth_zapper_deposit_sfrxeth/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_dai/00000.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_dai/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_dai/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_dai/00001.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_dai/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_dai/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_dai/00002.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_dai/00002.png new file mode 100644 index 00000000..632f94b5 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_dai/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_dai/00003.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_dai/00003.png new file mode 100644 index 00000000..57190acd Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_dai/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_dai/00004.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_dai/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_dai/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_dai/00005.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_dai/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_dai/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_dai/00006.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_dai/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_dai/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00000.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00001.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00002.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00002.png new file mode 100644 index 00000000..5600dc0a Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00003.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00003.png new file mode 100644 index 00000000..57190acd Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00004.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00005.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00006.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00007.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00007.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdc/00007.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00000.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00001.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00002.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00002.png new file mode 100644 index 00000000..f986f611 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00003.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00003.png new file mode 100644 index 00000000..57190acd Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00004.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00005.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00006.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00007.png b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00007.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_from_usdt/00007.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_dai/00000.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_dai/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_dai/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_dai/00001.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_dai/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_dai/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_dai/00002.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_dai/00002.png new file mode 100644 index 00000000..78d75380 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_dai/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_dai/00003.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_dai/00003.png new file mode 100644 index 00000000..58f15462 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_dai/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_dai/00004.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_dai/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_dai/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_dai/00005.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_dai/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_dai/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_dai/00006.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_dai/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_dai/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00000.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00001.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00002.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00002.png new file mode 100644 index 00000000..78d75380 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00003.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00003.png new file mode 100644 index 00000000..2abd5ebe Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00004.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00005.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00006.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00007.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00007.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdc/00007.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00000.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00001.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00002.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00002.png new file mode 100644 index 00000000..78d75380 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00003.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00003.png new file mode 100644 index 00000000..b773d07d Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00004.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00005.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00006.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00007.png b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00007.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_curve_swap_to_usdt/00007.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_dai/00000.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_dai/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_dai/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_dai/00001.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_dai/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_dai/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_dai/00002.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_dai/00002.png new file mode 100644 index 00000000..78d75380 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_dai/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_dai/00003.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_dai/00003.png new file mode 100644 index 00000000..37dfd040 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_dai/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_dai/00004.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_dai/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_dai/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_dai/00005.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_dai/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_dai/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_dai/00006.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_dai/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_dai/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00000.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00001.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00002.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00002.png new file mode 100644 index 00000000..78d75380 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00003.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00003.png new file mode 100644 index 00000000..8a57145c Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00004.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00005.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00006.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00007.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00007.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdc/00007.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00000.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00001.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00002.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00002.png new file mode 100644 index 00000000..78d75380 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00003.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00003.png new file mode 100644 index 00000000..8674965c Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00004.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00005.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00006.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00007.png b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00007.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_to_usdt/00007.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_dai/00000.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_dai/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_dai/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_dai/00001.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_dai/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_dai/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_dai/00002.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_dai/00002.png new file mode 100644 index 00000000..632f94b5 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_dai/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_dai/00003.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_dai/00003.png new file mode 100644 index 00000000..9b10ebfa Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_dai/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_dai/00004.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_dai/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_dai/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_dai/00005.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_dai/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_dai/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_dai/00006.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_dai/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_dai/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00000.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00001.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00002.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00002.png new file mode 100644 index 00000000..d802584f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00003.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00003.png new file mode 100644 index 00000000..af13bb8f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00004.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00004.png new file mode 100644 index 00000000..9b10ebfa Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00005.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00005.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00006.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00006.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00007.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00007.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdc/00007.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00000.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00001.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00002.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00002.png new file mode 100644 index 00000000..208c53c4 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00003.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00003.png new file mode 100644 index 00000000..af13bb8f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00004.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00004.png new file mode 100644 index 00000000..9b10ebfa Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00005.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00005.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00006.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00006.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00007.png b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00007.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_flipper_flip_with_usdt/00007.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_dai/00000.png b/tests/snapshots/nanos/test_ousd_univ3_swap_from_dai/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_dai/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_dai/00001.png b/tests/snapshots/nanos/test_ousd_univ3_swap_from_dai/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_dai/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_dai/00002.png b/tests/snapshots/nanos/test_ousd_univ3_swap_from_dai/00002.png new file mode 100644 index 00000000..0a222aab Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_dai/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_dai/00003.png b/tests/snapshots/nanos/test_ousd_univ3_swap_from_dai/00003.png new file mode 100644 index 00000000..9b10ebfa Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_dai/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_dai/00004.png b/tests/snapshots/nanos/test_ousd_univ3_swap_from_dai/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_dai/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_dai/00005.png b/tests/snapshots/nanos/test_ousd_univ3_swap_from_dai/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_dai/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_dai/00006.png b/tests/snapshots/nanos/test_ousd_univ3_swap_from_dai/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_dai/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdc/00000.png b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdc/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdc/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdc/00001.png b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdc/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdc/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdc/00002.png b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdc/00002.png new file mode 100644 index 00000000..e422cc81 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdc/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdc/00003.png b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdc/00003.png new file mode 100644 index 00000000..9b10ebfa Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdc/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdc/00004.png b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdc/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdc/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdc/00005.png b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdc/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdc/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdc/00006.png b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdc/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdc/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/.DS_Store b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/.DS_Store new file mode 100644 index 00000000..5008ddfc Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/.DS_Store differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/00000.png b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/00001.png b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/00002.png b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/00002.png new file mode 100644 index 00000000..bcc9fa60 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/00003.png b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/00003.png new file mode 100644 index 00000000..9b10ebfa Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/00004.png b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/00005.png b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/00006.png b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_from_usdt/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00000.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00001.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00002.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00002.png new file mode 100644 index 00000000..78d75380 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00003.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00003.png new file mode 100644 index 00000000..e289e399 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00004.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00005.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00006.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00007.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00007.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_dai/00007.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/.DS_Store b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/.DS_Store new file mode 100644 index 00000000..5008ddfc Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/.DS_Store differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00000.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00001.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00002.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00002.png new file mode 100644 index 00000000..78d75380 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00003.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00003.png new file mode 100644 index 00000000..3e76fdcc Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00004.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00005.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00006.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00007.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00007.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdc/00007.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00000.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00001.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00001.png new file mode 100644 index 00000000..0791458f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00002.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00002.png new file mode 100644 index 00000000..78d75380 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00003.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00003.png new file mode 100644 index 00000000..40e4ca8f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00004.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00005.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00006.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00007.png b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00007.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_univ3_swap_to_usdt/00007.png differ diff --git a/tests/snapshots/nanos/test_ousd_unwrap/00000.png b/tests/snapshots/nanos/test_ousd_unwrap/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_unwrap/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_unwrap/00001.png b/tests/snapshots/nanos/test_ousd_unwrap/00001.png new file mode 100644 index 00000000..5a47e686 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_unwrap/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_unwrap/00002.png b/tests/snapshots/nanos/test_ousd_unwrap/00002.png new file mode 100644 index 00000000..29f2519f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_unwrap/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_unwrap/00003.png b/tests/snapshots/nanos/test_ousd_unwrap/00003.png new file mode 100644 index 00000000..387f76b3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_unwrap/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_unwrap/00004.png b/tests/snapshots/nanos/test_ousd_unwrap/00004.png new file mode 100644 index 00000000..795c84c7 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_unwrap/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_unwrap/00005.png b/tests/snapshots/nanos/test_ousd_unwrap/00005.png new file mode 100644 index 00000000..33e72c6e Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_unwrap/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_unwrap/00006.png b/tests/snapshots/nanos/test_ousd_unwrap/00006.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_unwrap/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_unwrap/00007.png b/tests/snapshots/nanos/test_ousd_unwrap/00007.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_unwrap/00007.png differ diff --git a/tests/snapshots/nanos/test_ousd_unwrap/00008.png b/tests/snapshots/nanos/test_ousd_unwrap/00008.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_unwrap/00008.png differ diff --git a/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00000.png b/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00001.png b/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00001.png new file mode 100644 index 00000000..5a47e686 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00002.png b/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00002.png new file mode 100644 index 00000000..29f2519f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00003.png b/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00003.png new file mode 100644 index 00000000..f7f3a795 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00004.png b/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00004.png new file mode 100644 index 00000000..52a88db0 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00005.png b/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00005.png new file mode 100644 index 00000000..322e781c Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00006.png b/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00006.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00007.png b/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00007.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00007.png differ diff --git a/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00008.png b/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00008.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_unwrap_different_beneficiary/00008.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_mint_dai/00000.png b/tests/snapshots/nanos/test_ousd_vault_mint_dai/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_mint_dai/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_mint_dai/00001.png b/tests/snapshots/nanos/test_ousd_vault_mint_dai/00001.png new file mode 100644 index 00000000..c95cc427 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_mint_dai/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_mint_dai/00002.png b/tests/snapshots/nanos/test_ousd_vault_mint_dai/00002.png new file mode 100644 index 00000000..abadd815 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_mint_dai/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_mint_dai/00003.png b/tests/snapshots/nanos/test_ousd_vault_mint_dai/00003.png new file mode 100644 index 00000000..61ce9386 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_mint_dai/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_mint_dai/00004.png b/tests/snapshots/nanos/test_ousd_vault_mint_dai/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_mint_dai/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_mint_dai/00005.png b/tests/snapshots/nanos/test_ousd_vault_mint_dai/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_mint_dai/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_mint_dai/00006.png b/tests/snapshots/nanos/test_ousd_vault_mint_dai/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_mint_dai/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_mint_usdc/00000.png b/tests/snapshots/nanos/test_ousd_vault_mint_usdc/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_mint_usdc/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_mint_usdc/00001.png b/tests/snapshots/nanos/test_ousd_vault_mint_usdc/00001.png new file mode 100644 index 00000000..c95cc427 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_mint_usdc/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_mint_usdc/00002.png b/tests/snapshots/nanos/test_ousd_vault_mint_usdc/00002.png new file mode 100644 index 00000000..41064893 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_mint_usdc/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_mint_usdc/00003.png b/tests/snapshots/nanos/test_ousd_vault_mint_usdc/00003.png new file mode 100644 index 00000000..61ce9386 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_mint_usdc/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_mint_usdc/00004.png b/tests/snapshots/nanos/test_ousd_vault_mint_usdc/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_mint_usdc/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_mint_usdc/00005.png b/tests/snapshots/nanos/test_ousd_vault_mint_usdc/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_mint_usdc/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_mint_usdc/00006.png b/tests/snapshots/nanos/test_ousd_vault_mint_usdc/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_mint_usdc/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_mint_usdt/00000.png b/tests/snapshots/nanos/test_ousd_vault_mint_usdt/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_mint_usdt/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_mint_usdt/00001.png b/tests/snapshots/nanos/test_ousd_vault_mint_usdt/00001.png new file mode 100644 index 00000000..c95cc427 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_mint_usdt/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_mint_usdt/00002.png b/tests/snapshots/nanos/test_ousd_vault_mint_usdt/00002.png new file mode 100644 index 00000000..990e1db8 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_mint_usdt/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_mint_usdt/00003.png b/tests/snapshots/nanos/test_ousd_vault_mint_usdt/00003.png new file mode 100644 index 00000000..61ce9386 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_mint_usdt/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_mint_usdt/00004.png b/tests/snapshots/nanos/test_ousd_vault_mint_usdt/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_mint_usdt/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_mint_usdt/00005.png b/tests/snapshots/nanos/test_ousd_vault_mint_usdt/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_mint_usdt/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_mint_usdt/00006.png b/tests/snapshots/nanos/test_ousd_vault_mint_usdt/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_mint_usdt/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_redeem/00000.png b/tests/snapshots/nanos/test_ousd_vault_redeem/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_redeem/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_redeem/00001.png b/tests/snapshots/nanos/test_ousd_vault_redeem/00001.png new file mode 100644 index 00000000..6f10884d Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_redeem/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_redeem/00002.png b/tests/snapshots/nanos/test_ousd_vault_redeem/00002.png new file mode 100644 index 00000000..89e4d237 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_redeem/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_redeem/00003.png b/tests/snapshots/nanos/test_ousd_vault_redeem/00003.png new file mode 100644 index 00000000..b8b98b8d Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_redeem/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_redeem/00004.png b/tests/snapshots/nanos/test_ousd_vault_redeem/00004.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_redeem/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_redeem/00005.png b/tests/snapshots/nanos/test_ousd_vault_redeem/00005.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_redeem/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_vault_redeem/00006.png b/tests/snapshots/nanos/test_ousd_vault_redeem/00006.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_vault_redeem/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_wrap/00000.png b/tests/snapshots/nanos/test_ousd_wrap/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_wrap/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_wrap/00001.png b/tests/snapshots/nanos/test_ousd_wrap/00001.png new file mode 100644 index 00000000..310a0870 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_wrap/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_wrap/00002.png b/tests/snapshots/nanos/test_ousd_wrap/00002.png new file mode 100644 index 00000000..f9611f65 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_wrap/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_wrap/00003.png b/tests/snapshots/nanos/test_ousd_wrap/00003.png new file mode 100644 index 00000000..387f76b3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_wrap/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_wrap/00004.png b/tests/snapshots/nanos/test_ousd_wrap/00004.png new file mode 100644 index 00000000..795c84c7 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_wrap/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_wrap/00005.png b/tests/snapshots/nanos/test_ousd_wrap/00005.png new file mode 100644 index 00000000..33e72c6e Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_wrap/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_wrap/00006.png b/tests/snapshots/nanos/test_ousd_wrap/00006.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_wrap/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_wrap/00007.png b/tests/snapshots/nanos/test_ousd_wrap/00007.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_wrap/00007.png differ diff --git a/tests/snapshots/nanos/test_ousd_wrap/00008.png b/tests/snapshots/nanos/test_ousd_wrap/00008.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_wrap/00008.png differ diff --git a/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00000.png b/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00000.png new file mode 100644 index 00000000..8d84cc70 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00000.png differ diff --git a/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00001.png b/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00001.png new file mode 100644 index 00000000..310a0870 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00001.png differ diff --git a/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00002.png b/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00002.png new file mode 100644 index 00000000..f9611f65 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00002.png differ diff --git a/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00003.png b/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00003.png new file mode 100644 index 00000000..f7f3a795 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00003.png differ diff --git a/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00004.png b/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00004.png new file mode 100644 index 00000000..52a88db0 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00004.png differ diff --git a/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00005.png b/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00005.png new file mode 100644 index 00000000..322e781c Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00005.png differ diff --git a/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00006.png b/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00006.png new file mode 100644 index 00000000..1492e09f Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00006.png differ diff --git a/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00007.png b/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00007.png new file mode 100644 index 00000000..1c9156c3 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00007.png differ diff --git a/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00008.png b/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00008.png new file mode 100644 index 00000000..ce795f34 Binary files /dev/null and b/tests/snapshots/nanos/test_ousd_wrap_different_beneficiary/00008.png differ diff --git a/tests/snapshots/nanos/test_swap_exact_eth_for_token/00001.png b/tests/snapshots/nanos/test_swap_exact_eth_for_token/00001.png deleted file mode 100644 index 9ca56dc2..00000000 Binary files a/tests/snapshots/nanos/test_swap_exact_eth_for_token/00001.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_swap_exact_eth_for_token/00002.png b/tests/snapshots/nanos/test_swap_exact_eth_for_token/00002.png deleted file mode 100644 index 56481a39..00000000 Binary files a/tests/snapshots/nanos/test_swap_exact_eth_for_token/00002.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_swap_exact_eth_for_token/00003.png b/tests/snapshots/nanos/test_swap_exact_eth_for_token/00003.png deleted file mode 100644 index 7eb80fd6..00000000 Binary files a/tests/snapshots/nanos/test_swap_exact_eth_for_token/00003.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_swap_exact_eth_for_token/00004.png b/tests/snapshots/nanos/test_swap_exact_eth_for_token/00004.png deleted file mode 100644 index db2dd8c1..00000000 Binary files a/tests/snapshots/nanos/test_swap_exact_eth_for_token/00004.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_swap_exact_eth_for_token/00005.png b/tests/snapshots/nanos/test_swap_exact_eth_for_token/00005.png deleted file mode 100644 index cb94c7fa..00000000 Binary files a/tests/snapshots/nanos/test_swap_exact_eth_for_token/00005.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_swap_exact_eth_for_token/00006.png b/tests/snapshots/nanos/test_swap_exact_eth_for_token/00006.png deleted file mode 100644 index dda2fb66..00000000 Binary files a/tests/snapshots/nanos/test_swap_exact_eth_for_token/00006.png and /dev/null differ diff --git a/tests/snapshots/nanos/test_swap_exact_eth_for_token/00007.png b/tests/snapshots/nanos/test_swap_exact_eth_for_token/00007.png deleted file mode 100644 index 96b0111e..00000000 Binary files a/tests/snapshots/nanos/test_swap_exact_eth_for_token/00007.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_swap_exact_eth_for_token/00000.png b/tests/snapshots/nanosp/test_oeth_curve_swap_from_oeth/00000.png similarity index 100% rename from tests/snapshots/nanosp/test_swap_exact_eth_for_token/00000.png rename to tests/snapshots/nanosp/test_oeth_curve_swap_from_oeth/00000.png diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_from_oeth/00001.png b/tests/snapshots/nanosp/test_oeth_curve_swap_from_oeth/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_from_oeth/00001.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_from_oeth/00002.png b/tests/snapshots/nanosp/test_oeth_curve_swap_from_oeth/00002.png new file mode 100644 index 00000000..c52eb7ef Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_from_oeth/00002.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_from_oeth/00003.png b/tests/snapshots/nanosp/test_oeth_curve_swap_from_oeth/00003.png new file mode 100644 index 00000000..c2e4f154 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_from_oeth/00003.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_from_oeth/00004.png b/tests/snapshots/nanosp/test_oeth_curve_swap_from_oeth/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_from_oeth/00004.png differ diff --git a/tests/snapshots/nanosp/test_swap_exact_eth_for_token/00006.png b/tests/snapshots/nanosp/test_oeth_curve_swap_from_oeth/00005.png similarity index 100% rename from tests/snapshots/nanosp/test_swap_exact_eth_for_token/00006.png rename to tests/snapshots/nanosp/test_oeth_curve_swap_from_oeth/00005.png diff --git a/tests/snapshots/nanosp/test_swap_exact_eth_for_token/00007.png b/tests/snapshots/nanosp/test_oeth_curve_swap_from_oeth/00006.png similarity index 100% rename from tests/snapshots/nanosp/test_swap_exact_eth_for_token/00007.png rename to tests/snapshots/nanosp/test_oeth_curve_swap_from_oeth/00006.png diff --git a/tests/snapshots/nanox/test_swap_exact_eth_for_token/00000.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_eth_to_oeth/00000.png similarity index 100% rename from tests/snapshots/nanox/test_swap_exact_eth_for_token/00000.png rename to tests/snapshots/nanosp/test_oeth_curve_swap_multiple_eth_to_oeth/00000.png diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_eth_to_oeth/00001.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_eth_to_oeth/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_eth_to_oeth/00001.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_eth_to_oeth/00002.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_eth_to_oeth/00002.png new file mode 100644 index 00000000..ea439675 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_eth_to_oeth/00002.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_eth_to_oeth/00003.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_eth_to_oeth/00003.png new file mode 100644 index 00000000..a561172c Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_eth_to_oeth/00003.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_eth_to_oeth/00004.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_eth_to_oeth/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_eth_to_oeth/00004.png differ diff --git a/tests/snapshots/nanox/test_swap_exact_eth_for_token/00006.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_eth_to_oeth/00005.png similarity index 100% rename from tests/snapshots/nanox/test_swap_exact_eth_for_token/00006.png rename to tests/snapshots/nanosp/test_oeth_curve_swap_multiple_eth_to_oeth/00005.png diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_eth_to_oeth/00006.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_eth_to_oeth/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_eth_to_oeth/00006.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_eth/00000.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_eth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_eth/00000.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_eth/00001.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_eth/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_eth/00001.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_eth/00002.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_eth/00002.png new file mode 100644 index 00000000..c52eb7ef Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_eth/00002.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_eth/00003.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_eth/00003.png new file mode 100644 index 00000000..04432b72 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_eth/00003.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_eth/00004.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_eth/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_eth/00004.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_eth/00005.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_eth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_eth/00005.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_eth/00006.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_eth/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_eth/00006.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_reth/00000.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_reth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_reth/00000.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_reth/00001.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_reth/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_reth/00001.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_reth/00002.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_reth/00002.png new file mode 100644 index 00000000..c52eb7ef Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_reth/00002.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_reth/00003.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_reth/00003.png new file mode 100644 index 00000000..3286d176 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_reth/00003.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_reth/00004.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_reth/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_reth/00004.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_reth/00005.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_reth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_reth/00005.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_reth/00006.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_reth/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_oeth_to_reth/00006.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_reth_to_oeth/00000.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_reth_to_oeth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_reth_to_oeth/00000.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_reth_to_oeth/00001.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_reth_to_oeth/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_reth_to_oeth/00001.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_reth_to_oeth/00002.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_reth_to_oeth/00002.png new file mode 100644 index 00000000..0d789883 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_reth_to_oeth/00002.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_reth_to_oeth/00003.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_reth_to_oeth/00003.png new file mode 100644 index 00000000..a561172c Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_reth_to_oeth/00003.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_reth_to_oeth/00004.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_reth_to_oeth/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_reth_to_oeth/00004.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_reth_to_oeth/00005.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_reth_to_oeth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_reth_to_oeth/00005.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_reth_to_oeth/00006.png b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_reth_to_oeth/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_multiple_reth_to_oeth/00006.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_to_oeth/00000.png b/tests/snapshots/nanosp/test_oeth_curve_swap_to_oeth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_to_oeth/00000.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_to_oeth/00001.png b/tests/snapshots/nanosp/test_oeth_curve_swap_to_oeth/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_to_oeth/00001.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_to_oeth/00002.png b/tests/snapshots/nanosp/test_oeth_curve_swap_to_oeth/00002.png new file mode 100644 index 00000000..ea439675 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_to_oeth/00002.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_to_oeth/00003.png b/tests/snapshots/nanosp/test_oeth_curve_swap_to_oeth/00003.png new file mode 100644 index 00000000..9645b380 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_to_oeth/00003.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_to_oeth/00004.png b/tests/snapshots/nanosp/test_oeth_curve_swap_to_oeth/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_to_oeth/00004.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_to_oeth/00005.png b/tests/snapshots/nanosp/test_oeth_curve_swap_to_oeth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_to_oeth/00005.png differ diff --git a/tests/snapshots/nanosp/test_oeth_curve_swap_to_oeth/00006.png b/tests/snapshots/nanosp/test_oeth_curve_swap_to_oeth/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_curve_swap_to_oeth/00006.png differ diff --git a/tests/snapshots/nanosp/test_oeth_unwrap/00000.png b/tests/snapshots/nanosp/test_oeth_unwrap/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_unwrap/00000.png differ diff --git a/tests/snapshots/nanosp/test_oeth_unwrap/00001.png b/tests/snapshots/nanosp/test_oeth_unwrap/00001.png new file mode 100644 index 00000000..277305bb Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_unwrap/00001.png differ diff --git a/tests/snapshots/nanosp/test_oeth_unwrap/00002.png b/tests/snapshots/nanosp/test_oeth_unwrap/00002.png new file mode 100644 index 00000000..6c5ab466 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_unwrap/00002.png differ diff --git a/tests/snapshots/nanosp/test_oeth_unwrap/00003.png b/tests/snapshots/nanosp/test_oeth_unwrap/00003.png new file mode 100644 index 00000000..f3bbcde2 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_unwrap/00003.png differ diff --git a/tests/snapshots/nanosp/test_oeth_unwrap/00004.png b/tests/snapshots/nanosp/test_oeth_unwrap/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_unwrap/00004.png differ diff --git a/tests/snapshots/nanosp/test_oeth_unwrap/00005.png b/tests/snapshots/nanosp/test_oeth_unwrap/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_unwrap/00005.png differ diff --git a/tests/snapshots/nanosp/test_oeth_unwrap/00006.png b/tests/snapshots/nanosp/test_oeth_unwrap/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_unwrap/00006.png differ diff --git a/tests/snapshots/nanosp/test_oeth_unwrap_different_beneficiary/00000.png b/tests/snapshots/nanosp/test_oeth_unwrap_different_beneficiary/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_unwrap_different_beneficiary/00000.png differ diff --git a/tests/snapshots/nanosp/test_oeth_unwrap_different_beneficiary/00001.png b/tests/snapshots/nanosp/test_oeth_unwrap_different_beneficiary/00001.png new file mode 100644 index 00000000..277305bb Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_unwrap_different_beneficiary/00001.png differ diff --git a/tests/snapshots/nanosp/test_oeth_unwrap_different_beneficiary/00002.png b/tests/snapshots/nanosp/test_oeth_unwrap_different_beneficiary/00002.png new file mode 100644 index 00000000..6c5ab466 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_unwrap_different_beneficiary/00002.png differ diff --git a/tests/snapshots/nanosp/test_oeth_unwrap_different_beneficiary/00003.png b/tests/snapshots/nanosp/test_oeth_unwrap_different_beneficiary/00003.png new file mode 100644 index 00000000..3e97c405 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_unwrap_different_beneficiary/00003.png differ diff --git a/tests/snapshots/nanosp/test_oeth_unwrap_different_beneficiary/00004.png b/tests/snapshots/nanosp/test_oeth_unwrap_different_beneficiary/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_unwrap_different_beneficiary/00004.png differ diff --git a/tests/snapshots/nanosp/test_oeth_unwrap_different_beneficiary/00005.png b/tests/snapshots/nanosp/test_oeth_unwrap_different_beneficiary/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_unwrap_different_beneficiary/00005.png differ diff --git a/tests/snapshots/nanosp/test_oeth_unwrap_different_beneficiary/00006.png b/tests/snapshots/nanosp/test_oeth_unwrap_different_beneficiary/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_unwrap_different_beneficiary/00006.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_frxeth/00000.png b/tests/snapshots/nanosp/test_oeth_vault_mint_frxeth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_frxeth/00000.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_frxeth/00001.png b/tests/snapshots/nanosp/test_oeth_vault_mint_frxeth/00001.png new file mode 100644 index 00000000..59fad364 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_frxeth/00001.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_frxeth/00002.png b/tests/snapshots/nanosp/test_oeth_vault_mint_frxeth/00002.png new file mode 100644 index 00000000..2d552caa Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_frxeth/00002.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_frxeth/00003.png b/tests/snapshots/nanosp/test_oeth_vault_mint_frxeth/00003.png new file mode 100644 index 00000000..75002047 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_frxeth/00003.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_frxeth/00004.png b/tests/snapshots/nanosp/test_oeth_vault_mint_frxeth/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_frxeth/00004.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_frxeth/00005.png b/tests/snapshots/nanosp/test_oeth_vault_mint_frxeth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_frxeth/00005.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_frxeth/00006.png b/tests/snapshots/nanosp/test_oeth_vault_mint_frxeth/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_frxeth/00006.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_reth/00000.png b/tests/snapshots/nanosp/test_oeth_vault_mint_reth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_reth/00000.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_reth/00001.png b/tests/snapshots/nanosp/test_oeth_vault_mint_reth/00001.png new file mode 100644 index 00000000..59fad364 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_reth/00001.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_reth/00002.png b/tests/snapshots/nanosp/test_oeth_vault_mint_reth/00002.png new file mode 100644 index 00000000..fb5322f1 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_reth/00002.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_reth/00003.png b/tests/snapshots/nanosp/test_oeth_vault_mint_reth/00003.png new file mode 100644 index 00000000..75002047 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_reth/00003.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_reth/00004.png b/tests/snapshots/nanosp/test_oeth_vault_mint_reth/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_reth/00004.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_reth/00005.png b/tests/snapshots/nanosp/test_oeth_vault_mint_reth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_reth/00005.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_reth/00006.png b/tests/snapshots/nanosp/test_oeth_vault_mint_reth/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_reth/00006.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_steth/00000.png b/tests/snapshots/nanosp/test_oeth_vault_mint_steth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_steth/00000.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_steth/00001.png b/tests/snapshots/nanosp/test_oeth_vault_mint_steth/00001.png new file mode 100644 index 00000000..59fad364 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_steth/00001.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_steth/00002.png b/tests/snapshots/nanosp/test_oeth_vault_mint_steth/00002.png new file mode 100644 index 00000000..76fe1a8a Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_steth/00002.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_steth/00003.png b/tests/snapshots/nanosp/test_oeth_vault_mint_steth/00003.png new file mode 100644 index 00000000..75002047 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_steth/00003.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_steth/00004.png b/tests/snapshots/nanosp/test_oeth_vault_mint_steth/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_steth/00004.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_steth/00005.png b/tests/snapshots/nanosp/test_oeth_vault_mint_steth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_steth/00005.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_steth/00006.png b/tests/snapshots/nanosp/test_oeth_vault_mint_steth/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_steth/00006.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_weth/00000.png b/tests/snapshots/nanosp/test_oeth_vault_mint_weth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_weth/00000.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_weth/00001.png b/tests/snapshots/nanosp/test_oeth_vault_mint_weth/00001.png new file mode 100644 index 00000000..59fad364 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_weth/00001.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_weth/00002.png b/tests/snapshots/nanosp/test_oeth_vault_mint_weth/00002.png new file mode 100644 index 00000000..e6ccae1f Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_weth/00002.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_weth/00003.png b/tests/snapshots/nanosp/test_oeth_vault_mint_weth/00003.png new file mode 100644 index 00000000..75002047 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_weth/00003.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_weth/00004.png b/tests/snapshots/nanosp/test_oeth_vault_mint_weth/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_weth/00004.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_weth/00005.png b/tests/snapshots/nanosp/test_oeth_vault_mint_weth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_weth/00005.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_mint_weth/00006.png b/tests/snapshots/nanosp/test_oeth_vault_mint_weth/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_mint_weth/00006.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_redeem/00000.png b/tests/snapshots/nanosp/test_oeth_vault_redeem/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_redeem/00000.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_redeem/00001.png b/tests/snapshots/nanosp/test_oeth_vault_redeem/00001.png new file mode 100644 index 00000000..ddceadad Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_redeem/00001.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_redeem/00002.png b/tests/snapshots/nanosp/test_oeth_vault_redeem/00002.png new file mode 100644 index 00000000..7483d045 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_redeem/00002.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_redeem/00003.png b/tests/snapshots/nanosp/test_oeth_vault_redeem/00003.png new file mode 100644 index 00000000..bfe25c80 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_redeem/00003.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_redeem/00004.png b/tests/snapshots/nanosp/test_oeth_vault_redeem/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_redeem/00004.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_redeem/00005.png b/tests/snapshots/nanosp/test_oeth_vault_redeem/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_redeem/00005.png differ diff --git a/tests/snapshots/nanosp/test_oeth_vault_redeem/00006.png b/tests/snapshots/nanosp/test_oeth_vault_redeem/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_vault_redeem/00006.png differ diff --git a/tests/snapshots/nanosp/test_oeth_wrap/00000.png b/tests/snapshots/nanosp/test_oeth_wrap/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_wrap/00000.png differ diff --git a/tests/snapshots/nanosp/test_oeth_wrap/00001.png b/tests/snapshots/nanosp/test_oeth_wrap/00001.png new file mode 100644 index 00000000..297fb18b Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_wrap/00001.png differ diff --git a/tests/snapshots/nanosp/test_oeth_wrap/00002.png b/tests/snapshots/nanosp/test_oeth_wrap/00002.png new file mode 100644 index 00000000..26950568 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_wrap/00002.png differ diff --git a/tests/snapshots/nanosp/test_oeth_wrap/00003.png b/tests/snapshots/nanosp/test_oeth_wrap/00003.png new file mode 100644 index 00000000..f3bbcde2 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_wrap/00003.png differ diff --git a/tests/snapshots/nanosp/test_oeth_wrap/00004.png b/tests/snapshots/nanosp/test_oeth_wrap/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_wrap/00004.png differ diff --git a/tests/snapshots/nanosp/test_oeth_wrap/00005.png b/tests/snapshots/nanosp/test_oeth_wrap/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_wrap/00005.png differ diff --git a/tests/snapshots/nanosp/test_oeth_wrap/00006.png b/tests/snapshots/nanosp/test_oeth_wrap/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_wrap/00006.png differ diff --git a/tests/snapshots/nanosp/test_oeth_wrap_different_beneficiary/00000.png b/tests/snapshots/nanosp/test_oeth_wrap_different_beneficiary/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_wrap_different_beneficiary/00000.png differ diff --git a/tests/snapshots/nanosp/test_oeth_wrap_different_beneficiary/00001.png b/tests/snapshots/nanosp/test_oeth_wrap_different_beneficiary/00001.png new file mode 100644 index 00000000..297fb18b Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_wrap_different_beneficiary/00001.png differ diff --git a/tests/snapshots/nanosp/test_oeth_wrap_different_beneficiary/00002.png b/tests/snapshots/nanosp/test_oeth_wrap_different_beneficiary/00002.png new file mode 100644 index 00000000..26950568 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_wrap_different_beneficiary/00002.png differ diff --git a/tests/snapshots/nanosp/test_oeth_wrap_different_beneficiary/00003.png b/tests/snapshots/nanosp/test_oeth_wrap_different_beneficiary/00003.png new file mode 100644 index 00000000..3e97c405 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_wrap_different_beneficiary/00003.png differ diff --git a/tests/snapshots/nanosp/test_oeth_wrap_different_beneficiary/00004.png b/tests/snapshots/nanosp/test_oeth_wrap_different_beneficiary/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_wrap_different_beneficiary/00004.png differ diff --git a/tests/snapshots/nanosp/test_oeth_wrap_different_beneficiary/00005.png b/tests/snapshots/nanosp/test_oeth_wrap_different_beneficiary/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_wrap_different_beneficiary/00005.png differ diff --git a/tests/snapshots/nanosp/test_oeth_wrap_different_beneficiary/00006.png b/tests/snapshots/nanosp/test_oeth_wrap_different_beneficiary/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_wrap_different_beneficiary/00006.png differ diff --git a/tests/snapshots/nanosp/test_oeth_zapper_deposit_eth/00000.png b/tests/snapshots/nanosp/test_oeth_zapper_deposit_eth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_zapper_deposit_eth/00000.png differ diff --git a/tests/snapshots/nanosp/test_oeth_zapper_deposit_eth/00001.png b/tests/snapshots/nanosp/test_oeth_zapper_deposit_eth/00001.png new file mode 100644 index 00000000..59fad364 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_zapper_deposit_eth/00001.png differ diff --git a/tests/snapshots/nanosp/test_oeth_zapper_deposit_eth/00002.png b/tests/snapshots/nanosp/test_oeth_zapper_deposit_eth/00002.png new file mode 100644 index 00000000..20645af0 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_zapper_deposit_eth/00002.png differ diff --git a/tests/snapshots/nanosp/test_oeth_zapper_deposit_eth/00003.png b/tests/snapshots/nanosp/test_oeth_zapper_deposit_eth/00003.png new file mode 100644 index 00000000..75002047 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_zapper_deposit_eth/00003.png differ diff --git a/tests/snapshots/nanosp/test_oeth_zapper_deposit_eth/00004.png b/tests/snapshots/nanosp/test_oeth_zapper_deposit_eth/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_zapper_deposit_eth/00004.png differ diff --git a/tests/snapshots/nanosp/test_oeth_zapper_deposit_eth/00005.png b/tests/snapshots/nanosp/test_oeth_zapper_deposit_eth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_zapper_deposit_eth/00005.png differ diff --git a/tests/snapshots/nanosp/test_oeth_zapper_deposit_eth/00006.png b/tests/snapshots/nanosp/test_oeth_zapper_deposit_eth/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_zapper_deposit_eth/00006.png differ diff --git a/tests/snapshots/nanosp/test_oeth_zapper_deposit_sfrxeth/00000.png b/tests/snapshots/nanosp/test_oeth_zapper_deposit_sfrxeth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_zapper_deposit_sfrxeth/00000.png differ diff --git a/tests/snapshots/nanosp/test_oeth_zapper_deposit_sfrxeth/00001.png b/tests/snapshots/nanosp/test_oeth_zapper_deposit_sfrxeth/00001.png new file mode 100644 index 00000000..59fad364 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_zapper_deposit_sfrxeth/00001.png differ diff --git a/tests/snapshots/nanosp/test_oeth_zapper_deposit_sfrxeth/00002.png b/tests/snapshots/nanosp/test_oeth_zapper_deposit_sfrxeth/00002.png new file mode 100644 index 00000000..8436d0be Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_zapper_deposit_sfrxeth/00002.png differ diff --git a/tests/snapshots/nanosp/test_oeth_zapper_deposit_sfrxeth/00003.png b/tests/snapshots/nanosp/test_oeth_zapper_deposit_sfrxeth/00003.png new file mode 100644 index 00000000..aa909ef1 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_zapper_deposit_sfrxeth/00003.png differ diff --git a/tests/snapshots/nanosp/test_oeth_zapper_deposit_sfrxeth/00004.png b/tests/snapshots/nanosp/test_oeth_zapper_deposit_sfrxeth/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_zapper_deposit_sfrxeth/00004.png differ diff --git a/tests/snapshots/nanosp/test_oeth_zapper_deposit_sfrxeth/00005.png b/tests/snapshots/nanosp/test_oeth_zapper_deposit_sfrxeth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_zapper_deposit_sfrxeth/00005.png differ diff --git a/tests/snapshots/nanosp/test_oeth_zapper_deposit_sfrxeth/00006.png b/tests/snapshots/nanosp/test_oeth_zapper_deposit_sfrxeth/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_oeth_zapper_deposit_sfrxeth/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_from_dai/00000.png b/tests/snapshots/nanosp/test_ousd_curve_swap_from_dai/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_from_dai/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_from_dai/00001.png b/tests/snapshots/nanosp/test_ousd_curve_swap_from_dai/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_from_dai/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_from_dai/00002.png b/tests/snapshots/nanosp/test_ousd_curve_swap_from_dai/00002.png new file mode 100644 index 00000000..e1599663 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_from_dai/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_from_dai/00003.png b/tests/snapshots/nanosp/test_ousd_curve_swap_from_dai/00003.png new file mode 100644 index 00000000..21b5b3cc Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_from_dai/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_from_dai/00004.png b/tests/snapshots/nanosp/test_ousd_curve_swap_from_dai/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_from_dai/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_from_dai/00005.png b/tests/snapshots/nanosp/test_ousd_curve_swap_from_dai/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_from_dai/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_from_dai/00006.png b/tests/snapshots/nanosp/test_ousd_curve_swap_from_dai/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_from_dai/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdc/00000.png b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdc/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdc/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdc/00001.png b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdc/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdc/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdc/00002.png b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdc/00002.png new file mode 100644 index 00000000..fb7370f8 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdc/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdc/00003.png b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdc/00003.png new file mode 100644 index 00000000..21b5b3cc Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdc/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdc/00004.png b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdc/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdc/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdc/00005.png b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdc/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdc/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdc/00006.png b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdc/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdc/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdt/00000.png b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdt/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdt/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdt/00001.png b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdt/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdt/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdt/00002.png b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdt/00002.png new file mode 100644 index 00000000..84aea411 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdt/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdt/00003.png b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdt/00003.png new file mode 100644 index 00000000..21b5b3cc Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdt/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdt/00004.png b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdt/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdt/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdt/00005.png b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdt/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdt/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdt/00006.png b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdt/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_from_usdt/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_to_dai/00000.png b/tests/snapshots/nanosp/test_ousd_curve_swap_to_dai/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_to_dai/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_to_dai/00001.png b/tests/snapshots/nanosp/test_ousd_curve_swap_to_dai/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_to_dai/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_to_dai/00002.png b/tests/snapshots/nanosp/test_ousd_curve_swap_to_dai/00002.png new file mode 100644 index 00000000..ab52e6b6 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_to_dai/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_to_dai/00003.png b/tests/snapshots/nanosp/test_ousd_curve_swap_to_dai/00003.png new file mode 100644 index 00000000..78101534 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_to_dai/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_to_dai/00004.png b/tests/snapshots/nanosp/test_ousd_curve_swap_to_dai/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_to_dai/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_to_dai/00005.png b/tests/snapshots/nanosp/test_ousd_curve_swap_to_dai/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_to_dai/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_to_dai/00006.png b/tests/snapshots/nanosp/test_ousd_curve_swap_to_dai/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_to_dai/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdc/00000.png b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdc/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdc/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdc/00001.png b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdc/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdc/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdc/00002.png b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdc/00002.png new file mode 100644 index 00000000..ab52e6b6 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdc/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdc/00003.png b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdc/00003.png new file mode 100644 index 00000000..4ac8ceb2 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdc/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdc/00004.png b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdc/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdc/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdc/00005.png b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdc/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdc/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdc/00006.png b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdc/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdc/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdt/00000.png b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdt/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdt/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdt/00001.png b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdt/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdt/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdt/00002.png b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdt/00002.png new file mode 100644 index 00000000..ab52e6b6 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdt/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdt/00003.png b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdt/00003.png new file mode 100644 index 00000000..250c5aec Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdt/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdt/00004.png b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdt/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdt/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdt/00005.png b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdt/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdt/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdt/00006.png b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdt/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_curve_swap_to_usdt/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_to_dai/00000.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_dai/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_dai/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_to_dai/00001.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_dai/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_dai/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_to_dai/00002.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_dai/00002.png new file mode 100644 index 00000000..ab52e6b6 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_dai/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_to_dai/00003.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_dai/00003.png new file mode 100644 index 00000000..659a2088 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_dai/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_to_dai/00004.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_dai/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_dai/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_to_dai/00005.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_dai/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_dai/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_to_dai/00006.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_dai/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_dai/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdc/00000.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdc/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdc/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdc/00001.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdc/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdc/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdc/00002.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdc/00002.png new file mode 100644 index 00000000..ab52e6b6 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdc/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdc/00003.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdc/00003.png new file mode 100644 index 00000000..27dabd52 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdc/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdc/00004.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdc/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdc/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdc/00005.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdc/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdc/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdc/00006.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdc/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdc/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdt/00000.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdt/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdt/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdt/00001.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdt/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdt/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdt/00002.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdt/00002.png new file mode 100644 index 00000000..ab52e6b6 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdt/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdt/00003.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdt/00003.png new file mode 100644 index 00000000..8633a331 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdt/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdt/00004.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdt/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdt/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdt/00005.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdt/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdt/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdt/00006.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdt/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_to_usdt/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_with_dai/00000.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_dai/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_dai/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_with_dai/00001.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_dai/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_dai/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_with_dai/00002.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_dai/00002.png new file mode 100644 index 00000000..e1599663 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_dai/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_with_dai/00003.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_dai/00003.png new file mode 100644 index 00000000..7b52ffe2 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_dai/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_with_dai/00004.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_dai/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_dai/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_with_dai/00005.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_dai/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_dai/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_with_dai/00006.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_dai/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_dai/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdc/00000.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdc/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdc/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdc/00001.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdc/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdc/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdc/00002.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdc/00002.png new file mode 100644 index 00000000..68d3a5dc Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdc/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdc/00003.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdc/00003.png new file mode 100644 index 00000000..7b52ffe2 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdc/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdc/00004.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdc/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdc/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdc/00005.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdc/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdc/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdc/00006.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdc/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdc/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdt/00000.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdt/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdt/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdt/00001.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdt/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdt/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdt/00002.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdt/00002.png new file mode 100644 index 00000000..cb08ae9a Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdt/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdt/00003.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdt/00003.png new file mode 100644 index 00000000..7b52ffe2 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdt/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdt/00004.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdt/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdt/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdt/00005.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdt/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdt/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdt/00006.png b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdt/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_flipper_flip_with_usdt/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_from_dai/00000.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_dai/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_dai/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_from_dai/00001.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_dai/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_dai/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_from_dai/00002.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_dai/00002.png new file mode 100644 index 00000000..4211ee7e Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_dai/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_from_dai/00003.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_dai/00003.png new file mode 100644 index 00000000..7b52ffe2 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_dai/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_from_dai/00004.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_dai/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_dai/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_from_dai/00005.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_dai/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_dai/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_from_dai/00006.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_dai/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_dai/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdc/00000.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdc/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdc/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdc/00001.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdc/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdc/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdc/00002.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdc/00002.png new file mode 100644 index 00000000..42d3bad0 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdc/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdc/00003.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdc/00003.png new file mode 100644 index 00000000..7b52ffe2 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdc/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdc/00004.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdc/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdc/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdc/00005.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdc/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdc/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdc/00006.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdc/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdc/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdt/00000.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdt/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdt/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdt/00001.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdt/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdt/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdt/00002.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdt/00002.png new file mode 100644 index 00000000..bfcd2610 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdt/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdt/00003.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdt/00003.png new file mode 100644 index 00000000..7b52ffe2 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdt/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdt/00004.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdt/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdt/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdt/00005.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdt/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdt/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdt/00006.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdt/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_from_usdt/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_to_dai/00000.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_dai/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_dai/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_to_dai/00001.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_dai/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_dai/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_to_dai/00002.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_dai/00002.png new file mode 100644 index 00000000..ab52e6b6 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_dai/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_to_dai/00003.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_dai/00003.png new file mode 100644 index 00000000..e149bd74 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_dai/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_to_dai/00004.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_dai/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_dai/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_to_dai/00005.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_dai/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_dai/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_to_dai/00006.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_dai/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_dai/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdc/00000.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdc/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdc/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdc/00001.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdc/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdc/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdc/00002.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdc/00002.png new file mode 100644 index 00000000..ab52e6b6 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdc/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdc/00003.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdc/00003.png new file mode 100644 index 00000000..976e7b39 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdc/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdc/00004.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdc/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdc/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdc/00005.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdc/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdc/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdc/00006.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdc/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdc/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdt/00000.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdt/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdt/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdt/00001.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdt/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdt/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdt/00002.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdt/00002.png new file mode 100644 index 00000000..ab52e6b6 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdt/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdt/00003.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdt/00003.png new file mode 100644 index 00000000..e64415f4 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdt/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdt/00004.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdt/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdt/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdt/00005.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdt/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdt/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdt/00006.png b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdt/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_univ3_swap_to_usdt/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_unwrap/00000.png b/tests/snapshots/nanosp/test_ousd_unwrap/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_unwrap/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_unwrap/00001.png b/tests/snapshots/nanosp/test_ousd_unwrap/00001.png new file mode 100644 index 00000000..277305bb Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_unwrap/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_unwrap/00002.png b/tests/snapshots/nanosp/test_ousd_unwrap/00002.png new file mode 100644 index 00000000..827af867 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_unwrap/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_unwrap/00003.png b/tests/snapshots/nanosp/test_ousd_unwrap/00003.png new file mode 100644 index 00000000..f3bbcde2 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_unwrap/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_unwrap/00004.png b/tests/snapshots/nanosp/test_ousd_unwrap/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_unwrap/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_unwrap/00005.png b/tests/snapshots/nanosp/test_ousd_unwrap/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_unwrap/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_unwrap/00006.png b/tests/snapshots/nanosp/test_ousd_unwrap/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_unwrap/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_unwrap_different_beneficiary/00000.png b/tests/snapshots/nanosp/test_ousd_unwrap_different_beneficiary/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_unwrap_different_beneficiary/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_unwrap_different_beneficiary/00001.png b/tests/snapshots/nanosp/test_ousd_unwrap_different_beneficiary/00001.png new file mode 100644 index 00000000..277305bb Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_unwrap_different_beneficiary/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_unwrap_different_beneficiary/00002.png b/tests/snapshots/nanosp/test_ousd_unwrap_different_beneficiary/00002.png new file mode 100644 index 00000000..827af867 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_unwrap_different_beneficiary/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_unwrap_different_beneficiary/00003.png b/tests/snapshots/nanosp/test_ousd_unwrap_different_beneficiary/00003.png new file mode 100644 index 00000000..3e97c405 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_unwrap_different_beneficiary/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_unwrap_different_beneficiary/00004.png b/tests/snapshots/nanosp/test_ousd_unwrap_different_beneficiary/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_unwrap_different_beneficiary/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_unwrap_different_beneficiary/00005.png b/tests/snapshots/nanosp/test_ousd_unwrap_different_beneficiary/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_unwrap_different_beneficiary/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_unwrap_different_beneficiary/00006.png b/tests/snapshots/nanosp/test_ousd_unwrap_different_beneficiary/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_unwrap_different_beneficiary/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_mint_dai/00000.png b/tests/snapshots/nanosp/test_ousd_vault_mint_dai/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_mint_dai/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_mint_dai/00001.png b/tests/snapshots/nanosp/test_ousd_vault_mint_dai/00001.png new file mode 100644 index 00000000..59fad364 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_mint_dai/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_mint_dai/00002.png b/tests/snapshots/nanosp/test_ousd_vault_mint_dai/00002.png new file mode 100644 index 00000000..789004d5 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_mint_dai/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_mint_dai/00003.png b/tests/snapshots/nanosp/test_ousd_vault_mint_dai/00003.png new file mode 100644 index 00000000..06a20cb6 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_mint_dai/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_mint_dai/00004.png b/tests/snapshots/nanosp/test_ousd_vault_mint_dai/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_mint_dai/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_mint_dai/00005.png b/tests/snapshots/nanosp/test_ousd_vault_mint_dai/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_mint_dai/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_mint_dai/00006.png b/tests/snapshots/nanosp/test_ousd_vault_mint_dai/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_mint_dai/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_mint_usdc/00000.png b/tests/snapshots/nanosp/test_ousd_vault_mint_usdc/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_mint_usdc/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_mint_usdc/00001.png b/tests/snapshots/nanosp/test_ousd_vault_mint_usdc/00001.png new file mode 100644 index 00000000..59fad364 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_mint_usdc/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_mint_usdc/00002.png b/tests/snapshots/nanosp/test_ousd_vault_mint_usdc/00002.png new file mode 100644 index 00000000..cf1728ca Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_mint_usdc/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_mint_usdc/00003.png b/tests/snapshots/nanosp/test_ousd_vault_mint_usdc/00003.png new file mode 100644 index 00000000..06a20cb6 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_mint_usdc/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_mint_usdc/00004.png b/tests/snapshots/nanosp/test_ousd_vault_mint_usdc/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_mint_usdc/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_mint_usdc/00005.png b/tests/snapshots/nanosp/test_ousd_vault_mint_usdc/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_mint_usdc/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_mint_usdc/00006.png b/tests/snapshots/nanosp/test_ousd_vault_mint_usdc/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_mint_usdc/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_mint_usdt/00000.png b/tests/snapshots/nanosp/test_ousd_vault_mint_usdt/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_mint_usdt/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_mint_usdt/00001.png b/tests/snapshots/nanosp/test_ousd_vault_mint_usdt/00001.png new file mode 100644 index 00000000..59fad364 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_mint_usdt/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_mint_usdt/00002.png b/tests/snapshots/nanosp/test_ousd_vault_mint_usdt/00002.png new file mode 100644 index 00000000..67d5afb6 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_mint_usdt/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_mint_usdt/00003.png b/tests/snapshots/nanosp/test_ousd_vault_mint_usdt/00003.png new file mode 100644 index 00000000..06a20cb6 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_mint_usdt/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_mint_usdt/00004.png b/tests/snapshots/nanosp/test_ousd_vault_mint_usdt/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_mint_usdt/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_mint_usdt/00005.png b/tests/snapshots/nanosp/test_ousd_vault_mint_usdt/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_mint_usdt/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_mint_usdt/00006.png b/tests/snapshots/nanosp/test_ousd_vault_mint_usdt/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_mint_usdt/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_redeem/00000.png b/tests/snapshots/nanosp/test_ousd_vault_redeem/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_redeem/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_redeem/00001.png b/tests/snapshots/nanosp/test_ousd_vault_redeem/00001.png new file mode 100644 index 00000000..ddceadad Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_redeem/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_redeem/00002.png b/tests/snapshots/nanosp/test_ousd_vault_redeem/00002.png new file mode 100644 index 00000000..6119e28e Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_redeem/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_redeem/00003.png b/tests/snapshots/nanosp/test_ousd_vault_redeem/00003.png new file mode 100644 index 00000000..977ff24a Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_redeem/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_redeem/00004.png b/tests/snapshots/nanosp/test_ousd_vault_redeem/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_redeem/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_redeem/00005.png b/tests/snapshots/nanosp/test_ousd_vault_redeem/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_redeem/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_vault_redeem/00006.png b/tests/snapshots/nanosp/test_ousd_vault_redeem/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_vault_redeem/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_wrap/00000.png b/tests/snapshots/nanosp/test_ousd_wrap/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_wrap/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_wrap/00001.png b/tests/snapshots/nanosp/test_ousd_wrap/00001.png new file mode 100644 index 00000000..297fb18b Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_wrap/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_wrap/00002.png b/tests/snapshots/nanosp/test_ousd_wrap/00002.png new file mode 100644 index 00000000..2e0a144c Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_wrap/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_wrap/00003.png b/tests/snapshots/nanosp/test_ousd_wrap/00003.png new file mode 100644 index 00000000..f3bbcde2 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_wrap/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_wrap/00004.png b/tests/snapshots/nanosp/test_ousd_wrap/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_wrap/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_wrap/00005.png b/tests/snapshots/nanosp/test_ousd_wrap/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_wrap/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_wrap/00006.png b/tests/snapshots/nanosp/test_ousd_wrap/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_wrap/00006.png differ diff --git a/tests/snapshots/nanosp/test_ousd_wrap_different_beneficiary/00000.png b/tests/snapshots/nanosp/test_ousd_wrap_different_beneficiary/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_wrap_different_beneficiary/00000.png differ diff --git a/tests/snapshots/nanosp/test_ousd_wrap_different_beneficiary/00001.png b/tests/snapshots/nanosp/test_ousd_wrap_different_beneficiary/00001.png new file mode 100644 index 00000000..297fb18b Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_wrap_different_beneficiary/00001.png differ diff --git a/tests/snapshots/nanosp/test_ousd_wrap_different_beneficiary/00002.png b/tests/snapshots/nanosp/test_ousd_wrap_different_beneficiary/00002.png new file mode 100644 index 00000000..2e0a144c Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_wrap_different_beneficiary/00002.png differ diff --git a/tests/snapshots/nanosp/test_ousd_wrap_different_beneficiary/00003.png b/tests/snapshots/nanosp/test_ousd_wrap_different_beneficiary/00003.png new file mode 100644 index 00000000..3e97c405 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_wrap_different_beneficiary/00003.png differ diff --git a/tests/snapshots/nanosp/test_ousd_wrap_different_beneficiary/00004.png b/tests/snapshots/nanosp/test_ousd_wrap_different_beneficiary/00004.png new file mode 100644 index 00000000..c2c9b769 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_wrap_different_beneficiary/00004.png differ diff --git a/tests/snapshots/nanosp/test_ousd_wrap_different_beneficiary/00005.png b/tests/snapshots/nanosp/test_ousd_wrap_different_beneficiary/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_wrap_different_beneficiary/00005.png differ diff --git a/tests/snapshots/nanosp/test_ousd_wrap_different_beneficiary/00006.png b/tests/snapshots/nanosp/test_ousd_wrap_different_beneficiary/00006.png new file mode 100644 index 00000000..a58590b9 Binary files /dev/null and b/tests/snapshots/nanosp/test_ousd_wrap_different_beneficiary/00006.png differ diff --git a/tests/snapshots/nanosp/test_swap_exact_eth_for_token/00001.png b/tests/snapshots/nanosp/test_swap_exact_eth_for_token/00001.png deleted file mode 100644 index 8a2a784f..00000000 Binary files a/tests/snapshots/nanosp/test_swap_exact_eth_for_token/00001.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_swap_exact_eth_for_token/00002.png b/tests/snapshots/nanosp/test_swap_exact_eth_for_token/00002.png deleted file mode 100644 index 2a88e11a..00000000 Binary files a/tests/snapshots/nanosp/test_swap_exact_eth_for_token/00002.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_swap_exact_eth_for_token/00003.png b/tests/snapshots/nanosp/test_swap_exact_eth_for_token/00003.png deleted file mode 100644 index 18dac8ed..00000000 Binary files a/tests/snapshots/nanosp/test_swap_exact_eth_for_token/00003.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_swap_exact_eth_for_token/00004.png b/tests/snapshots/nanosp/test_swap_exact_eth_for_token/00004.png deleted file mode 100644 index d858b6f7..00000000 Binary files a/tests/snapshots/nanosp/test_swap_exact_eth_for_token/00004.png and /dev/null differ diff --git a/tests/snapshots/nanosp/test_swap_exact_eth_for_token/00005.png b/tests/snapshots/nanosp/test_swap_exact_eth_for_token/00005.png deleted file mode 100644 index d3508954..00000000 Binary files a/tests/snapshots/nanosp/test_swap_exact_eth_for_token/00005.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_from_oeth/00000.png b/tests/snapshots/nanox/test_oeth_curve_swap_from_oeth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_from_oeth/00000.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_from_oeth/00001.png b/tests/snapshots/nanox/test_oeth_curve_swap_from_oeth/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_from_oeth/00001.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_from_oeth/00002.png b/tests/snapshots/nanox/test_oeth_curve_swap_from_oeth/00002.png new file mode 100644 index 00000000..d4bf280f Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_from_oeth/00002.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_from_oeth/00003.png b/tests/snapshots/nanox/test_oeth_curve_swap_from_oeth/00003.png new file mode 100644 index 00000000..c2e4f154 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_from_oeth/00003.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_from_oeth/00004.png b/tests/snapshots/nanox/test_oeth_curve_swap_from_oeth/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_from_oeth/00004.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_from_oeth/00005.png b/tests/snapshots/nanox/test_oeth_curve_swap_from_oeth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_from_oeth/00005.png differ diff --git a/tests/snapshots/nanox/test_swap_exact_eth_for_token/00007.png b/tests/snapshots/nanox/test_oeth_curve_swap_from_oeth/00006.png similarity index 100% rename from tests/snapshots/nanox/test_swap_exact_eth_for_token/00007.png rename to tests/snapshots/nanox/test_oeth_curve_swap_from_oeth/00006.png diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_eth_to_oeth/00000.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_eth_to_oeth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_eth_to_oeth/00000.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_eth_to_oeth/00001.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_eth_to_oeth/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_eth_to_oeth/00001.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_eth_to_oeth/00002.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_eth_to_oeth/00002.png new file mode 100644 index 00000000..17c1e2c1 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_eth_to_oeth/00002.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_eth_to_oeth/00003.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_eth_to_oeth/00003.png new file mode 100644 index 00000000..a561172c Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_eth_to_oeth/00003.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_eth_to_oeth/00004.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_eth_to_oeth/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_eth_to_oeth/00004.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_eth_to_oeth/00005.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_eth_to_oeth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_eth_to_oeth/00005.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_eth_to_oeth/00006.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_eth_to_oeth/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_eth_to_oeth/00006.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_eth/00000.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_eth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_eth/00000.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_eth/00001.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_eth/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_eth/00001.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_eth/00002.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_eth/00002.png new file mode 100644 index 00000000..d4bf280f Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_eth/00002.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_eth/00003.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_eth/00003.png new file mode 100644 index 00000000..04432b72 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_eth/00003.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_eth/00004.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_eth/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_eth/00004.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_eth/00005.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_eth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_eth/00005.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_eth/00006.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_eth/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_eth/00006.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_reth/00000.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_reth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_reth/00000.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_reth/00001.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_reth/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_reth/00001.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_reth/00002.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_reth/00002.png new file mode 100644 index 00000000..d4bf280f Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_reth/00002.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_reth/00003.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_reth/00003.png new file mode 100644 index 00000000..3286d176 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_reth/00003.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_reth/00004.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_reth/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_reth/00004.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_reth/00005.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_reth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_reth/00005.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_reth/00006.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_reth/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_oeth_to_reth/00006.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_reth_to_oeth/00000.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_reth_to_oeth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_reth_to_oeth/00000.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_reth_to_oeth/00001.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_reth_to_oeth/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_reth_to_oeth/00001.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_reth_to_oeth/00002.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_reth_to_oeth/00002.png new file mode 100644 index 00000000..8c66a87b Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_reth_to_oeth/00002.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_reth_to_oeth/00003.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_reth_to_oeth/00003.png new file mode 100644 index 00000000..a561172c Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_reth_to_oeth/00003.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_reth_to_oeth/00004.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_reth_to_oeth/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_reth_to_oeth/00004.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_reth_to_oeth/00005.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_reth_to_oeth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_reth_to_oeth/00005.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_multiple_reth_to_oeth/00006.png b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_reth_to_oeth/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_multiple_reth_to_oeth/00006.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_to_oeth/00000.png b/tests/snapshots/nanox/test_oeth_curve_swap_to_oeth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_to_oeth/00000.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_to_oeth/00001.png b/tests/snapshots/nanox/test_oeth_curve_swap_to_oeth/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_to_oeth/00001.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_to_oeth/00002.png b/tests/snapshots/nanox/test_oeth_curve_swap_to_oeth/00002.png new file mode 100644 index 00000000..17c1e2c1 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_to_oeth/00002.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_to_oeth/00003.png b/tests/snapshots/nanox/test_oeth_curve_swap_to_oeth/00003.png new file mode 100644 index 00000000..9645b380 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_to_oeth/00003.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_to_oeth/00004.png b/tests/snapshots/nanox/test_oeth_curve_swap_to_oeth/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_to_oeth/00004.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_to_oeth/00005.png b/tests/snapshots/nanox/test_oeth_curve_swap_to_oeth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_to_oeth/00005.png differ diff --git a/tests/snapshots/nanox/test_oeth_curve_swap_to_oeth/00006.png b/tests/snapshots/nanox/test_oeth_curve_swap_to_oeth/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_curve_swap_to_oeth/00006.png differ diff --git a/tests/snapshots/nanox/test_oeth_unwrap/00000.png b/tests/snapshots/nanox/test_oeth_unwrap/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_unwrap/00000.png differ diff --git a/tests/snapshots/nanox/test_oeth_unwrap/00001.png b/tests/snapshots/nanox/test_oeth_unwrap/00001.png new file mode 100644 index 00000000..277305bb Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_unwrap/00001.png differ diff --git a/tests/snapshots/nanox/test_oeth_unwrap/00002.png b/tests/snapshots/nanox/test_oeth_unwrap/00002.png new file mode 100644 index 00000000..6c5ab466 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_unwrap/00002.png differ diff --git a/tests/snapshots/nanox/test_oeth_unwrap/00003.png b/tests/snapshots/nanox/test_oeth_unwrap/00003.png new file mode 100644 index 00000000..f3bbcde2 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_unwrap/00003.png differ diff --git a/tests/snapshots/nanox/test_oeth_unwrap/00004.png b/tests/snapshots/nanox/test_oeth_unwrap/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_unwrap/00004.png differ diff --git a/tests/snapshots/nanox/test_oeth_unwrap/00005.png b/tests/snapshots/nanox/test_oeth_unwrap/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_unwrap/00005.png differ diff --git a/tests/snapshots/nanox/test_oeth_unwrap/00006.png b/tests/snapshots/nanox/test_oeth_unwrap/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_unwrap/00006.png differ diff --git a/tests/snapshots/nanox/test_oeth_unwrap_different_beneficiary/00000.png b/tests/snapshots/nanox/test_oeth_unwrap_different_beneficiary/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_unwrap_different_beneficiary/00000.png differ diff --git a/tests/snapshots/nanox/test_oeth_unwrap_different_beneficiary/00001.png b/tests/snapshots/nanox/test_oeth_unwrap_different_beneficiary/00001.png new file mode 100644 index 00000000..277305bb Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_unwrap_different_beneficiary/00001.png differ diff --git a/tests/snapshots/nanox/test_oeth_unwrap_different_beneficiary/00002.png b/tests/snapshots/nanox/test_oeth_unwrap_different_beneficiary/00002.png new file mode 100644 index 00000000..6c5ab466 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_unwrap_different_beneficiary/00002.png differ diff --git a/tests/snapshots/nanox/test_oeth_unwrap_different_beneficiary/00003.png b/tests/snapshots/nanox/test_oeth_unwrap_different_beneficiary/00003.png new file mode 100644 index 00000000..3e97c405 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_unwrap_different_beneficiary/00003.png differ diff --git a/tests/snapshots/nanox/test_oeth_unwrap_different_beneficiary/00004.png b/tests/snapshots/nanox/test_oeth_unwrap_different_beneficiary/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_unwrap_different_beneficiary/00004.png differ diff --git a/tests/snapshots/nanox/test_oeth_unwrap_different_beneficiary/00005.png b/tests/snapshots/nanox/test_oeth_unwrap_different_beneficiary/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_unwrap_different_beneficiary/00005.png differ diff --git a/tests/snapshots/nanox/test_oeth_unwrap_different_beneficiary/00006.png b/tests/snapshots/nanox/test_oeth_unwrap_different_beneficiary/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_unwrap_different_beneficiary/00006.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_frxeth/00000.png b/tests/snapshots/nanox/test_oeth_vault_mint_frxeth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_frxeth/00000.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_frxeth/00001.png b/tests/snapshots/nanox/test_oeth_vault_mint_frxeth/00001.png new file mode 100644 index 00000000..59fad364 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_frxeth/00001.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_frxeth/00002.png b/tests/snapshots/nanox/test_oeth_vault_mint_frxeth/00002.png new file mode 100644 index 00000000..94162cea Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_frxeth/00002.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_frxeth/00003.png b/tests/snapshots/nanox/test_oeth_vault_mint_frxeth/00003.png new file mode 100644 index 00000000..75002047 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_frxeth/00003.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_frxeth/00004.png b/tests/snapshots/nanox/test_oeth_vault_mint_frxeth/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_frxeth/00004.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_frxeth/00005.png b/tests/snapshots/nanox/test_oeth_vault_mint_frxeth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_frxeth/00005.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_frxeth/00006.png b/tests/snapshots/nanox/test_oeth_vault_mint_frxeth/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_frxeth/00006.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_reth/00000.png b/tests/snapshots/nanox/test_oeth_vault_mint_reth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_reth/00000.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_reth/00001.png b/tests/snapshots/nanox/test_oeth_vault_mint_reth/00001.png new file mode 100644 index 00000000..59fad364 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_reth/00001.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_reth/00002.png b/tests/snapshots/nanox/test_oeth_vault_mint_reth/00002.png new file mode 100644 index 00000000..fb5322f1 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_reth/00002.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_reth/00003.png b/tests/snapshots/nanox/test_oeth_vault_mint_reth/00003.png new file mode 100644 index 00000000..75002047 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_reth/00003.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_reth/00004.png b/tests/snapshots/nanox/test_oeth_vault_mint_reth/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_reth/00004.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_reth/00005.png b/tests/snapshots/nanox/test_oeth_vault_mint_reth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_reth/00005.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_reth/00006.png b/tests/snapshots/nanox/test_oeth_vault_mint_reth/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_reth/00006.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_steth/00000.png b/tests/snapshots/nanox/test_oeth_vault_mint_steth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_steth/00000.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_steth/00001.png b/tests/snapshots/nanox/test_oeth_vault_mint_steth/00001.png new file mode 100644 index 00000000..59fad364 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_steth/00001.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_steth/00002.png b/tests/snapshots/nanox/test_oeth_vault_mint_steth/00002.png new file mode 100644 index 00000000..76fe1a8a Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_steth/00002.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_steth/00003.png b/tests/snapshots/nanox/test_oeth_vault_mint_steth/00003.png new file mode 100644 index 00000000..75002047 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_steth/00003.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_steth/00004.png b/tests/snapshots/nanox/test_oeth_vault_mint_steth/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_steth/00004.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_steth/00005.png b/tests/snapshots/nanox/test_oeth_vault_mint_steth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_steth/00005.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_steth/00006.png b/tests/snapshots/nanox/test_oeth_vault_mint_steth/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_steth/00006.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_weth/00000.png b/tests/snapshots/nanox/test_oeth_vault_mint_weth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_weth/00000.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_weth/00001.png b/tests/snapshots/nanox/test_oeth_vault_mint_weth/00001.png new file mode 100644 index 00000000..59fad364 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_weth/00001.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_weth/00002.png b/tests/snapshots/nanox/test_oeth_vault_mint_weth/00002.png new file mode 100644 index 00000000..e6ccae1f Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_weth/00002.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_weth/00003.png b/tests/snapshots/nanox/test_oeth_vault_mint_weth/00003.png new file mode 100644 index 00000000..75002047 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_weth/00003.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_weth/00004.png b/tests/snapshots/nanox/test_oeth_vault_mint_weth/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_weth/00004.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_weth/00005.png b/tests/snapshots/nanox/test_oeth_vault_mint_weth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_weth/00005.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_mint_weth/00006.png b/tests/snapshots/nanox/test_oeth_vault_mint_weth/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_mint_weth/00006.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_redeem/00000.png b/tests/snapshots/nanox/test_oeth_vault_redeem/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_redeem/00000.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_redeem/00001.png b/tests/snapshots/nanox/test_oeth_vault_redeem/00001.png new file mode 100644 index 00000000..ddceadad Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_redeem/00001.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_redeem/00002.png b/tests/snapshots/nanox/test_oeth_vault_redeem/00002.png new file mode 100644 index 00000000..7483d045 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_redeem/00002.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_redeem/00003.png b/tests/snapshots/nanox/test_oeth_vault_redeem/00003.png new file mode 100644 index 00000000..1ffbfe26 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_redeem/00003.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_redeem/00004.png b/tests/snapshots/nanox/test_oeth_vault_redeem/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_redeem/00004.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_redeem/00005.png b/tests/snapshots/nanox/test_oeth_vault_redeem/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_redeem/00005.png differ diff --git a/tests/snapshots/nanox/test_oeth_vault_redeem/00006.png b/tests/snapshots/nanox/test_oeth_vault_redeem/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_vault_redeem/00006.png differ diff --git a/tests/snapshots/nanox/test_oeth_wrap/00000.png b/tests/snapshots/nanox/test_oeth_wrap/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_wrap/00000.png differ diff --git a/tests/snapshots/nanox/test_oeth_wrap/00001.png b/tests/snapshots/nanox/test_oeth_wrap/00001.png new file mode 100644 index 00000000..297fb18b Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_wrap/00001.png differ diff --git a/tests/snapshots/nanox/test_oeth_wrap/00002.png b/tests/snapshots/nanox/test_oeth_wrap/00002.png new file mode 100644 index 00000000..26950568 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_wrap/00002.png differ diff --git a/tests/snapshots/nanox/test_oeth_wrap/00003.png b/tests/snapshots/nanox/test_oeth_wrap/00003.png new file mode 100644 index 00000000..f3bbcde2 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_wrap/00003.png differ diff --git a/tests/snapshots/nanox/test_oeth_wrap/00004.png b/tests/snapshots/nanox/test_oeth_wrap/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_wrap/00004.png differ diff --git a/tests/snapshots/nanox/test_oeth_wrap/00005.png b/tests/snapshots/nanox/test_oeth_wrap/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_wrap/00005.png differ diff --git a/tests/snapshots/nanox/test_oeth_wrap/00006.png b/tests/snapshots/nanox/test_oeth_wrap/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_wrap/00006.png differ diff --git a/tests/snapshots/nanox/test_oeth_wrap_different_beneficiary/00000.png b/tests/snapshots/nanox/test_oeth_wrap_different_beneficiary/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_wrap_different_beneficiary/00000.png differ diff --git a/tests/snapshots/nanox/test_oeth_wrap_different_beneficiary/00001.png b/tests/snapshots/nanox/test_oeth_wrap_different_beneficiary/00001.png new file mode 100644 index 00000000..297fb18b Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_wrap_different_beneficiary/00001.png differ diff --git a/tests/snapshots/nanox/test_oeth_wrap_different_beneficiary/00002.png b/tests/snapshots/nanox/test_oeth_wrap_different_beneficiary/00002.png new file mode 100644 index 00000000..26950568 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_wrap_different_beneficiary/00002.png differ diff --git a/tests/snapshots/nanox/test_oeth_wrap_different_beneficiary/00003.png b/tests/snapshots/nanox/test_oeth_wrap_different_beneficiary/00003.png new file mode 100644 index 00000000..3e97c405 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_wrap_different_beneficiary/00003.png differ diff --git a/tests/snapshots/nanox/test_oeth_wrap_different_beneficiary/00004.png b/tests/snapshots/nanox/test_oeth_wrap_different_beneficiary/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_wrap_different_beneficiary/00004.png differ diff --git a/tests/snapshots/nanox/test_oeth_wrap_different_beneficiary/00005.png b/tests/snapshots/nanox/test_oeth_wrap_different_beneficiary/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_wrap_different_beneficiary/00005.png differ diff --git a/tests/snapshots/nanox/test_oeth_wrap_different_beneficiary/00006.png b/tests/snapshots/nanox/test_oeth_wrap_different_beneficiary/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_wrap_different_beneficiary/00006.png differ diff --git a/tests/snapshots/nanox/test_oeth_zapper_deposit_eth/00000.png b/tests/snapshots/nanox/test_oeth_zapper_deposit_eth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_zapper_deposit_eth/00000.png differ diff --git a/tests/snapshots/nanox/test_oeth_zapper_deposit_eth/00001.png b/tests/snapshots/nanox/test_oeth_zapper_deposit_eth/00001.png new file mode 100644 index 00000000..59fad364 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_zapper_deposit_eth/00001.png differ diff --git a/tests/snapshots/nanox/test_oeth_zapper_deposit_eth/00002.png b/tests/snapshots/nanox/test_oeth_zapper_deposit_eth/00002.png new file mode 100644 index 00000000..20645af0 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_zapper_deposit_eth/00002.png differ diff --git a/tests/snapshots/nanox/test_oeth_zapper_deposit_eth/00003.png b/tests/snapshots/nanox/test_oeth_zapper_deposit_eth/00003.png new file mode 100644 index 00000000..75002047 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_zapper_deposit_eth/00003.png differ diff --git a/tests/snapshots/nanox/test_oeth_zapper_deposit_eth/00004.png b/tests/snapshots/nanox/test_oeth_zapper_deposit_eth/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_zapper_deposit_eth/00004.png differ diff --git a/tests/snapshots/nanox/test_oeth_zapper_deposit_eth/00005.png b/tests/snapshots/nanox/test_oeth_zapper_deposit_eth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_zapper_deposit_eth/00005.png differ diff --git a/tests/snapshots/nanox/test_oeth_zapper_deposit_eth/00006.png b/tests/snapshots/nanox/test_oeth_zapper_deposit_eth/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_zapper_deposit_eth/00006.png differ diff --git a/tests/snapshots/nanox/test_oeth_zapper_deposit_sfrxeth/00000.png b/tests/snapshots/nanox/test_oeth_zapper_deposit_sfrxeth/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_zapper_deposit_sfrxeth/00000.png differ diff --git a/tests/snapshots/nanox/test_oeth_zapper_deposit_sfrxeth/00001.png b/tests/snapshots/nanox/test_oeth_zapper_deposit_sfrxeth/00001.png new file mode 100644 index 00000000..59fad364 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_zapper_deposit_sfrxeth/00001.png differ diff --git a/tests/snapshots/nanox/test_oeth_zapper_deposit_sfrxeth/00002.png b/tests/snapshots/nanox/test_oeth_zapper_deposit_sfrxeth/00002.png new file mode 100644 index 00000000..8436d0be Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_zapper_deposit_sfrxeth/00002.png differ diff --git a/tests/snapshots/nanox/test_oeth_zapper_deposit_sfrxeth/00003.png b/tests/snapshots/nanox/test_oeth_zapper_deposit_sfrxeth/00003.png new file mode 100644 index 00000000..aa909ef1 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_zapper_deposit_sfrxeth/00003.png differ diff --git a/tests/snapshots/nanox/test_oeth_zapper_deposit_sfrxeth/00004.png b/tests/snapshots/nanox/test_oeth_zapper_deposit_sfrxeth/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_zapper_deposit_sfrxeth/00004.png differ diff --git a/tests/snapshots/nanox/test_oeth_zapper_deposit_sfrxeth/00005.png b/tests/snapshots/nanox/test_oeth_zapper_deposit_sfrxeth/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_zapper_deposit_sfrxeth/00005.png differ diff --git a/tests/snapshots/nanox/test_oeth_zapper_deposit_sfrxeth/00006.png b/tests/snapshots/nanox/test_oeth_zapper_deposit_sfrxeth/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_oeth_zapper_deposit_sfrxeth/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_from_dai/00000.png b/tests/snapshots/nanox/test_ousd_curve_swap_from_dai/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_from_dai/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_from_dai/00001.png b/tests/snapshots/nanox/test_ousd_curve_swap_from_dai/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_from_dai/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_from_dai/00002.png b/tests/snapshots/nanox/test_ousd_curve_swap_from_dai/00002.png new file mode 100644 index 00000000..cf2c9115 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_from_dai/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_from_dai/00003.png b/tests/snapshots/nanox/test_ousd_curve_swap_from_dai/00003.png new file mode 100644 index 00000000..21b5b3cc Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_from_dai/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_from_dai/00004.png b/tests/snapshots/nanox/test_ousd_curve_swap_from_dai/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_from_dai/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_from_dai/00005.png b/tests/snapshots/nanox/test_ousd_curve_swap_from_dai/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_from_dai/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_from_dai/00006.png b/tests/snapshots/nanox/test_ousd_curve_swap_from_dai/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_from_dai/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_from_usdc/00000.png b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdc/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdc/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_from_usdc/00001.png b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdc/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdc/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_from_usdc/00002.png b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdc/00002.png new file mode 100644 index 00000000..cfd41d49 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdc/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_from_usdc/00003.png b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdc/00003.png new file mode 100644 index 00000000..21b5b3cc Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdc/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_from_usdc/00004.png b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdc/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdc/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_from_usdc/00005.png b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdc/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdc/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_from_usdc/00006.png b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdc/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdc/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_from_usdt/00000.png b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdt/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdt/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_from_usdt/00001.png b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdt/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdt/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_from_usdt/00002.png b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdt/00002.png new file mode 100644 index 00000000..d3a57e6a Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdt/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_from_usdt/00003.png b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdt/00003.png new file mode 100644 index 00000000..21b5b3cc Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdt/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_from_usdt/00004.png b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdt/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdt/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_from_usdt/00005.png b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdt/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdt/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_from_usdt/00006.png b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdt/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_from_usdt/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_to_dai/00000.png b/tests/snapshots/nanox/test_ousd_curve_swap_to_dai/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_to_dai/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_to_dai/00001.png b/tests/snapshots/nanox/test_ousd_curve_swap_to_dai/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_to_dai/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_to_dai/00002.png b/tests/snapshots/nanox/test_ousd_curve_swap_to_dai/00002.png new file mode 100644 index 00000000..b6b7cf0e Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_to_dai/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_to_dai/00003.png b/tests/snapshots/nanox/test_ousd_curve_swap_to_dai/00003.png new file mode 100644 index 00000000..78101534 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_to_dai/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_to_dai/00004.png b/tests/snapshots/nanox/test_ousd_curve_swap_to_dai/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_to_dai/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_to_dai/00005.png b/tests/snapshots/nanox/test_ousd_curve_swap_to_dai/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_to_dai/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_to_dai/00006.png b/tests/snapshots/nanox/test_ousd_curve_swap_to_dai/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_to_dai/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_to_usdc/00000.png b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdc/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdc/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_to_usdc/00001.png b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdc/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdc/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_to_usdc/00002.png b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdc/00002.png new file mode 100644 index 00000000..b6b7cf0e Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdc/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_to_usdc/00003.png b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdc/00003.png new file mode 100644 index 00000000..4ac8ceb2 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdc/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_to_usdc/00004.png b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdc/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdc/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_to_usdc/00005.png b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdc/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdc/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_to_usdc/00006.png b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdc/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdc/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_to_usdt/00000.png b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdt/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdt/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_to_usdt/00001.png b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdt/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdt/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_to_usdt/00002.png b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdt/00002.png new file mode 100644 index 00000000..b6b7cf0e Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdt/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_to_usdt/00003.png b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdt/00003.png new file mode 100644 index 00000000..250c5aec Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdt/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_to_usdt/00004.png b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdt/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdt/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_to_usdt/00005.png b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdt/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdt/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_curve_swap_to_usdt/00006.png b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdt/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_curve_swap_to_usdt/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_to_dai/00000.png b/tests/snapshots/nanox/test_ousd_flipper_flip_to_dai/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_to_dai/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_to_dai/00001.png b/tests/snapshots/nanox/test_ousd_flipper_flip_to_dai/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_to_dai/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_to_dai/00002.png b/tests/snapshots/nanox/test_ousd_flipper_flip_to_dai/00002.png new file mode 100644 index 00000000..b6b7cf0e Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_to_dai/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_to_dai/00003.png b/tests/snapshots/nanox/test_ousd_flipper_flip_to_dai/00003.png new file mode 100644 index 00000000..659a2088 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_to_dai/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_to_dai/00004.png b/tests/snapshots/nanox/test_ousd_flipper_flip_to_dai/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_to_dai/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_to_dai/00005.png b/tests/snapshots/nanox/test_ousd_flipper_flip_to_dai/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_to_dai/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_to_dai/00006.png b/tests/snapshots/nanox/test_ousd_flipper_flip_to_dai/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_to_dai/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdc/00000.png b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdc/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdc/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdc/00001.png b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdc/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdc/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdc/00002.png b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdc/00002.png new file mode 100644 index 00000000..b6b7cf0e Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdc/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdc/00003.png b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdc/00003.png new file mode 100644 index 00000000..27dabd52 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdc/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdc/00004.png b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdc/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdc/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdc/00005.png b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdc/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdc/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdc/00006.png b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdc/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdc/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdt/00000.png b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdt/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdt/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdt/00001.png b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdt/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdt/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdt/00002.png b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdt/00002.png new file mode 100644 index 00000000..b6b7cf0e Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdt/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdt/00003.png b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdt/00003.png new file mode 100644 index 00000000..8633a331 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdt/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdt/00004.png b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdt/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdt/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdt/00005.png b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdt/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdt/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdt/00006.png b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdt/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_to_usdt/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_with_dai/00000.png b/tests/snapshots/nanox/test_ousd_flipper_flip_with_dai/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_with_dai/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_with_dai/00001.png b/tests/snapshots/nanox/test_ousd_flipper_flip_with_dai/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_with_dai/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_with_dai/00002.png b/tests/snapshots/nanox/test_ousd_flipper_flip_with_dai/00002.png new file mode 100644 index 00000000..cf2c9115 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_with_dai/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_with_dai/00003.png b/tests/snapshots/nanox/test_ousd_flipper_flip_with_dai/00003.png new file mode 100644 index 00000000..7b52ffe2 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_with_dai/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_with_dai/00004.png b/tests/snapshots/nanox/test_ousd_flipper_flip_with_dai/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_with_dai/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_with_dai/00005.png b/tests/snapshots/nanox/test_ousd_flipper_flip_with_dai/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_with_dai/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_with_dai/00006.png b/tests/snapshots/nanox/test_ousd_flipper_flip_with_dai/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_with_dai/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdc/00000.png b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdc/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdc/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdc/00001.png b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdc/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdc/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdc/00002.png b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdc/00002.png new file mode 100644 index 00000000..997aff51 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdc/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdc/00003.png b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdc/00003.png new file mode 100644 index 00000000..7b52ffe2 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdc/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdc/00004.png b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdc/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdc/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdc/00005.png b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdc/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdc/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdc/00006.png b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdc/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdc/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdt/00000.png b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdt/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdt/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdt/00001.png b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdt/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdt/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdt/00002.png b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdt/00002.png new file mode 100644 index 00000000..6e537c5c Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdt/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdt/00003.png b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdt/00003.png new file mode 100644 index 00000000..7b52ffe2 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdt/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdt/00004.png b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdt/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdt/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdt/00005.png b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdt/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdt/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdt/00006.png b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdt/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_flipper_flip_with_usdt/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_from_dai/00000.png b/tests/snapshots/nanox/test_ousd_univ3_swap_from_dai/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_from_dai/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_from_dai/00001.png b/tests/snapshots/nanox/test_ousd_univ3_swap_from_dai/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_from_dai/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_from_dai/00002.png b/tests/snapshots/nanox/test_ousd_univ3_swap_from_dai/00002.png new file mode 100644 index 00000000..96c05715 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_from_dai/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_from_dai/00003.png b/tests/snapshots/nanox/test_ousd_univ3_swap_from_dai/00003.png new file mode 100644 index 00000000..7b52ffe2 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_from_dai/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_from_dai/00004.png b/tests/snapshots/nanox/test_ousd_univ3_swap_from_dai/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_from_dai/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_from_dai/00005.png b/tests/snapshots/nanox/test_ousd_univ3_swap_from_dai/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_from_dai/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_from_dai/00006.png b/tests/snapshots/nanox/test_ousd_univ3_swap_from_dai/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_from_dai/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdc/00000.png b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdc/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdc/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdc/00001.png b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdc/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdc/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdc/00002.png b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdc/00002.png new file mode 100644 index 00000000..007dd0bd Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdc/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdc/00003.png b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdc/00003.png new file mode 100644 index 00000000..7b52ffe2 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdc/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdc/00004.png b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdc/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdc/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdc/00005.png b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdc/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdc/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdc/00006.png b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdc/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdc/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdt/00000.png b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdt/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdt/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdt/00001.png b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdt/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdt/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdt/00002.png b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdt/00002.png new file mode 100644 index 00000000..fa6a3ea7 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdt/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdt/00003.png b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdt/00003.png new file mode 100644 index 00000000..7b52ffe2 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdt/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdt/00004.png b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdt/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdt/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdt/00005.png b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdt/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdt/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdt/00006.png b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdt/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_from_usdt/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_to_dai/00000.png b/tests/snapshots/nanox/test_ousd_univ3_swap_to_dai/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_to_dai/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_to_dai/00001.png b/tests/snapshots/nanox/test_ousd_univ3_swap_to_dai/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_to_dai/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_to_dai/00002.png b/tests/snapshots/nanox/test_ousd_univ3_swap_to_dai/00002.png new file mode 100644 index 00000000..b6b7cf0e Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_to_dai/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_to_dai/00003.png b/tests/snapshots/nanox/test_ousd_univ3_swap_to_dai/00003.png new file mode 100644 index 00000000..e149bd74 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_to_dai/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_to_dai/00004.png b/tests/snapshots/nanox/test_ousd_univ3_swap_to_dai/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_to_dai/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_to_dai/00005.png b/tests/snapshots/nanox/test_ousd_univ3_swap_to_dai/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_to_dai/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_to_dai/00006.png b/tests/snapshots/nanox/test_ousd_univ3_swap_to_dai/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_to_dai/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdc/00000.png b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdc/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdc/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdc/00001.png b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdc/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdc/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdc/00002.png b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdc/00002.png new file mode 100644 index 00000000..b6b7cf0e Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdc/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdc/00003.png b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdc/00003.png new file mode 100644 index 00000000..976e7b39 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdc/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdc/00004.png b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdc/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdc/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdc/00005.png b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdc/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdc/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdc/00006.png b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdc/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdc/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdt/00000.png b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdt/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdt/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdt/00001.png b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdt/00001.png new file mode 100644 index 00000000..39492eaf Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdt/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdt/00002.png b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdt/00002.png new file mode 100644 index 00000000..b6b7cf0e Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdt/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdt/00003.png b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdt/00003.png new file mode 100644 index 00000000..e64415f4 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdt/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdt/00004.png b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdt/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdt/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdt/00005.png b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdt/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdt/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdt/00006.png b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdt/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_univ3_swap_to_usdt/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_unwrap/00000.png b/tests/snapshots/nanox/test_ousd_unwrap/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_unwrap/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_unwrap/00001.png b/tests/snapshots/nanox/test_ousd_unwrap/00001.png new file mode 100644 index 00000000..277305bb Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_unwrap/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_unwrap/00002.png b/tests/snapshots/nanox/test_ousd_unwrap/00002.png new file mode 100644 index 00000000..827af867 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_unwrap/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_unwrap/00003.png b/tests/snapshots/nanox/test_ousd_unwrap/00003.png new file mode 100644 index 00000000..f3bbcde2 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_unwrap/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_unwrap/00004.png b/tests/snapshots/nanox/test_ousd_unwrap/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_unwrap/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_unwrap/00005.png b/tests/snapshots/nanox/test_ousd_unwrap/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_unwrap/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_unwrap/00006.png b/tests/snapshots/nanox/test_ousd_unwrap/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_unwrap/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_unwrap_different_beneficiary/00000.png b/tests/snapshots/nanox/test_ousd_unwrap_different_beneficiary/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_unwrap_different_beneficiary/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_unwrap_different_beneficiary/00001.png b/tests/snapshots/nanox/test_ousd_unwrap_different_beneficiary/00001.png new file mode 100644 index 00000000..277305bb Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_unwrap_different_beneficiary/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_unwrap_different_beneficiary/00002.png b/tests/snapshots/nanox/test_ousd_unwrap_different_beneficiary/00002.png new file mode 100644 index 00000000..827af867 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_unwrap_different_beneficiary/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_unwrap_different_beneficiary/00003.png b/tests/snapshots/nanox/test_ousd_unwrap_different_beneficiary/00003.png new file mode 100644 index 00000000..3e97c405 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_unwrap_different_beneficiary/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_unwrap_different_beneficiary/00004.png b/tests/snapshots/nanox/test_ousd_unwrap_different_beneficiary/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_unwrap_different_beneficiary/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_unwrap_different_beneficiary/00005.png b/tests/snapshots/nanox/test_ousd_unwrap_different_beneficiary/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_unwrap_different_beneficiary/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_unwrap_different_beneficiary/00006.png b/tests/snapshots/nanox/test_ousd_unwrap_different_beneficiary/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_unwrap_different_beneficiary/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_mint_dai/00000.png b/tests/snapshots/nanox/test_ousd_vault_mint_dai/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_mint_dai/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_mint_dai/00001.png b/tests/snapshots/nanox/test_ousd_vault_mint_dai/00001.png new file mode 100644 index 00000000..59fad364 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_mint_dai/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_mint_dai/00002.png b/tests/snapshots/nanox/test_ousd_vault_mint_dai/00002.png new file mode 100644 index 00000000..789004d5 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_mint_dai/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_mint_dai/00003.png b/tests/snapshots/nanox/test_ousd_vault_mint_dai/00003.png new file mode 100644 index 00000000..06a20cb6 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_mint_dai/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_mint_dai/00004.png b/tests/snapshots/nanox/test_ousd_vault_mint_dai/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_mint_dai/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_mint_dai/00005.png b/tests/snapshots/nanox/test_ousd_vault_mint_dai/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_mint_dai/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_mint_dai/00006.png b/tests/snapshots/nanox/test_ousd_vault_mint_dai/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_mint_dai/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_mint_usdc/00000.png b/tests/snapshots/nanox/test_ousd_vault_mint_usdc/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_mint_usdc/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_mint_usdc/00001.png b/tests/snapshots/nanox/test_ousd_vault_mint_usdc/00001.png new file mode 100644 index 00000000..59fad364 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_mint_usdc/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_mint_usdc/00002.png b/tests/snapshots/nanox/test_ousd_vault_mint_usdc/00002.png new file mode 100644 index 00000000..cf1728ca Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_mint_usdc/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_mint_usdc/00003.png b/tests/snapshots/nanox/test_ousd_vault_mint_usdc/00003.png new file mode 100644 index 00000000..06a20cb6 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_mint_usdc/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_mint_usdc/00004.png b/tests/snapshots/nanox/test_ousd_vault_mint_usdc/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_mint_usdc/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_mint_usdc/00005.png b/tests/snapshots/nanox/test_ousd_vault_mint_usdc/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_mint_usdc/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_mint_usdc/00006.png b/tests/snapshots/nanox/test_ousd_vault_mint_usdc/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_mint_usdc/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_mint_usdt/00000.png b/tests/snapshots/nanox/test_ousd_vault_mint_usdt/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_mint_usdt/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_mint_usdt/00001.png b/tests/snapshots/nanox/test_ousd_vault_mint_usdt/00001.png new file mode 100644 index 00000000..59fad364 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_mint_usdt/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_mint_usdt/00002.png b/tests/snapshots/nanox/test_ousd_vault_mint_usdt/00002.png new file mode 100644 index 00000000..67d5afb6 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_mint_usdt/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_mint_usdt/00003.png b/tests/snapshots/nanox/test_ousd_vault_mint_usdt/00003.png new file mode 100644 index 00000000..06a20cb6 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_mint_usdt/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_mint_usdt/00004.png b/tests/snapshots/nanox/test_ousd_vault_mint_usdt/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_mint_usdt/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_mint_usdt/00005.png b/tests/snapshots/nanox/test_ousd_vault_mint_usdt/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_mint_usdt/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_mint_usdt/00006.png b/tests/snapshots/nanox/test_ousd_vault_mint_usdt/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_mint_usdt/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_redeem/00000.png b/tests/snapshots/nanox/test_ousd_vault_redeem/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_redeem/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_redeem/00001.png b/tests/snapshots/nanox/test_ousd_vault_redeem/00001.png new file mode 100644 index 00000000..ddceadad Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_redeem/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_redeem/00002.png b/tests/snapshots/nanox/test_ousd_vault_redeem/00002.png new file mode 100644 index 00000000..6119e28e Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_redeem/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_redeem/00003.png b/tests/snapshots/nanox/test_ousd_vault_redeem/00003.png new file mode 100644 index 00000000..d9eddf39 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_redeem/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_redeem/00004.png b/tests/snapshots/nanox/test_ousd_vault_redeem/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_redeem/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_redeem/00005.png b/tests/snapshots/nanox/test_ousd_vault_redeem/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_redeem/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_vault_redeem/00006.png b/tests/snapshots/nanox/test_ousd_vault_redeem/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_vault_redeem/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_wrap/00000.png b/tests/snapshots/nanox/test_ousd_wrap/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_wrap/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_wrap/00001.png b/tests/snapshots/nanox/test_ousd_wrap/00001.png new file mode 100644 index 00000000..297fb18b Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_wrap/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_wrap/00002.png b/tests/snapshots/nanox/test_ousd_wrap/00002.png new file mode 100644 index 00000000..2e0a144c Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_wrap/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_wrap/00003.png b/tests/snapshots/nanox/test_ousd_wrap/00003.png new file mode 100644 index 00000000..f3bbcde2 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_wrap/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_wrap/00004.png b/tests/snapshots/nanox/test_ousd_wrap/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_wrap/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_wrap/00005.png b/tests/snapshots/nanox/test_ousd_wrap/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_wrap/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_wrap/00006.png b/tests/snapshots/nanox/test_ousd_wrap/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_wrap/00006.png differ diff --git a/tests/snapshots/nanox/test_ousd_wrap_different_beneficiary/00000.png b/tests/snapshots/nanox/test_ousd_wrap_different_beneficiary/00000.png new file mode 100644 index 00000000..487ea10f Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_wrap_different_beneficiary/00000.png differ diff --git a/tests/snapshots/nanox/test_ousd_wrap_different_beneficiary/00001.png b/tests/snapshots/nanox/test_ousd_wrap_different_beneficiary/00001.png new file mode 100644 index 00000000..297fb18b Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_wrap_different_beneficiary/00001.png differ diff --git a/tests/snapshots/nanox/test_ousd_wrap_different_beneficiary/00002.png b/tests/snapshots/nanox/test_ousd_wrap_different_beneficiary/00002.png new file mode 100644 index 00000000..2e0a144c Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_wrap_different_beneficiary/00002.png differ diff --git a/tests/snapshots/nanox/test_ousd_wrap_different_beneficiary/00003.png b/tests/snapshots/nanox/test_ousd_wrap_different_beneficiary/00003.png new file mode 100644 index 00000000..3e97c405 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_wrap_different_beneficiary/00003.png differ diff --git a/tests/snapshots/nanox/test_ousd_wrap_different_beneficiary/00004.png b/tests/snapshots/nanox/test_ousd_wrap_different_beneficiary/00004.png new file mode 100644 index 00000000..9cdfdf9d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_wrap_different_beneficiary/00004.png differ diff --git a/tests/snapshots/nanox/test_ousd_wrap_different_beneficiary/00005.png b/tests/snapshots/nanox/test_ousd_wrap_different_beneficiary/00005.png new file mode 100644 index 00000000..570ce28d Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_wrap_different_beneficiary/00005.png differ diff --git a/tests/snapshots/nanox/test_ousd_wrap_different_beneficiary/00006.png b/tests/snapshots/nanox/test_ousd_wrap_different_beneficiary/00006.png new file mode 100644 index 00000000..65788722 Binary files /dev/null and b/tests/snapshots/nanox/test_ousd_wrap_different_beneficiary/00006.png differ diff --git a/tests/snapshots/nanox/test_swap_exact_eth_for_token/00001.png b/tests/snapshots/nanox/test_swap_exact_eth_for_token/00001.png deleted file mode 100644 index 8a2a784f..00000000 Binary files a/tests/snapshots/nanox/test_swap_exact_eth_for_token/00001.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_swap_exact_eth_for_token/00002.png b/tests/snapshots/nanox/test_swap_exact_eth_for_token/00002.png deleted file mode 100644 index 65bb3b17..00000000 Binary files a/tests/snapshots/nanox/test_swap_exact_eth_for_token/00002.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_swap_exact_eth_for_token/00003.png b/tests/snapshots/nanox/test_swap_exact_eth_for_token/00003.png deleted file mode 100644 index 18dac8ed..00000000 Binary files a/tests/snapshots/nanox/test_swap_exact_eth_for_token/00003.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_swap_exact_eth_for_token/00004.png b/tests/snapshots/nanox/test_swap_exact_eth_for_token/00004.png deleted file mode 100644 index d858b6f7..00000000 Binary files a/tests/snapshots/nanox/test_swap_exact_eth_for_token/00004.png and /dev/null differ diff --git a/tests/snapshots/nanox/test_swap_exact_eth_for_token/00005.png b/tests/snapshots/nanox/test_swap_exact_eth_for_token/00005.png deleted file mode 100644 index 3a1c8871..00000000 Binary files a/tests/snapshots/nanox/test_swap_exact_eth_for_token/00005.png and /dev/null differ diff --git a/tests/snapshots/stax/test_swap_exact_eth_for_token/00000.png b/tests/snapshots/stax/test_swap_exact_eth_for_token/00000.png deleted file mode 100644 index 38f491b8..00000000 Binary files a/tests/snapshots/stax/test_swap_exact_eth_for_token/00000.png and /dev/null differ diff --git a/tests/snapshots/stax/test_swap_exact_eth_for_token/00001.png b/tests/snapshots/stax/test_swap_exact_eth_for_token/00001.png deleted file mode 100644 index 8cf15eb3..00000000 Binary files a/tests/snapshots/stax/test_swap_exact_eth_for_token/00001.png and /dev/null differ diff --git a/tests/snapshots/stax/test_swap_exact_eth_for_token/00002.png b/tests/snapshots/stax/test_swap_exact_eth_for_token/00002.png deleted file mode 100644 index b7c3410e..00000000 Binary files a/tests/snapshots/stax/test_swap_exact_eth_for_token/00002.png and /dev/null differ diff --git a/tests/snapshots/stax/test_swap_exact_eth_for_token/00003.png b/tests/snapshots/stax/test_swap_exact_eth_for_token/00003.png deleted file mode 100644 index f4ec144e..00000000 Binary files a/tests/snapshots/stax/test_swap_exact_eth_for_token/00003.png and /dev/null differ diff --git a/tests/snapshots/stax/test_swap_exact_eth_for_token/00004.png b/tests/snapshots/stax/test_swap_exact_eth_for_token/00004.png deleted file mode 100644 index cd2f5275..00000000 Binary files a/tests/snapshots/stax/test_swap_exact_eth_for_token/00004.png and /dev/null differ diff --git a/tests/snapshots/stax/test_swap_exact_eth_for_token/00005.png b/tests/snapshots/stax/test_swap_exact_eth_for_token/00005.png deleted file mode 100644 index b1ff1b3a..00000000 Binary files a/tests/snapshots/stax/test_swap_exact_eth_for_token/00005.png and /dev/null differ diff --git a/tests/test_swap.py b/tests/test_swap.py deleted file mode 100644 index 059d2e89..00000000 --- a/tests/test_swap.py +++ /dev/null @@ -1,75 +0,0 @@ -from pathlib import Path -import json -import os - -import datetime - -from web3 import Web3 -from eth_typing import ChainId - -from ledger_app_clients.ethereum.client import EthAppClient, StatusWord -from ledger_app_clients.ethereum.utils import get_selector_from_data -from ragger.navigator import NavInsID - -from .utils import get_appname_from_makefile - - -ROOT_SCREENSHOT_PATH = Path(__file__).parent -ABIS_FOLDER = "%s/abis" % (os.path.dirname(__file__)) - -PLUGIN_NAME = get_appname_from_makefile() - -with open("%s/0x000102030405060708090a0b0c0d0e0f10111213.abi.json" % (ABIS_FOLDER)) as file: - contract = Web3().eth.contract( - abi=json.load(file), - # Get address from filename - address=bytes.fromhex(os.path.basename(file.name).split(".")[0].split("x")[-1]) - ) - - -# EDIT THIS: build your own test -def test_swap_exact_eth_for_token(backend, firmware, navigator, test_name): - client = EthAppClient(backend) - - data = contract.encodeABI("swapExactETHForTokens", [ - Web3.to_wei(28.5, "ether"), - [ - bytes.fromhex("C02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"), - bytes.fromhex("6B3595068778DD592e39A122f4f5a5cF09C90fE2") - ], - bytes.fromhex("d8dA6BF26964aF9D7eEd9e03E53415D37aA96045"), - int(datetime.datetime(2023, 12, 25, 0, 0).timestamp()) - ]) - - # first setup the external plugin - with client.set_external_plugin(PLUGIN_NAME, - contract.address, - # Extract function selector from the encoded data - get_selector_from_data(data)): - pass - - # send the transaction - with client.sign("m/44'/60'/1'/0/0", { - "nonce": 20, - "maxFeePerGas": Web3.to_wei(145, "gwei"), - "maxPriorityFeePerGas": Web3.to_wei(1.5, "gwei"), - "gas": 173290, - "to": contract.address, - "value": Web3.to_wei(0.1, "ether"), - "chainId": ChainId.ETH, - "data": data - }): - # Validate the on-screen request by performing the navigation appropriate for this device - if firmware.device.startswith("nano"): - navigator.navigate_until_text_and_compare(NavInsID.RIGHT_CLICK, - [NavInsID.BOTH_CLICK], - "Accept", - ROOT_SCREENSHOT_PATH, - test_name) - else: - navigator.navigate_until_text_and_compare(NavInsID.USE_CASE_REVIEW_TAP, - [NavInsID.USE_CASE_REVIEW_CONFIRM, - NavInsID.USE_CASE_STATUS_DISMISS], - "Hold to sign", - ROOT_SCREENSHOT_PATH, - test_name) diff --git a/tests/utils.py b/tests/utils.py index de202329..b8a90577 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -1,5 +1,14 @@ import os import re +import json +from pathlib import Path + +from web3 import Web3 +from eth_typing import ChainId + +from ledger_app_clients.ethereum.client import EthAppClient +from ledger_app_clients.ethereum.utils import get_selector_from_data +from ragger.navigator import NavInsID from pathlib import Path from typing import Optional @@ -12,6 +21,9 @@ default_strip_parameter = " \t\n\r\x0b\x0c" +ROOT_SCREENSHOT_PATH = Path(__file__).parent +ABIS_FOLDER = "%s/abis" % (os.path.dirname(__file__)) + def get_appname_from_makefile() -> str: ''' Parse the app Makefile to automatically get the APPNAME value @@ -27,3 +39,51 @@ def get_appname_from_makefile() -> str: raise AssertionError("Unable to find APPNAME in the Makefile") return APPNAME + +PLUGIN_NAME = get_appname_from_makefile() + +def load_contract(address, abi_file): + with open("%s/%s.abi.json" % (ABIS_FOLDER, abi_file)) as file: + return Web3().eth.contract( + abi=json.load(file), + # Get address from filename + address=bytes.fromhex( + address + ) + ) + +def run_test(contract, data, backend, firmware, navigator, test_name, value=0, gas=300000): + client = EthAppClient(backend) + + # first setup the external plugin + with client.set_external_plugin(PLUGIN_NAME, + contract.address, + # Extract function selector from the encoded data + get_selector_from_data(data)): + pass + + # send the transaction + with client.sign("m/44'/60'/1'/0/0", { + "nonce": 20, + "maxFeePerGas": Web3.to_wei(145, "gwei"), + "maxPriorityFeePerGas": Web3.to_wei(1.5, "gwei"), + "gas": gas, + "to": contract.address, + "value": value, + "chainId": ChainId.ETH, + "data": data + }): + # Validate the on-screen request by performing the navigation appropriate for this device + if firmware.device.startswith("nano"): + navigator.navigate_until_text_and_compare(NavInsID.RIGHT_CLICK, + [NavInsID.BOTH_CLICK], + "Accept", + ROOT_SCREENSHOT_PATH, + test_name) + else: + navigator.navigate_until_text_and_compare(NavInsID.USE_CASE_REVIEW_TAP, + [NavInsID.USE_CASE_REVIEW_CONFIRM, + NavInsID.USE_CASE_STATUS_DISMISS], + "Hold to sign", + ROOT_SCREENSHOT_PATH, + test_name) \ No newline at end of file